text: Introduktion.
  X3D står for Extensible 3D og er et åbent fil-format, der gør det muligt ,at vise og kommunikere 3D scener og objekter ved hjælp af XML.
  Det er en ISO standard, der giver mulighed for, at opbevare og vise grafisk indhold i real-tid.
  X3D er en videreudvkling af Virtual Reality Modeling Language (VRML).
  Til at vise x3d filer skal man bruge en speciel browser eller et plug-in til sin eksisterende web-browser, kan denne side fortælle om man allerede har en browser eller et plug-in, på siden finder der også links til at downloade: http://cic.nist.gov/vrml/vbdetect.html
  Jeg bruger selv Flux-player, som kan downloades her: http://www.mediamachines.com/developer.php
  X3D filer gemmes med filendelsen: .x3d
  Indledning.
  En af fordelene ved X3D er, at det er relativt enkelt, at skabe komplicerede 3D objekter ved hjælp af en simpel tekst-editor som f.eks. Notepad.
  Grundlæggende.
  HUSK der skrives på engelsk facon, så komma skrives som et punktum. Altså bliver 0,5 til 0.5
  Størrelse.
  Alle mål i x3d er i meter. Dette gør det enkelt, at sætte figurer sammen, selvom de er lavet af forskellige personer.
  Placering.
  Da det handler om 3-D opererer man i et XYZ-koordinatsystem. Dette gælder for såvel placering i rummet, men naturligvis også for opbygningen af figurer.
  Systemet ser således ud:
  I forbindelse med placeringen af figurer, skal man være opmærksom på, at placeringen tager udgangspunkt i midten af figuren og at den første figurs midte er 0-punktet, som de øvrige figurer bliver placeret i forhold til.
  Alle vinkler er angivet i radianer.
  Omregningen sker således: grader*(pi/180) eller en lille tabel med et par almindelige:
  Omregningstabel
  Farver.
  Farver angives i RGB dvs 3 tal et for hver farvekanal udtrykt som en værdi mellem 0 og 1.
  Filopbygning.
  En fil består af et antal start-tags, et antal noder (Nodes), der udgør selve figuren og et antal slut-tags.
  Formen på en node er typisk:
   &lt;Nodenavn parameter1=' ' parameter2=' '&gt;
  Bemærk at parametrene er omsluttet af '. Hvis parametren angives med et ord, sættes dette i " ", hvis det er tal gør man ikke dette.
  Det er værd at bemærke, at x3d er opbygget på samme måde som xml. Dvs. at det er vigtigt, at der er en slut-tag på enhver tag eller, hvis der ikke findes en slut-tag, at start-tag'en afsluttes med "/" (slash). Endvidere er x3d case-sensitive, så det er vigtigt, at skrive koden helt rigtigt.
  Type erklæring.
  På den allerførste linje i enhvner x3d fil indsættes dette:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
  Og derefter:
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
  Derefter starter selve x3d filen med et start tag:
   &lt;X3D&gt;
   &lt;/X3D&gt;
  Header.
  Så kommer der en head sektion, der kan indeholde forskellige meta-tags:
   &lt;head&gt;
   &lt;/head&gt;
  Scene.
  Herefter starter en scene sektion, hvor den egentlige kode skrives:
   &lt;Scene&gt;
   &lt;/Scene&gt;
  En grundfil ser derfor således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Faste noder.
  Typisk vil man fast tilføje 3 ting mere til en scene: World info, Viewpoint og Navigation info. 
  Det første handler om grundlæggende informationer om scenen og har ingen betydning for hvordan scenen iøvrigt ser ud. 
  Det andet handler om ens foruddefinerede positioner i scenen. Det første viewpoint er der hvor man starter. Det er smart fordi man kan give brugeren
  mulighed for, at se de ting man selv finder interessante.
  Det tredje handler om, hvordan man oplever scenen når man bevæger sig rundt i den, såsom størrelsen på ens Avatar. Navigation info fortæller "playeren" hvordan man ser verdenen, når man åbner filen.
  World info.
  Man starter med World info, der kan 2 have værdier:
  Navigation info.
  Herefter kommer Navigation info, der kan indeholde følgende:
  En NavigationInfo node, kan så se således ud:
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
  Viewpoint.
  Viewpoint'et angiver som sagt foruddefinerede punkter hvor avataren placeres. Man kan sige, at der er 2 typer Viewpoint: Det første og alle de andre. Det første er en god ide i alle filer, de øvrige må afhænge af flere ting, bl.a. størrelsen på ens scene og om der er ting, man som bruger i særlig grad skal lægge mærke til.
  Viewpoint noden tager 3 parametre:
  0 eller 1, G angiver hvor mange radianer der skal roteres og kan dermed antage et tal mellem 0 og 2*pi)
  man laver.
  Det sidste man kan lægge ind er en baggrund. Det kan være en god ide, fordi det gør det nemmere, at se hvad man har lavet.
  Jeg vil komme tilbage til, hvordan man laver en baggrund, men denne her ser godt ud, så den bruger vi i det følgende:
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
  Grundfilen ser nu således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Herefter er man klar til, at fylde ting ind på scenen:
  Grundlæggende former (Shape's).
  Det skal her bemærkes, at man ikke behøver, at indsætte alle parametre, da disse så bare vil bliver tildelt default-værdier.
  Disse er: 
  Den sidste er specielt vigtig, idet man faktisk kun skal indsætte parametrene hvis de er anderledes end default-værdierne.
  Endvidere skal man passe på med, at sætte den parameter, der hedder SOLID til FALSE, idet man da ofte slet ikke kan se
  objektet.
  Kasse.
  Kassen hedder Box og tager 1 parameter: size. Der består af 3 værdier: bredde, højde, dybde (eller XYZ). Meter pr akse.
  En kasse kan derfor skrives således:
   &lt;Box size='1.0 2.5 4.2'/&gt;
  En fil med en kasse, kan derfor se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;Shape&gt;
   &lt;Box size='1.0 2.5 4.2'/&gt;
   &lt;/Shape&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Cylinder.
  Cylinderen hedder Cylinder og har 6 parametre 
  En cylinder kan derfor skrives således:
   &lt;Cylinder height='2.5' radius='0.5' solid='"FALSE"' top='"FALSE"'/&gt;
  En fil med en cylinder, kan der se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;Shape&gt;
   &lt;Cylinder height='2.5' radius='0.5' top='"FALSE"'/&gt;
   &lt;/Shape&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Kegle.
  Keglen hedder en cone og har 5 parametre
  En kegle kan derfor skrives således:
   &lt;Cone height='2.5' bottomRadius='0.5'/&gt;
  En fil med en kegle, kan der se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;Shape&gt;
   &lt;Cone height='2.5' bottomRadius='0.5'/&gt;
   &lt;/Shape&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Kugle.
  Kuglen hedder en sphere og har 2 parametre
  radius, som er et tal, der angiver radius på kuglen i meter og solid, der angiver om kuglen, er hul eller massiv (skrives som TRUE eller FALSE).
  En kugle skrives derfor således:
   &lt;Sphere radius='0.5' solid='"FALSE"'/&gt;
  Således kunne en fil, med en kegle, derfor skrives sådan her:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;Shape&gt;
   &lt;Sphere radius='0.5' solid='"FALSE"'/&gt;
   &lt;/Shape&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Udseende.
  Udseende på et objekt specificeres ved en Appearance node, der kan indeholde følgende noder:
  Material noden kan indeholde følgende:
  Så en material node i en Appearance node, kan se således ud:
   &lt;Appearance&gt;
   &lt;material diffuseColor='0.2 0.5 0.8' transparency='0.5'/&gt;
   &lt;/Appearance&gt;
  En fil med en material node kunne se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;Shape&gt;
   &lt;Appearance&gt;
   &lt;Material diffuseColor='0.2 0.5 0.8' transparency='0.5'/&gt;
   &lt;/Appearance&gt;
   &lt;Sphere radius='0.5' solid='"FALSE"'/&gt;
   &lt;/Shape&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Så nu ser kuglen fra før således ud:
  Texture-noden angiver hvordan man sætter et billede på et objekt. Billedet kan være af typerne: JPEG, PNG eller GIF. Måske understøtter playeren andre
  formater, men dette er ikke sikkert.
  Så en texture node i en Appearance node, kan se således ud:
   &lt;Appearance&gt;
   &lt;texture url='Brenda.jpg repeatS='"TRUE"' repeatT='"FALSE"'/&gt;
   &lt;/Appearance&gt;
  En fil med en texture node kunne se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Background groundAngle='1.309 1.571' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/&gt;
   &lt;Shape&gt;
   &lt;Appearance&gt;
   &lt;ImageTexture url='"Brenda.jpg"' repeatS='"TRUE"' repeatT='"FALSE"'/&gt;
   &lt;/Appearance&gt;
   &lt;Box size='1.0 2.5 4.2'/&gt;
   &lt;/Shape&gt;
   &lt;/Scene&gt;
  &lt;/X3D&gt;
  Denne kasse kommer så til, at se således ud:
  Genbrug.
  Det er grundlæggende 2 forskellige måder, at genbruge sine Shapes på, enten ved, at man i samme fil bruger en eller flere 
  shapes igen, eller at man i en fil indsætter en anden fil.
  Fordelen er naturligvis, at man slipper for at lave de samme shapes flere gange.
  DEF/USE.
  Når man i den samme fil, genbruger sine Shapes, indsætter man i den Shape, man senere ønsker at genbruge, det reserverede ord:DEF
  og derefter et passende navn. Det kan se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Group&gt;
   &lt;Shape DEF='Kugle'&gt;
   &lt;Appearance&gt;
   &lt;Material diffuseColor='0.2 0.5 0.8' transparency='0.5'/&gt;
   &lt;/Appearance&gt;
   &lt;Sphere radius='0.5'/&gt;
   &lt;/Shape&gt;
   &lt;Transform translation='1 0 0'&gt;
   &lt;Shape USE='Kugle'/&gt;
   &lt;/Transform&gt;
   &lt;/Group&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Den Transform-node der er brugt forklares nedenunder, men den bruges i det her tilfælde til, at flytte den anden kugle lidt i forhold
  til den første, det ser således ud i browseren:
  Inline.
  Den anden metode hedder Inline, her indsætter man et link til den fil, man ønsker at sætte ind. Det virker sådane her:
   &lt;Inline url='"kasse.x3d"'&gt;
  Transformering.
  Når man genbruger sine shapes, er det ofte nødvendigt, at ændre på udseendet eller placeringen af de efterfølgende shapes. Til
  dette bruger man en Transform-node, der giver mulighed for, at skalere, rotere og flytte sine shapes. Transform-noden bruges også til, at flytte shapes man ikke har genbrugt.
  Noden ser således ud: 
   &lt;Transform&gt; &lt;/Transform&gt;
  Skalering.
  Man kan indsætte et skalerings-tag, som ændrer på størrelsen på en node.
  Skaleringen udføres på de 3 akser: X Y Z. Værdien der tildeles angiver med hvilken faktor størrelsen ændres, dvs. hvis faktoren er 2 fordobles størrelsen, hvis faktoren er 0.5 halveres størrelsen. 
  Her er lavet en skalering, der fordobler alle 3 sider:
   &lt;Transform scale='2.0 2.0 2.0'&gt;
   &lt;Shape&gt;
   &lt;/Transform&gt;
  Rotation.
  Man kan indsætte et roterings-tag, som ændrer på hvordan en node vender.
  Rotationen foregår omkring X Y Z akserne. Og er opbygget således: X Y Z G. Dvs. X Y Z angiver om hvilken akse der skal roteres og antager værdien 0 eller 1, G angiver hvor mange radianer man roterer.
  Der er en simpel måde at gøre det på og en kompliceret måde, at gøre det på.
  Den simple måde er hvor man kun roterer om den ene af akserne, f.eks. 0 1 0 1.57.
  Den komplicerede måde er, hvor man roterer om flere akser, f.eks. 0.2 0.45 0.32 1.45. Hvad hver enkelt værdi skal være, kan jeg ikke give et svar på.
  Men der findes et lille program, der kan gøre det for en, det hedder VT Dizzy 1.1 og kan hentes her: http://www.softpedia.com/get/Science-CAD/VT-Dizzy.shtml
  Her ses hvordan en simpelt rotation ser ud, der bliver drejet 90° om Y-aksen:
   &lt;Transform rotation='0 1 0 1.57'&gt;
   &lt;Shape&gt;
   &lt;/Transform&gt;
  Positionering.
  Positionerings tag'et hedder translation i x3d "sprog"
  Man kan indsætte et translation-tag, som ændrer på hvor en node placeres i scenen. Dette bruges ofte (altid), da efterfølgende noder placeres i forhold til den første node. 
  Hvis man sætter et translation-tag på den første shape, skal man være opmærksom på det forhold, når man flytter på de andre shapes, derfor vil man normalt udelade translation på den første (eller eneste) form.
  Postionering udføres på de 3 akser: X Y Z. Værdien der tildeles angiver hvilken afstand fra nulpunktet den nye position er. 
  Et translation-tag altså se sådan her ud:
   &lt;Transform translation='0.8725 3.5 4'&gt;
   &lt;Shape&gt;
   &lt;/Transform&gt;
  En transform node med alle tags indlagt, kan se således ud:
   &lt;Transform scale='0.5 2 1.5' rotation='0 1 0 1.57' translation='0.8725 3.5 4'&gt;
   &lt;Shape&gt;
   &lt;/Transform&gt;
  Tag'et skalerer objektet 0,5 på x-aksen, 2,0 på y-aksen og 1,5 på z-aksen. Derefter roteres objektet 90° om y-aksen og endelig flyttes objektet 87,25 centimeter ad x-aksen 3,5 meter ad y-aksen og 4 meter ad z-aksen.
  En fil kunne så se således ud:
   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
   &lt;X3D&gt;
   &lt;head&gt;
   &lt;/head&gt;
   &lt;Scene&gt;
   &lt;WorldInfo info='"(c) Copyright bla bla bla"' title='"Grundscene"'/&gt;
   &lt;NavigationInfo avatarsize='0.3 1.9 0.6' headlight='true' type='"WALK"' transitiontype='"LINEAR"'/&gt;
   &lt;Transform scale='0.5 2 1.5' rotation='0 1 0 1.57' translation='0.8725 3.5 4'&gt;
   Et objekt her
   &lt;/Transform&gt;
   &lt;/Scene&gt;
   &lt;/X3D&gt;
  Eksterne henvisninger.
  http://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook/
  http://www.web3d.org/