af de da da da de da da da en da da da zh en en uk en en en de en sl da da de en en en de fr en da de da da da da da nb da da da da da da hu da sv da da da da en sl en fr fr pt cs it ro fr lv de en ru ru es zh es pl ta fr ca hu da da da da en da da da da en da en da en en hu da en en hu da en en sv en hu da da da da hu da da da hu da en az pt da en da en da en da en da fr da en da en da en da en da en da en da en da en da en da en en en da en sv da en hu da en da da da da it da en sv en da en da pt da en da da fr da sv en sv en fr da fi da da ru ja da en da en en da en en ja da en ja da ru ja da sv en sv en hu da fi da da ru ja da en da en en da en en ja da en ja da sv en da en hu da da sv en da en et da da da da en mr da da en en en en en en da da en en da da en en da da en en da da sv en sv en da da en mr da da en en en en en en en da en en sv da da en it sv da da sv en da en en da de da da fr da en da hu da en hu da sv en de da da en hu da da da da da da en hu da da da da en da en da da de da en en en lb da id en da da da da pl sv da de de da da da de da da da en en da da da da da ka da da da da en en de da da fr da da da da sv da sv da da da da de da
Fra Wikibooks, den frie samling af lærebøger
Spring til navigation Spring til søgning
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).
X3D filer gemmes med filendelsen: .x3d
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.
HUSK der skrives på engelsk facon, så komma skrives som et punktum. Altså bliver 0,5 til 0.5
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.
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.
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.
Farver angives i RGB dvs 3 tal et for hver farvekanal udtrykt som en værdi mellem 0 og 1.
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:
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.
På den allerførste linje i enhvner x3d fil indsættes dette:
Derefter starter selve x3d filen med et start tag:
Herefter starter en scene sektion, hvor den egentlige kode skrives:
En grundfil ser derfor således ud:
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.
Man starter med World info, der kan 2 have værdier:
Info. Som typisk indeholder en kort beskrivelse af filen. Evt copyright information.
Title. Her skriver man simpelthen titlen på verden, der så vil blive vist i titellinjen på playeren. Ligesom det kendes fra HTML.
Herefter kommer Navigation info, der kan indeholde følgende:
Radius på en cirkel, fra midten af avataren, til den stoppes af en fast genstand
Synshøjde over gulvplan. Reelt den maksimale højde på avataren. Eks. den laveste dør avataren kan komme igennem.
Knæhøjde over gulvplan, dvs den højde en genstand kan have for at avataren kan gå henover den. Eks. trappetrin.
TRUE / FALSE. Angiver om avataren så at sige har en pandelampe på eller ej.
Angiver den hastighed som avataren bevæger sig med i en scene, angivet i m/s. Kan ikke antage en negativ værdi.
Angiver den tid, i sekunder, der går når man skifter fra et viewpoint til et andet.
Angiver måden, man som bruger oplever et skift fra et viewpoint til et andet.
TELEPORT betyder, at man bliver flyttet uden synlige effekter. transitionTime har ingen effekt her.
LINEAR betyder, at flytningen tager den tid, der angivet under transitionTime.
ANIMATE betyder, at man oplever at blive flyttet afhængig af playerens indstillinger.
Angiver hvordan man oplever objekterne i scenen.
ANY betyder, at det er op til playeren at sætte metoden.
WALK avataren bevæger sig rundt, som et menneske der går. Godt til bygninger og byrum.
EXAMINE objektet bliver roteret om alle akser, mens avataren står stille. Godt til ting eks. en vase.
FLY avataren bevæger sig som en flyvemaskine. Godt til landskaber oversigt over større flader.
NONE avataren kan ikke flyttes ved egen kraft, kun ved hjælp af udløste hændelser i rummet.
Afstanden man kan se i rummet udtrykt i meter.
En NavigationInfo node, kan så se således ud:
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:
fieldOfView, som er synsvinklen, den kan antage værdier mellem 0 og pi (altså mellem 0° og 180°)
orientation, som angive hvad vej, avataren vender, værdien er opbygget således: x y z G (x y z angiver hvilken akse der roteres om og er et enten
0 eller 1, G angiver hvor mange radianer der skal roteres og kan dermed antage et tal mellem 0 og 2*pi)
position, som angiver hvor i scenen man er placeret ad henholds x, y og z-aksen angive i meter fra 0-punktet. Det er en god at have afstand til de ting
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:
Grundfilen ser nu således ud:
Herefter er man klar til, at fylde ting ind på scenen:
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.
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.
Kassen hedder Boks 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:
En fil med en kasse, kan derfor se således ud:
Cylinderen hedder Cylinder og har 6 parametre
Angiver om man skal kunne se bunden af cylinderen eller ej.
et tal, der angiver højden i meter
et tal, der angiver radius på cylinderen i meter
Angiver om man skal kunne se siden af cylinderen, når man er placeret inden i den.
Angiver om cylinderen, er hul eller massiv.
Angiver om man skal kunne se toppen af cylinderen eller ej.
En cylinder kan derfor skrives således:
En fil med en cylinder, kan der se således ud:
Keglen hedder en cone og har 5 parametre
Angiver om man skal kunne se bunden af cylinderen eller ej.
et tal, der angiver radius på bunden af keglen i meter
et tal, der angiver højden i meter
Angiver om man skal kunne se siden af keglen, når man er placeret inden i den.
Angiver om keglen, er hul eller massiv.
En kegle kan derfor skrives således:
En fil med en kegle, kan der se således ud:
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:
Således kunne en fil, med en kegle, derfor skrives sådan her:
Udseende på et objekt specificeres ved en Appearance node, der kan indeholde følgende noder:
Material-node der fortæller noget om farver på objekter
Texture-noden der "klistrer" et billede på et objekt.
Material noden kan indeholde følgende:
angives ved 3 RGB-værdier
en mat farve-flade, der reflekterer lys afhængigt af avatarens vinkel i forhold til lyskilden.
angives ved 3 RGB-værdier
farve-fladen afgiver eget lys, dvs. der behøves ingen lyskilde for, at man kan se den.
angives med en værdi mellem 0 og 1
fortæller noget om fladens evne til at reflektere lys.
angives med en værdi mellem 0 og 1
angiver fladens transparens. Værdien 1 giver fuldstændig gennemsigtighed, 0 ingen gennemsigtighed.
Så en material node i en Appearance node, kan se således ud:
En fil med en material node kunne se således ud:
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.
Angiver en sti til det billede der skal anvendes
Angiver hvorvidt billedet skal kopieres ad X-aksen eller ej. Dvs. hvis værdien er sat til TRUE, bliver kopieret udad X-aksen, så det fylder hele fladen.
ellers vises billedet kun 1 gang.
Angiver hvorvidt billedet skal kopieres ad Y-aksen eller ej. Dvs. hvis værdien er sat til TRUE, bliver kopieret opad Y-aksen, så det fylder hele fladen.
ellers vises billedet kun 1 gang.
Så en texture node i en Appearance node, kan se således ud:
En fil med en texture node kunne se således ud:
Denne kasse kommer så til, at se således ud:
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.
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:
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:
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:
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:
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:
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:
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:
En transform node med alle tags indlagt, kan se således ud:
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:
Diskussionsside for denne IP-adresse
Referer til denne side
Denne side blev senest redigeret d. 14. juli 2018 kl. 12:25.
Tekst er tilgængelig under licensen Creative Commons Kreditering-Del på samme vilkår; yderligere betingelser kan være gældende. Se vores Brugsbetingelserne for flere oplysninger.