Na začátku bych chtěl shrnout základní vlastnosti jazyka VRML, který se
používá
k popisu virtuálního světa.
V této kapitole uvedu nejdůležitější prvky jazyka VRML, které jsem použil pro tvorbu prostorových modelů map, dále jejich výhody, nevýhody a vlastnosti důležité pro tvorbu DMT.
Historie jazyka VRML 97 začíná v roce 1995 ve firmě Silicon Graphics definicí VRML 1.0 jako rozšíření aplikační knihovny OpenInventor (pro použití grafické knihovny OpenGL) o využívání prostorových dat ze sítě WWW. Současně vzniká skupina vývojářů VAG (VRML Architecture Group), která se obrací na všechny významné tvůrce systémů virtuální reality, ale i veřejnost s výzvou k vytvoření specifikace budoucího jazyka VRML 2.0. V roce 1996 je z 8 různých návrhů vybrána specifikace firem Silicon Graphics a Sony, ta se stává základem specifikace VRML 2.0. Tato specifikace byla během jednoho roku měněna a doplňována v otevřené diskusi probíhající na internetu. Koncem roku 1997 je specifikace jazyka VRML oficiálně přijata za standard ISO a nyní se používá pod označením VRML 97. Dále v textu budu pod označením VRML chápat definici VRML 97.
K prohlédnutí virtuálního světa potřebujeme prohlížeč VRML, který provádí převod textového popisu virtuálního světa do grafické podoby. Nejčastěji se tento prohlížeč instaluje jako doplněk internetového prohlížeče (např. programu Internet Explorer nebo Netscape Communicator). Nejznámější prohlížeče pro VRML jsou CosmoPlayer od firmy SiliconGraphics, WorldView od firmy Intervista Software a Corona od firmy ParallelGraphics[1]. Pomocí prohlížeče se dá virtuální svět dokonce vnímat prostorově, např. při použití speciálních brýlí.
Prohlížeč VRML nám umožňuje pohyb ve virtuálním světě a případnou interakci s virtuálními předměty.
Při zobrazení VRML modelu máme dvě možnosti. Lze ho umístit na internetové stránce jako odkaz přímo na VRML model, který se pak zobrazí v celém okně prohlížeče. Další možností je zobrazit ho jako součást html stánky pomocí příkazu EMBED.
Příklad použití:
<EMBED
SRC="file.wrl"
WIDTH="300"
HEIGHT="300"
PLUGINSPAGE="http://www.parallelgraphics.com/cortona"
VRML_DASHBOARD="FALSE"
VRML_BACKGROUND_COLOR="#000077"
CONTEXTMENU="FALSE"
MASK="0
0, 150 10, 300 0, 290 150, 300 300, 150 290, 0 300, 10 150">
Kde
SRC specifikuje jméno VRML modelu, který má být zobrazen.
PLUGINSPAGE navádí uživatele na stránky, které ho informují, jak nainstalovat plug-in, který umí zobrazit VRML soubor, jestliže ho uživatel ještě nemá nainstalován.
VRML_DASHBOARD[2] "TRUE" – zapne zobrazení ovládacího panelu; "FALSE" – zobrazení vypne.
VRML_BACKGROUND_COLOR[3] "#rrggbb" specifikuje barvu pozadí modelu (hexadecimálně), pokud ovšem není pozadí již definováno ve VRML souboru uzlem Background.
CONTEXTMENU[4] "TRUE" – umožňuje použít kontextové menu v okně modelu; "FALSE" – kontextové menu zablokuje.
MASK[4] umožňuje specifikovat tvar oblasti, ve které bude model zobrazen.
Soubor s popisem v jazyce VRML se skládá z uzlů a tvoří hierarchickou (stromovou) strukturu. V roli parametrů uzlů se mohou objevovat jiné uzly. Podle vzájemné polohy jednotlivých uzlů mluvíme o vztazích, jako je rodič, potomek nebo sourozenec. Podobně jako rodič v rodině předává svým potomkům své vlastnosti, předává rodičovský uzel vlastnosti svým potomkům (např. poloha nebo rotace).
Soubor s popisem virtuálního světa můžeme rozdělit do několika základních částí. Na začátku je vždy hlavička. Její tvar je neměnný a informuje prohlížeč, o jaký typ souboru se jedná. Tento řádek je povinný. Za hlavičkou většinou následují úvodní informace o virtuálním světě. Jsou to informace o souboru a jeho tvůrci (WorldInfo), seznam zajímavých míst uvnitř virtuálního světa (Viewpoint) a způsob procházení světem (NavigationInfo). Třetí, nejrozsáhlejší část tvoří vlastní popis virtuálního světa. Pořadí těchto částí není závazné, ale je dobrým zvykem ho kvůli čitelnosti dodržovat.
Soubory, které popisují VRML-světy, mají příponu wrl a lze je pro úsporu místa zkomprimovat programem gzip, přičemž si zachovají příponu wrl, prohlížeč sám rozpozná takový soubor a automaticky ho dekomprimuje.
Abychom mohli s VRML pracovat, je zde zaveden systém prostorových souřadnic. Směr vzhůru je totožný s kladnou osou Y a země je totožná s rovinou XZ. Kladná poloosa X běžně míří doprava a osa Z míří směrem k nám.
řádek začínající znakem # je chápán jako komentář (s výjimkou prvního řádku).
Parametry podle vztahu k událostem se dělí na 4 druhy. field je statická veličina a lze ji změnit pouze zapsáním nové hodnoty do souboru VRML. eventIn je parametr schopný přijmout událost daného datového typu. eventOut je parametr schopný vyslat událost v okamžiku, kdy dojde ke změně jeho hodnoty. Parametr exposedField má iniciální hodnotu a je schopen přijmout události měnící jeho hodnotu a také po změně této hodnoty události vysílat. Protože tvorba dynamických světů jde nad rámec této diplomové práce, není v dalším popisu uzlů uveden význam dynamických parametrů.
Názvy uzlů začínají velkým písmenem a názvy parametrů malým. Je důležité si na to dávat pozor při psaní, nebo jazyk VRML je citlivý na velká a malá písmena.
Délky se ve VRML zadávají v metrech, čas v sekundách a úhly v radiánech. Barva se popisuje trojicí hodnot RGB v rozsahu 0-1.
Na pořadí parametrů uvnitř uzlu nezáleží. Každý parametr má definovanou iniciální hodnotu. Stačí tedy definovat jen ty parametry, jejichž hodnoty jsou odlišné do iniciálních. Zápis všech hodnot snižuje čitelnost programu.
Textové řetězce se zapisují do uvozovek. U každého parametru je stanoveno, zda do něj lze zapsat jednu nebo více hodnot. Vkládá-li se více hodnot, jsou uzavřeny do hranatých závorek a odděleny bílými znaky (konec řádku, tabulátor, mezera nebo čárka). Každý parametr má jednoznačně dáno, jaký typ dat do něj lze ukládat. Je definováno několik datových typů, obvykle ve dvou variantách, buï s předponou SF (Single Field), která dovoluje ukládat pouze samostatnou hodnotu, nebo s předponou MF (Multiple Field), do které se zadává seznam hodnot, jehož délka není obecně omezena.
Pojem avatar[5] označuje uživatelova dvojníka, který prochází virtuálním světem. To, co avatar vidí, je zobrazeno v okně prohlížeče. Avatar má své rozměry, které mu např. brání procházet malými průchody.
V interaktivně navržených světech lze detekovat, v jakém místě virtuálního světa avatar stojí, co všechno vidí, zda naráží na překážku nebo zda vstupuje do nějaké hlídané zóny. O veškerou tuto detekci se starají senzory, speciální uzly definované ve VRML.
Ovládání avatara je zajištěno prostřednictvím tzv. velitelského stanoviště, které je na obrazovce reprezentováno ovládacími prvky prohlížecí aplikace. Jak vlastnosti avatara, tak i některé prvky velitelského stanoviště lze zadat pomocí uzlu NavigationInfo.
Uzly, které jsem použil při tvorbě prostorového modelu, vyjmenuji v následujících podkapitolách.
Umístění a pohledové vlastnosti stanoviště.
Viewpoint {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFFloat |
fieldOfView |
0.785398 |
Zorný úhel |
exposedField |
SFBool |
jump |
TRUE |
Povolení plynulého přechodu na stanoviště |
exposedField |
SFRotation |
orientation |
0 0 1 0 |
Natočení avatara |
exposedField |
SFVec3f |
position |
0 0 10 |
Poloha avatara |
field |
SFString |
description |
"" |
Jméno stanoviště uváděné prohlížečem |
eventIn |
SFBool |
set_bind |
|
|
eventOut |
SFTime |
bindTime |
|
|
eventOut |
SFBool |
isBound |
|
|
}
Tento uzel definuje stanoviště pozorovatele. Je důležité, aby bylo správně umístěno a zajištěno zacílení pohledu pozorovatele na pozorovaný objekt. V opačném případě se může stát, že pozorovatel vůbec nenajde zobrazený model, zvláště tehdy, je-li tento model jednostranně zobrazen a ze stanoviště je vidět pouze rubová strana modelu.
Pomocí tohoto uzlu je také možné zajistit prohlídku virtuálního světa definováním více stanoviš, kdy při přepínání dochází k plynulému přechodu ze stanoviště na stanoviště.
První stanoviště definované v souboru nastavuje iniciální pohled při vstupu do virtuálního světa.
Geometrické, světelné a pohybové charakteristiky avatara.
NavigationInfo {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFFloat |
avatarSize |
[0.25, 1.6, 0.75] |
Trojice čísel určující rozměry avatara |
exposedField |
SFBool |
headlight |
TRUE |
Zapnutí svítilny na čele avatara |
exposedField |
SFFloat |
speed |
1.0 |
Rychlost pohybu avatara v m/s |
exposedField |
MFString |
type |
["WALK", "ANY"] |
Seznam povolených způsobů pohybu avatara |
exposedField |
SFFloat |
visibilityLimit |
0.0 |
Dohled avatara |
eventIn |
SFBool |
set_bind |
|
|
eventOut |
SFBool |
isBound |
|
|
}
Při zobrazování krajiny je vhodné vypnout avatarovu svítilnu, aby se zvýšila reálnost prostředí. Dále je vhodné zvýšit rychlost pohybu avatara, implicitní hodnota je pro pohyb v krajině dosti nízká. Jako způsob pohybu je nejlépe použít typ WALK, při kterém se avatar pohybuje po zemi a působí na něj gravitace, dále je možné použít typ FLY, kdy se ve světě pohybuje jako pták, anebo použít typ ANY; pak je možné použít jakýkoliv způsob pohybu. Dohled avatara je dobré ponechat nastavený na nulu, což znamená nekonečno.
Definice pozadí, reprezentovaná vnitřkem krychle s panoramatickým obrazem či vnitřkem koule s plynulými barevnými přechody, obklopující virtuální svět.
Background {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFFloat |
skyAngle |
[] |
Rostoucí posloupnost úhlů, pro které jsou dány barvy oblohy |
exposedField |
MFColor |
skyColor |
0 0 0 |
Seznam barev pro postupné přechody na sférické obloze |
exposedField |
MFColor |
groundColor |
[] |
Seznam barev pro postupné přechody na sférické zemi |
exposedField |
MFFloat |
groundAngle |
[] |
Rostoucí posloupnost úhlů, pro které jsou dány barvy země |
exposedField |
MFString |
backUrl |
[] |
Obrázek pro zadní stěnu obklopující krychle |
exposedField |
MFString |
bottomUrl |
[] |
Obrázek pro spodní stěnu obklopující krychle |
exposedField |
MFString |
frontUrl |
[] |
Obrázek pro přední stěnu obklopující krychle |
exposedField |
MFString |
leftUrl |
[] |
Obrázek pro levou stěnu obklopující krychle |
exposedField |
MFString |
rightUrl |
[] |
Obrázek pro pravou stěnu obklopující krychle |
exposedField |
MFString |
topUrl |
[] |
Obrázek pro horní stěnu obklopující krychle |
eventIn |
SFBool |
set_bind |
|
|
eventOut |
SFBool |
isBound |
|
|
}
Při prezentaci modelu dodá pozadí virtuálnímu světu větší iluzi prostoru, nehledě na to, že bez definování tohoto uzlu se mapa zobrazí s černým pozadím. Jsou dvě možnosti, jak definovat pozadí. Jednou z možností je definovat pozadí jako přechod barev měnících se s výškou nad horizontem, další možností jsou panoramatické obrázky obklopující virtuální svět ze všech stran.
Charakteristika světelného zdroje, který vysílá paprsky z jednoho bodu. Jejich intenzita klesá v rámci zadaného rozsahu.
PointLight {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFFloat |
ambientIntensity |
0 |
Příspěvek světelného zdroje k nepřímému osvětlení světelného zdroje |
exposedField |
SFVec3f |
attenuation |
1 0 0 |
Trojice koeficientů pro výpočet útlumu světla |
exposedField |
SFColor |
color |
1 1 1 |
Barva paprsků |
exposedField |
SFFloat |
intensity |
1 |
Intenzita paprsků |
exposedField |
SFVec3f |
location |
0 0 0 |
Umístění světelného zdroje |
exposedField |
SFBool |
on |
TRUE |
Vypnutí nebo zapnutí světelného zdroje |
exposedField |
SFFloat |
radius |
100 |
Dosah osvětlení |
}
Definice VRML obsahuje několik druhů světel. PointLight je nejvhodnější pro osvětlení světa, protože se jím dá definovat světelný zdroj podobný slunci.
Definice mlhy, která je míchána s barvou objektů podle rostoucí vzdálenosti od avatara.
Fog {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFColor |
color |
1 1 1 |
Barva mlhy |
exposedField |
SFString |
fogType |
"LINEAR" |
Způsob houstnutí mlhy |
exposedField |
SFFloat |
visibilityRange |
0 |
Vzdálenost maximálního dohledu |
eventIn |
SFBool |
set_bind |
|
|
eventOut |
SFBool |
isBound |
|
|
}
Pro zlepšení iluze prostoru můžeme použít mlhu, která je dnes všudypřítomná.
Definice sítě ploch pokrývajících terén.
ElevationGrid {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFNode |
color |
NULL |
Seznam barev v uzlu Color |
exposedField |
SFNode |
normal |
NULL |
Seznam normál v uzlu Normal |
exposedField |
SFNode |
texCoord |
NULL |
Seznam souřadnic textury v uzlu TextureCoordinate |
field |
MFFloat |
height |
[] |
Pole výšek všech vrcholů sítě |
field |
SFBool |
ccw |
TRUE |
Přivrácená strana mapy je vidět při pohledu shora |
field |
SFBool |
colorPerVertex |
TRUE |
Barvy v parametru color se vztahují na vrcholy (jinak na plochy sítě) |
field |
SFFloat |
creaseAngle |
0 |
Mezní úhel, do kterého jsou dvě sousední plochy považovány za oblé |
field |
SFBool |
normalPerVertex |
TRUE |
Normály v parametru normal se vztahují na vrcholy (jinak na plochy sítě) |
field |
SFBool |
solid |
TRUE |
Mapa je jednostranná |
field |
SFInt32 |
xDimension |
0 |
Počet vrcholů sítě v ose X |
field |
SFFloat |
xSpacing |
1.0 |
Vzdálenost mezi vrcholy sítě v ose X |
field |
SFInt32 |
zDimension |
0 |
Počet vrcholů sítě v ose Z |
field |
SFFloat |
zSpacing |
1.0 |
Vzdálenost mezi vrcholy sítě v ose Z |
eventIn |
MFFloat |
set_height |
|
|
}
Tento uzel je jedením ze dvou, který se používá pro definici modelu terénu. Skládá se ze sítě, nad kterou se definují výšky. Tento model se někdy také označuje jako rastrový model terénu. Plocha je standardně umístěna do roviny XZ, tedy tam, kde je očekávána pevná zem. Do parametru height se zapisuje pole výšek nad jednotlivými vrcholy sítě. Pomocí parametru creaseAngle se dá nastavit zaoblení terénu. Tak definujeme mezní úhel, při kterém jsou dvě plochy spojeny hladce.
Definice geometrie a vzhledu skupiny ploch.
IndexedFaceSet {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFNode |
color |
NULL |
Seznam barev v uzlu Color |
exposedField |
SFNode |
coord |
NULL |
Seznam vrcholů v uzlu Coordinate |
exposedField |
SFNode |
normal |
NULL |
Seznam normál v uzlu Normal |
exposedField |
SFNode |
texCoord |
NULL |
Seznam souřadnic textury v uzlu TextrueCoordinate |
field |
SFBool |
ccw |
TRUE |
Plochy jsou zadávány proti směru hodinových ručiček |
field |
MFInt32 |
colorIndex |
[] |
Posloupnost indexu barev pro jednotlivé vrcholy nebo plochy |
field |
SFBool |
colorPerVertex |
TRUE |
Barvy v parametru colorIndex se vztahují na vrcholy (jinak na plochy) |
field |
SFBool |
convex |
TRUE |
Všechny plochy jsou konvexní |
field |
MFInt32 |
coordIndex |
[] |
Posloupnost indexů vrcholů ploch zakončená -1 |
field |
SFFloat |
creaseAngle |
0 |
Mezní úhel, do kterého jsou dvě sousední plochy považovány za oblé |
field |
MFInt32 |
normalIndex |
[] |
Posloupnost indexů normál |
field |
SFBool |
normalPerVertex |
TRUE |
Normály v parametru normalIndex se vztahují na vrcholy (jinak na plochy) |
field |
SFBool |
solid |
TRUE |
Plochy se zobrazují jednostranně |
field |
MFInt32 |
texCoordIndex |
[] |
Posloupnosti indexů souřadnic textury pro jednotlivé vrcholy |
eventIn |
MFInt32 |
set_colorIndex |
|
|
eventIn |
MFInt32 |
set_coordIndex |
|
|
eventIn |
MFInt32 |
set_normalIndex |
|
|
eventIn |
MFInt32 |
set_texCoordIndex |
|
|
}
Další uzel pro definici obecné plochy pomocí množiny ploch. Pomocí malých plošek se definuje libovolné těleso nebo plocha. Každá plocha se definuje pomocí pořadových čísel vrcholů. Tím se docílí úspory paměti.
Definice souřadnic bodů v prostoru.
Coordinate {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFVec3f |
point |
[] |
Seznam bodů |
}
Definice bodů v rovině, které slouží jako vztažné body pro nanesení textury v ploškových geometrických útvarech.
TextureCoordinate {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFVec2f |
point |
[] |
Seznam bodů v rovině |
}
Tento uzel jsem použil pro správné nanesení textury mapy v modelu vytvořeném uzlem IndexedFaceSet. Implicitní mapování textury na model vytvořený uzlem ElevationGrid je správné, a proto se při něm nemusí tento uzel používat.
Nastavení posunu, otočení a měřítka rovinné textury.
TextureTransform {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFVec2f |
center |
0 0 |
Poloha vztažného bodu |
exposedField |
SFFloat |
rotation |
0 |
Úhel otočení vzhledem ke vztažnému bodu |
exposedField |
SFVec2f |
scale |
1 1 |
Změna měřítka |
exposedField |
SFVec2f |
translation |
0 0 |
Posunutí |
}
Při nanášení textury na model vytvořený uzlem ElevationGrid je implicitně nanesená textura zrcadlově převrácená (vztažný bod výškové mapy je v levém horním rohu a vztažný bod textury v levém dolním rohu), proto je třeba texturu převrátit pomocí parametru scale (scale 1 -1).
Určení obrázku a jeho případného opakovaného nanášení jako textury na povrch.
ImageTexture {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFString |
url |
[] |
Seznam adres s umístěním obrázku |
field |
SFBool |
repeatS |
TRUE |
Povolení opakování textury ve vodorovném směru |
field |
SFBool |
repeatT |
TRUE |
Povolení opakování textury ve svislém směru |
}
V tomto uzlu se definuje textura mapy, která se potom nanáší na prostorový model. Obrázek může být ve formátu JPEG a PNG. Některé prohlížeče podporují také formát GIF a vektorový formát CGM.
Nastavení společné polohy, měřítka a otočení potomků.
Transform {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFVec3f |
center |
0 0 0 |
Vztažný bod, vůči kterému se provádí otočení |
exposedField |
MFNode |
children |
[] |
Seznam potomků |
exposedField |
SFRotation |
rotation |
0 0 1 0 |
Osa a úhel otočení |
exposedField |
SFVec3f |
scale |
1 1 1 |
Změna měřítka ve směru os |
exposedField |
SFRotation |
scaleOrientation |
0 0 1 0 |
Osa a úhel otočení provedeného před změnou měřítka |
exposedField |
SFVec3f |
translation |
0 0 0 |
Posunutí |
field |
SFVec3f |
bboxCenter |
0 0 0 |
Souřadnice středu pomocné obálky ve tvaru kvádru |
field |
SFVec3f |
bboxSize |
-1 -1 -1 |
Velikost pomocné obálky |
eventIn |
MFNode |
addChildren |
|
|
eventIn |
MFNode |
removeChildren |
|
|
}
Při tvorbě modelu jsem používal tento uzel hlavně pro spojování jednotlivých modelů do jednoho, nebo posunutí jednotlivých částí modelu vedle sebe.
Provázání definice geometrického tvaru a vlastností povrchu jednoho objektu.
Shape {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFNode |
appearance |
NULL |
Vzhled povrchu objektu |
exposedField |
SFNode |
geometry |
NULL |
Geometrie objektu |
}
Přiřazení barevných vlastností a textury, případně jejich kombinace, geometrickému objektu, který je sourozencem tohoto uzlu.
Appearance {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFNode |
material |
NULL |
Barevné vlastnosti povrchu |
exposedField |
SFNode |
texture |
NULL |
Textura na povrchu |
exposedField |
SFNode |
textureTransform |
NULL |
Umístění a natočení textury |
}
Důležitý uzel pro nanesení textury povrchu a definování vlastností odrazu světla od povrchu, které se zadávají v parametru material uzlem Material.
Sdružení více uzlů do jednoho stromu.
Group {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFNode |
children |
[] |
Seznam potomků |
field |
SFVec3f |
bboxCenter |
0 0 0 |
Souřadnice středu pomocné obálky ve tvaru kvádru |
field |
SFVec3f |
bboxSize |
-1 -1 -1 |
Definice délky stran pomocné obálky ve tvaru kvádru. |
eventIn |
MFNode |
addChildren |
|
|
eventIn |
MFNode |
removeChildren |
|
|
}
Variabilní reprezentace jednoho objektu v různých detailech přesnosti.
LOD {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFNode |
level |
[] |
Seznam reprezentací modelu s postupně klesající přesností |
field |
SFVec3f |
center |
0 0 0 |
Bod, vůči kterému se měří vzdálenost objektu od avatara |
field |
MFFloat |
range |
[] |
Rostoucí posloupnost vzdáleností indikujících přepnutí reprezentace |
}
Pomocí tohoto uzlu se dá dosáhnout zrychlení zobrazování modelu na počítači. Využívá se toho, že vzdálenější objekty nepotřebují být zobrazeny tak detailně jako objekty v popředí. Jestliže definujeme tentýž objekt s různým stupněm detailu, můžeme potom definovat, v jaké vzdálenosti od avatara má být zobrazen jaký model.
Vložení dalšího světa nebo objektu z vnějšího souboru do aktuálního světa.
Inline {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
MFString |
url |
[] |
Seznam adres, kde se nachází soubor s virtuálním světem |
Field |
SFVec3f |
bboxCenter |
0 0 0 |
Velikost pomocné obálky |
Field |
SFVec3f |
bboxSize |
-1 -1 -1 |
Střed pomocné obálky |
}
Tento uzel se používá k vložení virtuálního světa. Vložený soubor musí být platným virtuálním světem. Umožňuje rozdělit větší svět na několik menších souborů, což zrychluje zobrazení virtuálního světa. Svět v aktuálním souboru může být již zobrazen, ale zároveň se načítají z vnějších souborů jeho další části.
Nastavení barevných charakteristik povrchu podle schopnosti odrazu barevných složek nepřímého a přímého světla. Nastavení průhlednosti nebo vlastní zářivosti objektu.
Material {
typ parametru |
typ dat |
název |
iniciální hodnota |
význam |
exposedField |
SFFloat |
ambientIntensity |
0.2 |
Světlost povrchu získaná odrazem od okolního světa bez ohledu na úhel dopadu |
exposedField |
SFColor |
diffuseColor |
0.8 0.8 0.8 |
Barva povrchu ovlivněná úhlem dopadu světla na povrch |
exposedField |
SFColor |
emissiveColor |
0 0 0 |
Vyzařovaná barva, luminiscence |
exposedField |
SFFloat |
shininess |
0.2 |
Rozmazané nebo ostré odlesky od přímých zdrojů světla |
exposedField |
SFColor |
specularColor |
0 0 0 |
Barva světla odraženého od přímých zdrojů světla |
exposedField |
SFFloat |
transparency |
0 |
Průhlednost |
}
Nemá smysl nastavovat všechny parametry najednou. Barva povrchu je ovlivňována všemi světelnými zdroji a mlhou.