Raytracing na 7 MHzIng. Peter Macsánszky
Ani nie je tomu tak dávno, keď sa AMIGA 500 s 1 MB pamäti považovala za grafickú
stanicu, na ktorej bolo možné spustiť Imagine alebo Real 3D a produkovať
fascinujúce obrázky a animácie. Teraz na to iba mnohí mávnu hovoriac, že na
takejto slabej konfigurácii nie je možné vytvoriť dobré obrázky. Samozrejme,
nemajú pravdu. O kvalitách výsledného obrázku v prvom rade rozhoduje fantázia autora a nie
výkon počítača. Je pravda, že niekedy sme museli čakať na obrázok aj deň-dva,
ale to vôbec neuberalo na jeho kvalite. Skôr naopak! Malý počítač donútil
človeka premýšľať, navrhovať a kombinovať tak, aby čo najoptimálnejšie využil
možnosti strofa.
Mnohí z Vás hlavne z finančných dôvodov si ešte stále nemôžu dovoliť kúpu
výkonnejších počítačov. Im je určený nasledovný článok, v ktorom sa pokúsim
tlmočiť vlastné skúsenosti získané počas 4 rokoch na Amige 500 s raytracingovými
programami.
Prvá okolnosť, ktorá limituje naše možnosti, je pamäť. Jeho nedostatok je v
mnohých prípadoch následkom nepremyslenej. koncepcie. Šikovnou organizáciou je
možné ušetriť veľa miesta. A teraz niekoľko trikov, ktoré platia pre všetky
raytracingové programy.
Na scéne majme vždy len tie objekty, ktoré priamo alebo nepriamo spadajú do
zorného pola kamery. Počas animácie spravidla nie je viditeľný každý objekt. Len
vtedy ich dajme na scénu, ak sa dostanú do zorného pola kamery a akonáhle vyjdú,
dajme ich preč. Situácia ale nie je vždy takáto jednoduchá. Ako príklad uvediem
situáciu, keď objekt už nie je v zornom poli kamery, ale jeho tieň ešte tam
zasahuje. Pamäť je možné šetriť aj v tomto prípade a to tak, že objekt nahradíme
jednoduchším objektom, ktorý je tvarovo zhodný s pôvodným.
Samozrejme, tieň, ktorý sa objaví na scéne, už bude pochádzať od jednoduchšieho
objektu. "Jednoduchý" objekt sa môže vytvoriť z pôvodného tak, že sa vypustia
niektoré detaily a použije sa menší počet bodov. Podobne sa môžu vypustiť aj
povrchové vzory teda textúry a brushe. V poslednom prípade sa šetrí nielen
pamäť, ale sa pridá aj na rýchlosti výpočtu.
K tieňom sa viaže aj problematika osvetlenia a lámp. Čím sa použije väčší počet
svetelných zdrojov, tým sa spotrebuje viac pamäti a aj výpočet sa predlžuje.
Platí to nielen pre mód Trace ale aj pre Scanline. Sú prípady, keď použitie
väčšieho počtu lámp (2-4) je opodstatnený, avšak vo väčšine prípadov vhodným
rozmiestnením max. 2 svetelných zdrojov je možné dosiahnuť veľmi dobré výsledky.
Na zvýšenie svetlosti obrázkov sa môže použiť parameter Ambient z Action editoru
z položky Globals. Ale pozor, príliš veľké hodnoty Ambientu majú za následok, že
sa potlačia tiene a zníži sa celkový kontrast obrázku.
Osvedčeným trikom sa javí aj manipulovanie s vypracovaním objektov. Časť
objektu, ktorá práve nie je viditeľná, sa môže zjednodušiť, alebo ak to dovoľuje
situácia, aj odstrániť. Ak je objekt počas animácie viditeľný z viacerých strán,
potom sa oplatí vytvoriť ďalšie zjednodušené objekty, ktoré majú vždy
degradovanú neviditeľné časti.
Túto fintu je možné použiť aj v prípadoch, ak sa objekt pohybuje v hĺbke, ďaleko
od kamery. Tu tiež postačuje zjednodušený objekt, veď detaily ani tak nie sú
viditeľné.
Môže nastať aj taká situácia že chcete vygenerovať obrázok, ktorého centrálnym
prvkom je nejaký zložitejší objekt. Podľa Vašich predbežných úvah by nemali
nastať žiadne problémy s pamäťou. Ale sa to stane... "Out of memory". V tomto
prípade sa môžete pokúsiť o nasledovnú fintu. Rozrežte objekt na menšie dielčie
častí a uložte ich. Tvar pôvodného objektu získate potom sa scéne tak, že ho
zložíte z jednotlivých častí. Podstata je tá, že objekt nesmie tvoriť jeden
súbor, ale musí byt rozdelený do viacerých menších. Vysvetlenie spočíva vo
fragmentácií pamäti.
Na pomalších počítačoch treba prihliadať aj na rýchlosť výpočtu. Imagine 3.x
obsahuje veľa zaujímavých textúr. Ich nevýhoda spočíva iba v tom, že sa jedná o
zložité matematické algoritmy, ktoré značne spomaľujú generovanie obrázku.
Situácia ale nie až taká vážna a nemusíte sa ich hneď zriecť. Trik na zrýchlenie
výpočtu vychádza z toho, že výpočet objektov s brushom je vždy rýchlejší ako s
textúrami. Prakticky: vytvorte rovinu, na ktorú naneste Vašu obľúbenú textúru.
Rovinu nastavte tak aby celá vypĺňala zorné pole kamery. Vypočítajte obrázok!
Dostali ste obrázok, ktorý môžete aplikovať ako brush na povrch želaného telesa.
Všetky uvedené triky platia viacnásobne, ak sa počíta v móde Trace, kde čas
výpočtu je troj až desaťnásobný. Ale skôr, než sa zvolí mód Trace, sa opäť
oplatí zamyslieť nad našimi možnosťami a požiadavkami. V mnohých prípadoch,
hlavne pri animáciách, je mód Trace zbytočným plytvaním času. Uvediem jeden
zaujímavý poučný a aj aktuálny príklad. Úlohou bolo vytvoriť animáciu, na ktorej
bolo vidieť vianočný stromček s niekoľkými sklenenými ozdobami. Samozrejme v
sklenených guliach sa malo odrážať okolie, ako v skutočnosti. Animátor s
dostatočne rýchlym počítačom nerozmýšľa veľa - mode Trace a .... výsledok je
hotový. "Chudobný" animátor použije fintu: nastaví mód Scanline a na povrch gúľ
natiahne ako brush vždy predchádzajúci vygenerovaný obrázok. Výsledok je taký
dokonalý, že tento "lacný podfuk" nezbadá ani animátor s rýchlym počítačom.
Uvedený trik je možné aplikovať v mnohých prípadoch. Je pravda, že nároky na
pamäť mierne stúpnu, ale sa ušetrí veľmi veľa času.
Použitie brushov je veľmi výhodné aj v ďalších situáciách. Napríklad namiesto
pracného modelovania objektov je oveľa jednoduchšie natiahnuť na jednoduchý
objekt jednoduchý brush. Záverom ešte jeden trik
Ak sa animácia odohráva pred nemenným pozadím, oplatí sa vypočítať jeden
obrázok bez pohybujúcich sa objektov a tento obrázok potom umiestniť do pozadia
pomocou funkcie Backdrop Picture. Pri výpočtoch potom samozrejme odstráňte
objekty tvoriace pozadie, veď už sú obsiahnuté v Backdrop Picture. Takto získame
ďalšiu voľnú pamäť a drahocenný čas. Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|