Obsah
1. Materiály a světelné zdroje ve VRML
2. Typy světelných zdrojů a způsob výpočtu osvětlení
3. Bodový světelný zdroj
4. První demonstrační příklad: použití bodového světelného zdroje
5. Směrový světelný zdroj
6. Druhý demonstrační příklad: použití směrového světelného zdroje
7. Reflektorový světelný zdroj
8. Třetí demonstrační příklad: použití reflektoru jako zdroje světla
1. Materiály a světelné zdroje ve VRML
Při práci s formátem VRML je, podobně jako v mnoha dalších formátech i grafických knihovnách, barva objektů i výsledných pixelů na obrazovce reprezentovaná trojicí barvových složek. Frekvence těchto barvových složek byla vybrána tak, aby co nejvíce korespondovala s rozdílovými frekvencemi, na které jsou citlivé barvové senzory v lidském oku a současně aby bylo možné pouze pomocí těchto tří složek vyjádřit jakoukoli viditelnou barvu. Asi nebudete příliš překvapeni, když řeknu, že se jedná o červenou barvu (red), zelenou barvu (green) a barvu modrou (blue).
Vhodnou kombinací různých intenzit těchto tří barvových složek lze vytvořit téměř jakoukoli viditelnou barvu – to mimochodem hodně vypovídá o vlastnostech oka, které je při sledování počítačem generovaného obrazu „klamáno“ minimálně ve třech oblastech: používá se rastrový obraz místo kontinuálního popisu, barva je reprezentována směsicí tří frekvencí místo „kontinuální“ škály a celý obraz je periodicky obnovován s poměrně nízkou frekvencí, což nutně znamená, že při použití např. CRT technologie musí poblikávat. Způsob reprezentace barvy pomocí tří barevných složek R, G a B nazýváme barvový model RGB (RGB Color Model, RGB Color Space)).
Ve VRML se při definici vlastností materiálů, barvy světel i mozaiky textury používá právě barvový model RGB, kde jednotlivé barvové složky jsou reprezentovány číslem v pohyblivé řádové čárce o rozsahu 0,0–1,0. Celá trojice RGB je představována datovým typem SFColor. Je zajímavé, že při skriptování se tento datový typ chová jako objekt, u kterého lze načítat či naopak nastavovat jak jednotlivé barvové složky (nazvané r, g a b), tak provádět převody na řetězec (metoda toString()) či na barvový model HSV (metody setHSV() a getHSV()).
Díky použití hodnot v pohyblivé řádové čárce jsme tedy oproštěni od implementačních detailů konkrétní grafické karty, protože nám může být jedno, jestli je každá barvová složka uložena na jednom bytu, dvou bytech či například dvanácti bitech (ovšem moderní GPU se už oprostily od používání celočíselné aritmetiky a implementují nějakou z forem formátů s pohyblivou řádovou čárkou, čímž se mj. zvětšila dynamika reprezentovatelných hodnot). O způsobu definic materiálů těles jsme si základní informace řekli v předchozí části tohoto seriálu, dnes se podíváme především na způsob vytváření světel, které mnohdy tvoří důležitou součást celé 3D scény – pouze se správně zvoleným osvětlením získá scéna patřičnou hloubku.
Zajima vas tema VRML?
2. Typy světelných zdrojů a způsob výpočtu osvětlení
Ve VRML se, podobně jako v grafické knihovně OpenGL, pro výpočet barvy objektů ve scéně používá takzvaný Phongův osvětlovací model. Tento model se snaží co nejvíce zjednodušit fyzikální a optické vlastnosti reálného světla tak, aby výpočty osvětlení byly rychlé a aby se výsledný obrázek dostatečně blížil realitě. V Phongově osvětlovacím modelu se světlo, které na určitý objekt dopadá a následně se od něj odráží, rozkládá na tři světelné složky.
První složkou je takzvaná ambientní složka (ambient). Tato složka vyjadřuje okolní světlo, které není přímo vyzařováno ze žádných světelných zdrojů. Toto světlo vzniká tak, že se paprsek jdoucí z nějakého zdroje několikrát odrazí (například od stěn v místnosti), a není tedy jasně patrný směr, odkud toto světlo přichází. V Phongově osvětlovacím modelu je toto světlo považováno za všesměrové, tj. osvětluje objekt ze všech směrů nezávisle na poloze a orientaci zdrojů světla. Ukázka tělesa osvětleného pouze ambientní složkou světla je zobrazena na prvním obrázku. Z tohoto obrázku je patrné, že nezávisle na 3D tvaru objektu se tento objekt jeví jako plošný, ztrácíme tedy prostorový vjem. S touto složkou světla jsme se již setkali při specifikaci vlastností materiálu – jednalo se o atribut ambientIntensity, stejný atribut je použitý i při definici zdrojů světla.
Obrázek 1: Těleso, které odráží pouze ambientní složku světla
Druhou složkou světla je složka difúzní (diffuse). Tato světelná složka vyjadřuje světlo, které na povrch objektu dopadá z konkrétního bodového, směrového či reflektorového světelného zdroje a od povrchu objektu se odráží do všech směrů se stejnou intenzitou. Pomocí difúzní složky lze tedy vytvářet matné materiály (dřevo, pískovec, matná umělá hmota). V Phongově osvětlovacím modelu jsou výpočty difúzní složky světla upraveny tak, že výsledná barva difúzní složky je závislá pouze na vzájemné orientaci světelného zdroje a objektu. Poloha pozorovatele (kamery) nemá vliv na barvu ani intenzitu difúzní složky, čehož se dá využít například při urychlování vykreslovacích algoritmů. Ukázka tělesa, které je osvětlené pouze difúzní složkou světla, je zobrazena na druhém obrázku. I s tímto typem jsme se již ve VRML minule setkali – jednalo se o atribut materiálu nastavovaný pomocí diffuseColor.
Obrázek 2: Těleso, které odráží pouze difúzní složku světla
Poslední světelnou složkou použitou v Phongově osvětlovacím modelu jsou odlesky (specular). Odlesky vznikají ve chvíli, kdy na povrch tělesa dopadá paprsek ze zdroje světla a tento paprsek se od povrchu odráží podle známého zákona o odrazu (to mj. znamená, že musíme znát normálu k povrchu, což je u základních geometrických objektů zaručeno). Ve skutečnosti se paprsek nikdy neodrazí ideálně, vždy nastává určité rozptýlení. Phongův osvětlovací model tento fenomén modeluje tak, že se stanoví koeficient změny intenzity odraženého světla podle úhlu odklonu počítaného odraženého paprsku od paprsku ideálně odraženého. Vektory těchto dvou paprsků se vynásobí a výsledek se umocní zadaným koeficientem. Ukázka tělesa se zobrazenými odlesky (resp. pouze s odlesky) je zobrazena na třetím obrázku. I tuto vlastnost materiálu již umíme nastavit pomocí atributů specularColor a shininess.
Obrázek 3: Těleso, které odráží pouze odlesky
Při vykreslování reálných těles se téměř nikdy nepoužívá pouze jedna světelná složka, vždy se jedná o jejich vzájemnou kombinaci (to je ostatně patrné i z předchozích obrázků, z nichž ani jeden nevypadal přirozeně). Na dalších třech obrázcích jsou vykreslena tatáž tělesa (konkrétně světoznámá Newellova čajová konvice) osvětlená některou kombinací světelných složek. Na čtvrtém obrázku je kombinována ambientní a difúzní světelná složka, což je často používaná kombinace, protože výpočet obou světelných složek je poměrně rychlý (narozdíl od výpočtu odlesků, kde se musí provádět větší množství aritmetických operací – ovšem zdaleka ne všechny prohlížeče VRML automaticky vypínají výpočet odlesků, takže vynechání této složky je poněkud diskutabilní). Na pátém obrázku je kombinace ambientní složky s odlesky a na šestém obrázku jsou použity všechny tři světelné složky. Tento obrázek se také nejvíce blíží realitě.
Obrázek 4: Těleso osvětlené ambientní a difúzní složkou světla
Obrázek 5: Těleso osvětlené ambientní složkou světla s odlesky
Obrázek 6: Těleso osvětlené difúzní složkou světla s odlesky
Obrázek 7: Těleso osvětlené ambientní i difúzní složkou světla s odlesky
Ve VRML je možné použít tři typy světel. Jedná se o bodový světelný zdroj, který se podobá idealizované kulaté žárovce, směrový světelný zdroj, který odpovídá slunečnímu záření (to k nám přichází z takové dálky, že se paprsky zdají být rovnoběžné) a nakonec světelný zdroj, který se snaží napodobit reflektor. V jedné scéně je možné použít více světel z nichž každé může být různého typu či mít nastaveny odlišné vlastnosti. Světla je možné ovládat programově pomocí skriptů či je zapínat a vypínat přes takzvané senzory.
Při práci s více světly je důležité si uvědomit, že větší množství povolených (tj. definovaných) světel může znatelně zpomalovat vykreslování celé scény. Je to způsobeno faktem, že především starší grafické akcelerátory nepodporovaly výpočty osvětlení, a tak se osvětlení počítalo programově s využitím výpočetního výkonu hlavního procesoru. Vzhledem k tomu, že výpočetní náročnost výpočtu osvětlení lineárně roste s počtem zapnutých světel, může větší počet světel zatížit hlavní procesor, který pak nestačí dodávat data grafickému akcelerátoru. Moderní grafické akcelerátory, které obsahují GPU, již podporují výpočet osvětlení přímo na grafické kartě, takže se výkon hlavního procesoru dá využít na důležitější věci (například odstranění neviditelných částí scén). Ovšem i tehdy může větší počet světel rendering scény zpomalit.
3. Bodový světelný zdroj
Nejjednodušší (alespoň pro pochopení, programová implementace je poměrně složitá) je bodové světlo. Toto světlo si můžeme představit například jako idealizovanou žárovku umístěnou v prostoru, která vyzařuje světlo na všechny strany se stejnou intenzitou. Ve VRML se tento typ světla nastavuje uzlem nazvaným příhodně PointLight, který může mít následující atributy:
Atribut | Význam atributu |
---|---|
location | umístění světla (vektor) |
on | zapnutí či vypnutí světla (booleovská hodnota) |
color | barva světla |
intensity | intenzita difúzní složky 0..1 |
ambientIntensity | intenzita ambientní složky 0..1 |
attenuation | dosvit vyjádřený trojicí hodnot |
radius | maximální dosvit zadaný v metrech |
Bodové světlo je umístěno v prostoru a svítí stejnou intenzitou do všech stran, ovšem pouze do vzdálenosti definované atributem radius. Míra poklesu osvětlení je dána trojicí hodnot předávaných v atributu attenuation. Dosvit je vypočten podle vzorce: 1 / (attenuation[0] + attenuation[1]×r + attenuation[2]×r2), kde r je vzdálenost plošky objektu od zdroje světla.
4. První demonstrační příklad: použití bodového světelného zdroje
V prvním demonstračním příkladu je ukázáno použití bodového světelného zdroje. Nejprve je v uzlu NavigationInfo vypnuto automatické světlo, které se pohybuje současně s pozorovatelem (headlight). To by nás zbytečně mátlo. Potom je vytvořen světelný zdroj na souřadnicích [2, –2, 0] a vzdáleností dosvitu 16 metrů. Úbytek světla není nastaven (1/1=1), proto se jeho intenzita se vzdáleností nemění. Ambientní složka světla, která ovlivňuje způsob zobrazení částí povrchu odkloněných od zdroje, je nastavena na 60%.
Obrázek 8: Screenshot prvního demonstračního příkladu
#VRML V2.0 utf8
# verze 2.0 vyzaduje kodovani UTF-8
# ---------------------------------------------------------
# Prvni demonstracni priklad trojrozmerne sceny
# popsane jazykem VRML 2.0
# Priklad je soucasti serialu "Graficke formaty"
# (/serialy/graficke-formaty/)
# vychazejiciho na Root.cz (http://www.root.cz)
#
# Zmena materialu povrchu a nastaveni bodoveho osvetleni
# ---------------------------------------------------------
# metainformace o trojrozmerne scene jako celku
# (mohou ji pouzit jak prohlizece, tak i indexovaci roboti)
WorldInfo {
title "Prvni 3D scena s nekolika objekty a bodovym svetelnym zdrojem"
info ["Autor: Pavel Tisnovsky, 2007"
"sireno pod licenci GPL "
"(zde mohou byt dalsi texty"]
}
# dulezite: musime vypnout automaticky svetelny zdroj
NavigationInfo {
headlight FALSE
}
# bodovy svetelny zdroj
PointLight {
color 1.0 1.0 1.0 # barva svetla
intensity 1.0 # intenzita bodoveho svetla
ambientIntensity 0.6 # intenzita vsesmeroveho svetla
location 2 -2 0 # pozice svetelneho zdroje
radius 16 # polomer dosvitu
attenuation 1 0 0 # ubytek svetla (dosvit):
# 1 / (attenuation[0] + attenuation[1]*r + attenuation[2]*r2)
}
# prvni objekt vytvoreny z difuzniho "plastu"
Transform {
translation -2 0 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# material zcela bez lesku
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 0.0 0.0 0.0
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# druhy objekt pouziva material s odlesky
Transform {
translation 0 0 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 1.0 1.0 1.0
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# treti objekt pouziva material s odlesky se zmenenou odrazivosti
Transform {
translation 2 0 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
# zmena odrazivosti objektu (0.0-1.0)
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 1.0 1.0 1.0
shininess 0.8
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# ctvrty objekt je polopruhledny
Transform {
translation 0 -2 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
# zmena pruhlednosti objektu
material Material {
diffuseColor 1.0 0.0 0.5
specularColor 1.0 1.0 1.0
transparency 0.5
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# ---------------------------------------------------------
# finito
# ---------------------------------------------------------
Obrázek 9: Druhý screenshot prvního demonstračního příkladu
5. Směrový světelný zdroj
Směrový světelný zdroj, kterým je možné simulovat například sluneční záření, je kupodivu výpočetně jednodušší, než bodový světelný zdroj. Také jeho specifikace je snadnější, neboť tento světelný zdroj nemá definován žádný útlum ani maximální vzdálenost dosvitu. Na rozdíl od bodového zdroje se nespecifikuje pozice samotného světla, ale pouze směr paprsků, které jsou považovány za rovnoběžné a nemají žádný útlum. Mezi možné atributy, které lze nastavit, patří:
Atribut | Význam atributu |
---|---|
on | zapnutí či vypnutí světla (booleovská hodnota) |
color | barva světla |
intensity | intenzita difúzní složky 0..1 |
ambientIntensity | intenzita ambientní složky 0..1 |
direction | směr osvětlení zadaný vektorem |
6. Druhý demonstrační příklad: použití směrového světelného zdroje
Ve druhém demonstračním příkladu je poměrně přímočarým způsobem ukázáno, jak se používá směrový zdroj světla. Samotné parametry světla, tj. barva, intenzita difúzní složky i intenzita ambientní složky, zůstávají nastavené na stejnou hodnotu. Směr paprsků je kolmo dolů pomocí vektoru (0, 0, –1), což je současně poslední parametr směrového světelného zdroje. Do scény je navíc oproti prvnímu modelu přidaná i šedá plocha, kterou je možné odstranit zakomentováním všech řádků s definicí posledního objektu.
Obrázek 10: Screenshot druhého demonstračního příkladu
#VRML V2.0 utf8
# verze 2.0 vyzaduje kodovani UTF-8
# ---------------------------------------------------------
# Druhy demonstracni priklad trojrozmerne sceny
# popsane jazykem VRML 2.0
# Priklad je soucasti serialu "Graficke formaty"
# (/serialy/graficke-formaty/)
# vychazejiciho na Root.cz (http://www.root.cz)
#
# Zmena materialu povrchu a nastaveni smeroveho osvetleni
# ---------------------------------------------------------
# metainformace o trojrozmerne scene jako celku
# (mohou ji pouzit jak prohlizece, tak i indexovaci roboti)
WorldInfo {
title "Druha 3D scena s nekolika objekty a smerovym svetelnym zdrojem"
info ["Autor: Pavel Tisnovsky, 2007"
"sireno pod licenci GPL "
"(zde mohou byt dalsi texty"]
}
# dulezite: musime vypnout automaticky svetelny zdroj
NavigationInfo {
headlight FALSE
}
# smerovy svetelny zdroj
DirectionalLight {
color 1.0 1.0 1.0 # barva svetla
intensity 1.0 # intenzita smeroveho svetla
ambientIntensity 0.6 # intenzita vsesmeroveho svetla
direction 0 0 -1 # smer osvetleni
}
# prvni objekt vytvoreny z difuzniho "plastu"
Transform {
translation -2 0 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# material zcela bez lesku
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 0.0 0.0 0.0
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# druhy objekt pouziva material s odlesky
Transform {
translation 0 0 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 1.0 1.0 1.0
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# treti objekt pouziva material s odlesky se zmenenou odrazivosti
Transform {
translation 2 0 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
# zmena odrazivosti objektu (0.0-1.0)
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 1.0 1.0 1.0
shininess 0.8
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# ctvrty objekt je polopruhledny
Transform {
translation 0 -2 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
# zmena pruhlednosti objektu
material Material {
diffuseColor 1.0 0.0 0.5
specularColor 1.0 1.0 1.0
transparency 0.5
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
# paty doplnkovy objekt - seda plocha (je mozne "zapoznamkovat")
Transform {
scale 6 6 0.5
translation 0 0 -2
children [
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
# zmena pruhlednosti objektu
material Material {
diffuseColor 0.6 0.6 0.6
specularColor 1.0 1.0 1.0
shininess 0.8
}
}
# tvar objektu - geometricke informace
geometry Box {
}
}
]
}
# ---------------------------------------------------------
# finito
# ---------------------------------------------------------
Obrázek 11: Další screenshot druhého demonstračního příkladu
Obrázek 12: Screenshot druhého demonstračního příkladu po přidání podložky
7. Reflektorový světelný zdroj
Výpočetně nejnáročnější je reflektorový světelný zdroj. U tohoto zdroje je možné zadávat velké množství parametrů. Kromě již známých koeficientů, jakými jsou barva světla a jeho intenzity, se nastavují parametry vlastního světelného kužele. Mezi tyto parametry patří vrcholový úhel kužele, ve kterém má světlo nejvyšší (konstantní) intenzitu, vrcholový úhel většího kužele, kde intenzita směrem k jeho okraji postupně klesá, maximální dosvit a také tři složky, kterými je specifikován pokles dosvitu (podobně jako u bodového zdroje světla). Tento světelný zdroj je tedy jakousi kombinací bodového a směrového zdroje, ke kterým přidává další unikátní vlastnosti (atributy).
Atribut | Význam atributu |
---|---|
location | umístění světla (třísložkový vektor) |
direction | směr osvětlení zadaný vektorem |
on | zapnutí či vypnutí světla (booleovská hodnota) |
color | barva světla |
intensity | intenzita difúzní složky 0..1 |
ambientIntensity | intenzita ambientní složky 0..1 |
attenuation | dosvit vyjádřený trojicí hodnot |
radius | maximální dosvit zadaný v metrech |
cutOffAngle | vrcholový úhel světelného kužele (fyzické omezení reflektoru) |
beamWidth | vrcholový úhel kužele, ve kterém má světlo konstantní maximální intenzitu |
8. Třetí demonstrační příklad: použití reflektoru jako zdroje světla
Ve třetím demonstračním příkladu je ukázána definice reflektorového zdroje světla, přičemž pro jednoduchost nejsou zadány všechny jeho atributy. Samotný prohlížeč VRML souborů si totiž za nezadané atributy dosadí hodnoty specifikované normou. Také je ukázáno, jak lze vytvořit několik objektů se stejnými vlastnostmi pomocí příkazů DEF a USE. Všimněte si, že dva nejkrajnější objekty leží těsně POD světelným zdrojem, takže nejsou plně osvětleny.
Obrázek 13: Screenshot třetího demonstračního příkladu
#VRML V2.0 utf8
# verze 2.0 vyzaduje kodovani UTF-8
# ---------------------------------------------------------
# Treti demonstracni priklad trojrozmerne sceny
# popsane jazykem VRML 2.0
# Priklad je soucasti serialu "Graficke formaty"
# (/serialy/graficke-formaty/)
# vychazejiciho na Root.cz (http://www.root.cz)
#
# Zmena materialu povrchu a nastaveni smeroveho osvetleni
# ---------------------------------------------------------
# metainformace o trojrozmerne scene jako celku
# (mohou ji pouzit jak prohlizece, tak i indexovaci roboti)
WorldInfo {
title "Treti 3D scena s nekolika objekty a reflektorovym svetelnym zdrojem"
info ["Autor: Pavel Tisnovsky, 2007"
"sireno pod licenci GPL "
"(zde mohou byt dalsi texty"]
}
# dulezite: musime vypnout automaticky svetelny zdroj
NavigationInfo {
headlight FALSE
}
# reflektorovy svetelny zdroj
SpotLight {
color 1.0 1.0 1.0 # barva svetla
intensity 1.0 # intenzita reflektoroveho svetla
ambientIntensity 0.6 # intenzita vsesmeroveho svetla
location 0 -4 5 # stred reflektoru
direction 0 1 -1 # smer natoceni reflektoru
beamWidth 1.0 # sirka kuzele tvoreneho paprsky o nejvetsi intenzite
radius 2 # dosah osvetleni zadany v metrech
}
# skupina stejnych objektu
Group {
children [
Transform {
translation 0 -3 0
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
DEF SPHERE Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
material Material {
diffuseColor 0.0 0.5 1.0
specularColor 1.0 1.0 1.0
}
}
# tvar objektu - geometricke informace
geometry Sphere {
}
}
]
}
Transform {
translation 0 -1 0
children [
USE SPHERE
]
}
Transform {
translation 0 1 0
children [
USE SPHERE
]
}
Transform {
translation 0 3 0
children [
USE SPHERE
]
}
Transform {
translation 2 -4 0
children [
USE SPHERE
]
}
Transform {
translation 2 -2 0
children [
USE SPHERE
]
}
Transform {
translation 2 0 0
children [
USE SPHERE
]
}
Transform {
translation 2 2 0
children [
USE SPHERE
]
}
Transform {
translation 2 4 0
children [
USE SPHERE
]
}
Transform {
translation -2 -4 0
children [
USE SPHERE
]
}
Transform {
translation -2 -2 0
children [
USE SPHERE
]
}
Transform {
translation -2 0 0
children [
USE SPHERE
]
}
Transform {
translation -2 2 0
children [
USE SPHERE
]
}
Transform {
translation -2 4 0
children [
USE SPHERE
]
}
]
}
# paty doplnkovy objekt - seda plocha (je pozne "zapoznamkovat")
Transform {
scale 6 6 0.5
translation 0 0 -2
children [
# vytvoreni jednoducheho objektu (koule)
# s puvodnim nastavenim vsech parametru
Shape {
# vzhled objektu - negeometricke informace
appearance Appearance {
# odlesky jsou ciste bile (typicka hodnota)
# zmena pruhlednosti objektu
material Material {
diffuseColor 0.7 0.7 0.7
specularColor 1.0 1.0 1.0
shininess 0.8
}
}
# tvar objektu - geometricke informace
geometry Box {
}
}
]
}
# ---------------------------------------------------------
# finito
# ---------------------------------------------------------
Obrázek 14: Další screenshot třetího demonstračního příkladu