Som vi nämnt tidigare har alla noder förvalda värden (eng. default values) för sina olika fält. Detta är alltså värden som enligt VRML-specifikationen ska fungera som fördefinierade värden hos VRML-bläddraren i de fall då ett fält inte specificeras i VRML-filen. ("In default of" betyder på svenska "i brist på" och en alternativ översättning av "default value" till svenska skulle kunna vara "bristvärde". Översättningen "normalvärde" förekommer också.)
Låt oss titta lite närmare på syntaxen för ett par av de noder vi hittills använt. För Box { } -noden ser detta ut som
Box {Detta betyder att om inget fält med tillhörande värde i Box { } -noden anges kommer VRML-bläddraren att tillgodogöra sig det förvalda värdet (2 2 2) och göra en kub med sidan 2. Texten i normalstil som följer fältvärdet ovan anger vilken typ av fältvärde det är. SFVec3f betyder exempelvis att fältvärdet är en tredimensionell flyttalsvektor, där SF (single-value) anger att det rör sig om ett enda värde (till skillnad mot MF för multiple-value).size 2 2 2 field SFVec3f}
Det finns två slags fält, field och exposedField. Den förra definierar initialvärdet för en nods tillstånd och kan inte ändras utifrån, medan den senare kan ändras utifrån t ex genom koppling med en annan nod.
När vi beskriver de enskilda nodernas exakta syntax kommer vi i fortsättningen alltid att ha med information om fält- och fältvärdestyp. Så är de även beskrivna i VRML-specifikationen.
På motsvarande sätt betyder det att om man använder Material { } -noden utan att ange några fält och skriver endast
Material { }tolkar VRML-bläddraren detta som
Material {Material { } -noden har alltså sex olika fält med normalvärden enligt ovan. Dessa fältvärden kommer att göra ett objekt ljusgrått ( diffuseColor 0.8 0.8 0.8 ) och icke genomskinligt ( transparency 0 ). Material { } -nodens olika fält för att ljussätta, färglägga och kontrollera reflektioner går vi inte närmare in på just nu. Ovan i normal stil finns också angivet vilken typ av fältvärde det rör sig om.ambientIntensity 0.2 exposedField SFFloat}
diffuseColor 0.8 0.8 0.8 exposedField SFColor
emissiveColor 0 0 0 exposedField SFColor
shininess 0.2 exposedField SFFloat
specularColor 0 0 0 exposedField SFColor
transparency 0 exposedField SFFloat
Låt oss nu välja Transform { } -noden för ytterligare en närstudie av en nods syntax. Denna ser ut enligt:
Transform {Fältvärdet hos children är en lista bestående av valfritt antal noder. Typiska noder i denna lista är Shape { } -noder, Group { } -noder och andra Transform { } -noder. De nästföljande fälten används för placering och skalning av objekt. Fälten bboxCenter och bboxSize diskuteras i avsnitten om optimering. addChildren och removeChildren antyder att man i efterhand i children -fältet kan lägga till eller plocka bort enstaka noder. Mer om detta längre fram.children [ ] exposedField MFNode}
center 0 0 0 exposedField SFVec3f
translation 0 0 0 exposedField SFVec3f
rotation 0 0 1 0 exposedField SFRotation
scale 1 1 1 exposedField SFVec3f
scaleOrientation 0 0 1 0 exposedField SFRotation
bboxCenter 0 0 0 field SFVec3f
bboxSize -1 -1 -1 field SFVec3f
addChildren eventIn MFNode
removeChildren eventIn MFNode
De två vanligaste sätten att gruppera noder är med Group { } -noden och med Transform { } -noden. Med den senare kan man dessutom både skala om och välja rumsplacering. Anchor { } -, Billboard { } - och Collision { } -noden kan också användas för att gruppera objekt.
Ett exempel med Group { } -noden för att bygga en pall:
I Exempel 3 är pallens fem olika delar (sittytan och de fyra benen) grupperade i en Group { } -nod under namnet "Pall". Först bygger vi sittytan. Här definierar vi pallens material under namnet "Pallmaterial" för att sedan använda en instans av "Pallmaterial" när vi bygger pallbenet. Detta kallar vi "Ben" och återanvänder för att placera ut ytterligare tre gånger med hjälp av Transform { } -noden.Exempel 3. En blå palls olika beståndsdelar grupperade i en enda nod.
#VRML V2.0 utf8
DEF Pall Group { #En pallchildren [}Shape { #Sittyta]appearance DEF PallMaterial Appearance {}material Material {}emissiveColor 0 0 1}
diffuseColor 0 0 1
geometry Cylinder {radius 0.3}
height 0.04
Transform { #Placering av Bentranslation 0.26 -0.27 0}
children DEF Ben Shape { #Pallbenappearance USE PallMaterial}
geometry Cylinder{radius 0.02}
height 0.5
top FALSE
Transform {translation -0.26 -0.27 0}
children USE Ben
Transform {translation 0 -0.27 0.26}
children USE Ben
Transform {translation 0 -0.27 -0.26}
children USE Ben