Ponowne wyświetlanie zdefiniowanych już obiektów
(komendy DEF/USE) 

Komendy DEF i USE służą, mówiąc w dużym skrócie, do jednorazowego definiowania obiektów (DEF), co daje możliwość wielokrotnego ich przywoływania (USE). Komend DEF/USE używa się generalnie w dwóch przypadkach:

  1. Jest to łatwy sposób na powielanie zdefiniowanych wcześniej obiektów. Prowadzi to do zmniejszenia wielkości pliku VRML. Można ponownie wyświetlać w innym miejscu sceny nawet bardzo złożone konstrukcje.
  2. DEFiniowanie obiektów jest niezbędne przy tworzeniu wszelkiego rodzaju animacji.
Aby wytłumaczyć zasadę działania komend DEF/USE, cofniemy się do mniej złożonych przykładów niż te z jakimi mieliśmy do czynienia ostatnio. Pamiętacie przykład Appear.wrl? Wróćmy więc do niego i spróbujmy powielić nasz sześcian dwukrotnie w innych lokalizacjach:

#VRML V2.0 utf8 

Transform { 
    rotation    1 0 0 0.5 
    translation 0 2 -10 
    children [ 
            DEF Szescian Shape {      # DEFiniujemy nasz 
                                      # Szescian
                            appearance Appearance {
                            material   Material {
                                         emissiveColor 1 1 0
                                         transparency  0
                                         specularColor 0 1 0
                                       }
                            }
                            geometry Box { 
                                     size 4 4 4 
                            } 
                        } 
            ] 

Transform { 
    rotation    0 1 0 0.5 
    translation 10 0 -10 
    children [ USE Szescian ]  # Przywolujemy nasz Szescian
                               # w innym miejscu

Transform { 
    rotation    0 0 1 0.5 
    translation -10 4 -10
    children [ USE Szescian ]  # Przywolujemy nasz Szescian 
                               # po raz drugi


 

W pierwszym węźle Transform wszystko pozostało bez zmian z wyjątkiem zmiany kolorów i dopisania przed węzłem Shape komendy DEF i nazwy definicji, której dokonujemy (niezbędne!!!). Następnie wprowadzamy dwa następne węzły Transform, w których za pomocą komendy USE odwołujemy się do zDEFiniowanego sześcianu. Prawda, że proste? Spójrzmy jak to wygląda - DefUse.wrl.