The Virtual Reality Modeling Language

Obsah Úvod Nastavenia prezerača Dušan Hanuska
Špecifikácia jazyka Polia Odkazovanie
Uzly Uzly Vzhľad Abecedný zoznam uzlov Predošlá strana

Geometrické uzly

AsciiText

Tento uzol predstavuje reťazce textových znakov z kódovej sady ASCII. Prvý reťazec sa zobrazí s počiatkom v (0,0,0). Všetky nasledujúce reťazce postupujú v y-ovom smere po (veľkosť * riadkovanie). Pozri štýl písma pre opis poľa veľkosti. Justifikačné pole rozhoduje o umiestnení reťazca v x-ovom smere. LEFT, ktoré je počiatočné, umiestňuje ľavý okraj každého reťazca na x=0. CENTER umiestňuje stred každého reťazca na x=0. RIGHT umiestňuje pravý okraj každého reťazca na x=0. Text je zobrazovaný zľava doprava, zvrchu nadol typom písma nastaveným pomocou FontStyle. Pole šírky definuje navrhovanú šírku pre každý reťazec. Normálne sa používa prednastavená šírka pre každý reťazec. Nastavenie hociktorej hodnoty na 0 signalizuje, že sa má pre daný reťazec použiť aktuálna šírka.

Text sa vykresľuje pomocou aktuálneho materiálu a textúry.

Textúry sú použité na 3D text nasledovne. Pôvod textúry je na pôvode prvého reťazca, čo sa určí zarovnaním. Textúra je škálovaná rovnomerne v oboch S a T rozmeroch s 1 jednotkou, ktorá predstavuje výšku písma. S narastá smerom doprava. Pôvod T sa môže vyskytnúť hocikde pri každom znaku, v závislosti od toho, ako je definovaný obrys znaku.

Upozornenie:
Znaky s diakritikou spôsobujú, že sa text žiadneho AsciiText uzla nezobrazí.

Zarovnanie
LEFT Zarovnávanie doľava
CENTER Centrovanie
RIGHT Zarovnávanie doprava

Formát definovania uzla a prednastavené hodnoty:
     AsciiText {
         string         ""    # reťazec typu MFString
         spacing        1     # riadkovanie typu SFFloat
         justification  LEFT  # zarovnanie typu SFEnum
         width          0     # šírka typu MFFloat
     }

Príklad 1 2

Cone - kužeľ

Tento uzol predstavuje kužeľ, ktorého stredná os je rovnobežná s osou y. Implicitne je kužeľ vycentrovaný na (0,0,0) a má veľkosť od -1 po +1 vo všetkých troch rozmeroch. Kužeľ má polomer podstavy 1 a výšku 2, s vrcholom na 1 a s podstavou na -1. Kužeľ má dve časti: plášť a podstavu.

Kužeľ sa transformuje pomocou aktuálnej stúpajúcej transformácie a vykreslí sa pomocou aktuálneho materiálu a textúry.

Ak je spájanie materiálu PER_PART alebo PER_PART_INDEXED, prvý materiál sa použije na plášť a druhý na podstavu. Inak sa použije prvý materiál na celý kužeľ.

Keď sa použije na kužeľ textúra, použije sa rozdielne na plášť a podstavu. Po bokoch sa textúra omotá v smere hodinových ručičiek (zhora) začínajúc odzadu kužeľa. Textúra má vzadu vertikálny švík prenikajúcu yz-rovinu. Pre podstavu sa vystrihne kruh zo štvorcovej textúry a použije sa na základný kruh kužeľa. Textúra sa zobrazí pravým bokom nahor, keď sa vrch kužeľa otáča oproti -z-ovej osi.

Časti
SIDES Plášť
BOTTOM Podstava
ALL Všetky časti

Formát definovania uzla a prednastavené hodnoty:
     Cone {
         parts         ALL	# časti typu SFBitMask
         bottomRadius  1	# polomer podstavy typu SFFloat
         height        2	# výška typu SFFloat
     }
Príklad 1

Cube - kocka

Tento uzol predstavuje útvar v tvare kocky v smere súradnicových osí. Počiatočne je kocka vycentrovaná na (0,0,0) a meria 2 jednotky v každom smere, od -1 po +1. Kocka sa transformuje pomocou aktuálnej stúpajúcej transformácie a vykreslí sa pomocou aktuálnehoho materiálu a textúry.

Ak je spájanie materiálu PER_PART, PER_PART_INDEXED, PER_FACE alebo PER_FACE_INDEXED, materiály budú pospájané po stenách kocky v tomto poradí: predná (+Z), zadná (-Z), ľavá (-X), pravá (+X), vrchná (+Y) a spodná (-Y).

Textúry sa použijú samostatne na každú stenu kocky: celá textúra ide na každú stenu. Na prednú, zadnú, pravú a ľavú stenu kocky sa textúra priloží pravou stranou nahor. Na vrchnej stene sa textúra objaví pravou stranou nahor, keď je vrch kocky naklonený oproti kamere. Na spodnej stene sa textúra objaví pravou stranou nahor, keď sa vrch kocky nakloní smerom k -z-ovej osi.

Formát definovania uzla a prednastavené hodnoty:
     Cube {
         width   2	# šírka typu SFFloat
         height  2	# výška typu SFFloat
         depth   2	# hĺbka typu SFFloat
     }
Príklad 1

Cylinder - valec

Tento uzol predstavuje uzavretý valec vycentrovaný okolo y-ovej osi. Počiatočne je valec vycentrovaný na (0,0,0) a má veľkosť od -1 po +1 vo všetkých troch smeroch. Valec má tri časti: plášť, vrchnú podstavu (y = +1) a dolnú podstavu (y = -1). Ak chcete vytvoriť valec iných rozmerov môžete na to použiť polomer a výšku.

Valec sa transformuje pomocou aktuálnej stúpajúcej transformácie a vykreslí sa pomocou aktuálneho materiálu a textúry.

Ak je spájanie materiálu PER_PART alebo PER_PART_INDEXED, prvý materiál sa použije na plášť, druhý na vrchnú podstavu a tretí na spodnú podstavu. Inak sa použije prvý materiál na celý kužeľ.

Keď sa použije na valec textúra, použije sa rozdielne na plášť, hornú a spodnú podstavu. Po bokoch sa textúra omotá v smere hodinových ručičiek (zhora) začínajúc odzadu valca. Textúra má vzadu vertikálny švík prenikajúcu yz-rovinu. Pre podstavy sa vystrihne kruh zo štvorcovej textúry a použije sa na základný kruh kužeľa. Vrchná textúra sa objaví pravým bokom nahor, keď sa vrch kužeľa otáča oproti +z-ovej osi a spodná textúra sa objaví, keď sa vrch kužeľa otáča oproti -z-ovej osi.

Časti
SIDES Plášť
TOP Horná podstava
BOTTOM Spodná podstava
ALL Všetky časti

Formát definovania uzla a prednastavené hodnoty:
     Cylinder {
         parts   ALL   # časti typu SFBitMask
         radius  1     # polomer typu SFFloat
         height  2     # výška typu SFFloat
     }
Príklad

IndexedFaceSet - sada indexovej steny

Tento uzol predstavuje 3D tvar formovaný pomocou konštrukčných stien (polygónov) od vrcholov z aktuálnych súradníc. IndexedFaceSet používa indexy vo svojom poli coordIndex na špecifikáciu polygonálnych stien. Ak je index -1, znamená to, že súčasná stena skončila a ďalšia začína.

Vrcholy stien sa transformujú pomocou aktuálnej transformačnej matice.

Zaobchádzanie so súčasným materiálom a s normálovým spájaním je nasledovné: PER_PART a PER_FACE spájania špecifikujú materiál alebo normálu pre každú stenu. PER_VERTEX špecifikuje materiál alebo normálu pre každý vrchol. Korešpondujúce spájania _INDEX sú rovnaké, ale používajú indexy materialIndex alebo normalIndex. Štandardné materiálové spájanie je rovné OVERALL. Štandardné normálové spájanie je rovné PER_VERTEX_INDEXED. Ak sú normály v stave nedostačujúce, budú vygenerované automaticky.

Explicitné súradnice textúr (tak ako sú definované v TextureCoordinate2) smú byť pripojené ku vrcholom indexovanáho tvaru pomocou indexov v poli textureCoordIndex. Podobne ako so všetkými tvarmi založenými na vrcholoch, ak je súčasná textúra, ale nie sú špecifikované žiadne súradnice textúry, vypočíta sa štandardné mapovanie textúrnych súradníc pomocou ohraničujúcej škatule tvaru. Najdlhší rozmer ohraničujúcej škatule definuje súradnice S a ďalší najdlhší definuje súradnice T. Hodnota súradnice S sa pohybuje od 0 po 1, od konca jednej ohraničujúcej škatule po ďalšiu. Hodnota súradnice T sa pohybuje v rozmedzí 0 až pomer druhého najväčšieho rozmeru ohraničujúcej škatule ku najväčšiemu rozmeru.

Uistite sa, či sú indexy obsiahnuté v poliach coordIndex, materialIndex, normalIndex a textureCoordIndex platné s ohľadom a súčasný stav, lebo inak sa objavia chyby.

Formát definovania uzla a prednastavené hodnoty:
    IndexedFaceSet {
        coordIndex         0  # index súradníc typu MFLong
        materialIndex      -1 # index materiálu typu MFLong
        normalIndex        -1 # index normály typu MFLong
        textureCoordIndex  -1 # index texúry typu MFLong
    }
Príklad

IndexedLineSet - sada indexovej čiary

Tento uzol predstavuje 3D tvar formovaný pomocou konštrukčných kriviek z vrcholov umiestnených na aktuálnych súradniciach. IndexedLineSet používa indexy vo svojom poli coordIndex na špecifikovanie kriviek. Ak je index -1, znamená to, že súčasná krivka skončila a ďalšia začína.

Súradnice sady čiar sa transformujú pomocou aktuálnej kumulatívnej transformácie.

Zaobchádzanie s aktuálnym materiálom a s normálovým spájaním je nasledovné: PER_PART spájanie špecifikuje materiál alebo normálu pre každý segment čiary. PER_FACE spájanie špecifikuje materiál alebo normálu pre každú krivku. PER_VERTEX špecifikuje materiál alebo normálu pre každý vrchol. Korešpondujúce spájania _INDEX sú rovnaké, ale používajú indexy materialIndex alebo normalIndex. Štandardné materiálové spájanie je rovné OVERALL. Štandardné normálové spájanie je rovné PER_VERTEX_INDEXED. Ak sú normály v stave nedostačujúce, čiary budú vygenerované automaticky a čiary budú vykreslené neosvetlené. Rovnaké pravidlá sa použijú pre generovanie súradníc textúry ako IndexedFaceSet.

Formát definovania uzla a prednastavené hodnoty:
    IndexedLineSet {
        coordIndex          0 # index súradníc typu MFLong
        materialIndex      -1 # index materiálu typu MFLong
        normalIndex        -1 # index normály typu MFLong
        textureCoordIndex  -1 # index texúry typu MFLong
    }

PointSet - sada bodov

Tento uzol predstavuje sadu bodov umiestnených v aktuálnych súradniciach. PointSet používa tieto súradnice v poradí začínajúcom na indexe, ktorý špecifikuje pole startIndex. Počet bodov v sade je špecifikovaný poľom numPoints. Ak je hodnota -1, tak toto pole indikuje, že všetky zostávajúce hodnoty v súčasných súradniciach nebudú použité ako body.

Súradnice sady bodov sa transformujú aktuálnou kumulatívnou transformáciou. Body sa vykreslia s aktuálnym materiálom a textúrou.

Zaobchádzanie s materiálom a s normálovým spájaním je nasledovné: PER_PART, PER_FACE a PER_VERTEX spájanie spája jeden materiál alebo normálu s každým bodom. Štandardné materiálové spájanie je rovné OVERALL. Štandardné normálové spájanie je rovné PER_VERTEX. StartIndex sa tiež používa pre materiály alebo normály, keď spájanie indikuje, že smú byť použité po vrcholoch.

Formát definovania uzla a prednastavené hodnoty:
    PointSet {
        startIndex  0     # počiatočný index typu SFLong
        numPoints   -1    # počet bodov typu SFLong
    }

Sphere - guľa

Tento uzol predstavuje guľu. Štandardne je guľa centrovaná do počiatku a má polomer 1. Guľa sa transformuje pomocou aktuálnej kumulatívnej transformácie a je vykreslená pomocou aktuálneho materiálu a textúry.

Guľa nemá steny alebo časti. Preto guľa ignoruje materiálové a normálové spájanie. Používa prvý materiál na celú guľu a používa svoje vlastné normály. Keď sa aplikuje na guľu textúra, textúra pokryje celý povrch omotajúc sa v smere chodu hodinových ručičiek zozadu gule. Textúra má švík vzadu v yz-ovej rovine.

Formát definovania uzla a prednastavené hodnoty:
    Sphere {
        radius  1     # polomer typu SFFloat
    }
Príklad