[Index] [Vad är VRML?] [Syntax] [Optimering] [Bläddrare] [Världsmodellerare] [Historik]

Syntaxen i VRML

Syntaxen hos språket VRML är tämligen rak och lätt att förstå för den som har en del programmeringsvana. Språket bygger på att man ger VRML-bläddraren knippen av sceninformation som den sedan tolkar och använder för att bygga VRML-världen. Vi ska presentera några av de mest användbara egenskaperna hos språket genom att varva exempel med närmare studier av syntaxen.

Introducerande exempel

Ett enkelt exempel på en VRML-fil följer i Exempel 1:
 
#VRML V2.0 utf8 
# En rödmålad låda med bredden 2, höjden 1 och djupet 1 
Shape { 
appearance Appearance { 
material Material { 
diffuseColor 1 0 0
}
} 
geometry Box { 
size 2 1 1
}
} 
Exempel 1. En enkel VRML-fil som ritar upp en röd låda i mitten av rummet.
Den första raden i filen (Exempel 1) är filhuvudet. Denna rad måste alltid finnas med och se ut precis som i exemplet. Den talar om för bläddraren att detta är en VRML-fil, att den följer version 2.0 av VRML-specifikationen och att det är en fil som utnyttjar den internationella UTF-8 typsättningen (där ASCII-koden utgör en delmängd).

Den andra raden som börjar med "#" är en kommentar och det som följer "#"-tecknet läses ej av bläddraren. Kommentarer slutar vid en radbrytning.

Shape { }, Appearance { }, Material { } och Box { } är alla exempel på noder. Det finns 54 olika noder definierade i VRML-specifikationen. Noderna har olika egenskaper och funktioner.

appearance, geometry, material, size och diffuseColor är exempel på fält. Fälten anger egenskaper hos en nod. Ett fält tillskrivs ett värde som t ex kan vara en vektor eller en nod.

Noder och fält

Noderna är de egentliga byggstenarna i VRML. Varje nod har sin karakteristiska uppsättning fält som definierar nodens funktion. Dessa funktioner kan vara att ange geometri hos ett objekt, färg, ljus, vypunkt, placering, animationstid, sensor, interpolatorer och så vidare. En generell nod innehåller nodnamnet (Shape, Box, Group etc), ett par paranteser av måsvingetyp { } samt ett antal fält med tillhörande värden som definierar attributen hos noden.

Låt oss titta närmare på noderna som används i exemplet ovan:

Shape{
appearance ...
geometry ...
}
Shape { } -noden används för att bygga VRML-objekt. Shape { } -noden har två olika fält: appearance och geometry. I geometry-fältet specificerar man objektets 3D-form medan man i appearance-fältet anger t ex färg eller textur på objektet. Fälten behöver ej specificeras (d v s kan utelämnas) i en nod eftersom det finns förvalda värden (eng. default values) bläddraren tar till då inget annat värde anges. Exempelvis är det förvalda värdet för geometry-fältet i en Shape { } -nod "NULL" vilket helt enkelt betyder ingen geometri alls. Mer om förvalda värden/normalvärden längre fram.
Appearance {
material ...
}
Appearance { } -noden används i exemplet som värde hos appearance-fältet (Namnen råkar här sammanfalla men observera att det finns dels ett fält, dels ett värde hos fältet). I Appearance { } -noden i exemplet anger man att objektet ska vara av standardmaterial genom att i material -fältet använda sig av Material { } -noden.
Box{
size ...
}
Box { } -noden är på motsvarade sätt värdet hos geometry-fältet. Box { } -noden är en primitiv som beskriver en lådform. Kon-, cylinder- och sfärformer är de andra primitiverna som kan användas för att enkelt producera en 3D-form. Mer komplicerade objekt beskrivs på andra sätt än med primitiver. Box { } -noden har ett fält kallat size. Detta fält anger lådans storlek och tillskrivs ett värde, i detta fall en vektor, 2 1 1, som anger bredd, höjd och djup.
Material {
diffuseColor ...
}

Material { } -noden består i sig av en mängd fält (i exemplet dock endast ett). För att få objektet rödmålat anger man värdet 1 0 0 i diffuseColor -fältet. Detta värde är enligt RGB-skalan (Red Green Blue) färgen röd.

Nästa sida

© 1998 Glenn Sundberg. Alla rättigheter reserverade.