Popis tvorby

V následujících několika stranách bude vysvětlen postup tvorby. Budu se držet obecných postupů skládání virtuální scény více než přesného popisu. Přesný popis by byl příliš rozvleklý. A k pochopení jak to celé pracuje snad i zbytečný. Pokud scénu tvoříte visuálními prostředky jsou jednotlivé vlastnosti s objektem logicky svázány a nevidíte tedy konkrétní VRML výstup. Je však dobré vědět jak jsou prezentovány provedené operace. Doporučuji tedy občasnou konsultaci s přesnou specifikací VRML. Popis SVR je v helpu modelovacího nástroje.
Základem celé scéný je tzv. RootObject. Je to takový pevný bod. Ostatní objekty jsou potomky tohoto (bráno ve smyslu vlastnictví). Každý objekt ma svůj lokální souřadnicový systém. K němu jsou relativně vztaženy souřadnice či rotace jeho potomků. klikaVlastník tzv. Group objekt je zodpovědný za oblast všech svých potomků. Obklopuje je hraničním obalem (bouding cube). Svůj vastní hraniční obal má samozřejmě každý visuální objekt. Slouží k přibližnému určení velikosti např. k detekci kolizí mezi objekty.umyvadlo Visuální objekt je tvořen množinou stěn (face), které jsou dány svými určujícími body. Není-li dáno jinak je stěna poloprůhledná. Stěny mají svoji barvu patřící ke tvaru objektu (shape). Ta může být předefinována pro každou kopi tohoto tvaru. Geometrické vlastnosti tvaru mohou být dynamicky měněny příslušným programem. Dalším důležitým prostředkem jsou textury. Ty je možno nanášet na libovolnou stěnu objektu. (viz Scéna např. okna, tabule). Nebo nanášet dynamicky (viz Třetí zapnutý monitor). Poziční a jiné parametry objektu je taktéž možno měnit dynamicky ( např. židle, monitory). Otázka zda zvolit texturu nebo danou plochu vymodelovat pomocí stěn, není triviální. Je výsledkem kompromisu mezi velikostí souboru a kvalitou zobrazení. Jsou-li rozměry příliš malé a detailů hodně je lepší použít texturu. Nejpohodlnější je však skládání složitějších objektů z několika jednodušších (např. klika u dveří).
Snad nejpůsobivější efekty vzníkají působením světla. To teprve dává scéně to pravé kouzlo reality. Avšak efektů jak toho dosáhnout je více. Nutno dodat, že všechno jsou to jen jakési náhražky. Lze sice spočítat osvětlení dle platných fyzikálních zákonů, avšak výpočet trvá několik hodin. Můžeme si tedy zvolit dva způsoby. A to,že na osvětlené plochy naneseme texturu, která již má dané světelné efekty. Získáme tak velmi přesvědčivý obraz třeba i se světelným odrazem. Druhý způsob je však přirozenější. Danému objektu přiřadíme světelné barvy, tj. námi požadovanou nejsvětlejší barvu pro každou stěnu a přídáme světelný zdroj. Ten se chová opravdu jako skutečný. Má světelnou intensitu, úhel světelného kužele, ostrost dopadeného paprsku nebo-li ostrost světelného přechodu a samozřejmě útlum s přibývající vzdálenstí. Použito ve scéně. Bohužel tento způsob má jednu vadu. Neexistuje stín předmětů. Světlo prochází skrz. Musíte tedy vyvážit dané parametry tak, aby světlo nesvítilo tam kam nemá. A pokud potřebujete stín tak si ho musíte vyrobit. Tam kde světlo nesvítí renderovací jednotka vezme nejtmavší odstín dané barvy. Ostatní části plochy interpoluje až do odstínu nejsvětlejšího. Z důvodu podivné interpolace velkých stěn, se jeví vhodné rozložit je na vetší počet menších stěn.
Pokud je na dané ploše textura projeví se světelné efekty i na ní.
A jak se scéna zobrazuje pozorovateli? Pro tento účel máme tzv. pohledy (View). Existuje rozdělení dle toho kým nebo čím zrovna jsme. To má vliv na počet os volnosti, kterými se můžeme pohybovat.( Např. auto vpřed, vzad člověk navíc úkrok do boku, zaklánětnebo otáčet.) Dále je důležité jsme-li hmotný či nehmotný objekt. To jest můžeme-li procházet stěnami. Jak jste si jistě všimli, jste člověk, alespoň v této scéně.:-) Byli sice hlasy po procházení stěnami, ale považoval jsem to za úchylku nejmenovaných jedinců. ;-)
Co se interakce s uživatelem týče o tu se stará SCL program přidružený ke konkrétnímu objektu. Má přístup ke všem jeho atributům. Syntaxe včetně příkladů je dobře popsána v manuálu. Toto je kód vypinačů.
resume (0, 1);
if (activate (me, 0)) { 
  if (mouseb) // došlo ke stisku myši
    waitf; 
  if (lson? ('Zarivka[5]')) { // svítí světlo?
    lsoff ('Zarivka[5]'); // vypnout světlo
    ambient-=5; // zmenši rozptýlené světlo
  }
  else {
    lson ('Zarivka[5]');
    ambient+=5;
  }
  clrtrig (me, 0);
}
Programování v SCL je pohodlné a jednoduché, ale v budoucnu bych předpokládal masovější využití Javy.
O komunikaci s okolním světem se postará hypertextový odkaz, svázaný s daným objektem. (viz Klávesníce zaplých monitorů)

Samozřejmě, že všechny možnosti nebyli ani zdaleka popsány. Ale to nebylo ani účelem, jístě si další kouzla zkusíte sami.