Pozor, padá hvězda!

Ostatní jazyky Petr Lite 3D grafika Pozor, padá hvězda!

Přej si něco, padá hvězda! A co když to není hvězda, ale kometa? Pak máme dvakrát štěstí - za prvé, že jsme ji viděli, a za druhé, že se do nás nestrefila. Takže si ji raději namodelujeme v našem virtuálném světě. V klidu a teple domova, aniž se za ní musíme štrachat do Betléma.

Opět se vrátíme k našemu minulému programu se Zemí. Naše kometa se bude skládat ze 4 objektů. Prvním je samotné tělo komety, což je obyčejná koule. Pak bude mít ohon, což bude komolý kužel pokrytý průhlednou texturou. Zvýšíme efekt tím, že kometa bude osvětlovat okolní objekty. Toho docílíme vytvořením objektu světla a jeho připojením ke kometě. A to vše bude sloučeno do jedné společné skupiny.

Nejdříve si proto připravíme 4 číselné proměnné, s názvy ID světla od komety, ID ohonu komety, ID komety a ID skupiny komety. Dále budeme potřebovat texturu ohonu komety. Základem textury je černá barva, na kterou nasprejujeme žluté tečky. Měly by budit dojem jisker. Nazvěte ji textura ohonu komety. Případně k downloadu na konci lekce.

Na konec inicializace programu přidejte skupinu vytvoření komety. Bude obsahovat další 4 vložené skupiny, světlo od komety, ohon komety, tělo komety a skupina komety.

První objekt, světlo od komety, vytvoříme jako bodové světlo s jasně žlutou barvou. Abychom si to ujasnili, objekt světla ve 3D grafice není vidět. Je to jen bod v prostoru s určitými světelnými parametry, ze kterých se počítá osvětlení okolních objektů. Proto ho můžeme přidat k objektu komety. Nevadí, že bude umístěn ve středu komety. Ve 3D grafice nedochází ke stínění světla objekty. Naopak, stíny od objektů je nutné náročně programově vytvářet.

Kromě námi vytvořeného bodového zdroje světla máme ve scéně ještě jeden zdroj světla. Je to implicitní zdroj světla, který je automaticky vytvářen při spuštění programu. Jedná se o směrové světlo bílé barvy, svítící na scénu z levého horního rohu. U směrového světla nezáleží na poloze zdroje, pouze na směru, kterým svítí. Pokud bychom chtěli manipulovat s implicitním zdrojem světla, vybrali bychom aktivní objekt číslo 2.

Kromě dvou uvedených je možné používat ještě třetí typ zdroje světla - kuželové světlo. Je to typ osvětlení podobný reflektoru. Kromě polohy a směru se u něj udává ještě rozměr kužele a dosvit.

Vytvoříme ohon komety. Jak jsme se již zmínili, jako ohon použijeme komolý kužel. Nejdříve zvolíme poměrně nízkou složitost objektu 4, protože u ohonu komety není třeba přesnost tvaru. Vypneme přepínače pro vytváření hodní a dolní podstavy kužele. Tím bude kužel nahoře a dole děravý.

Při vytváření objektu kužele zvolíme průměr horní podstavy 0.5. Nastavíme texturu ohonu komety a změníme měřítko ve směrech X a Z na 1.8, měřítko ve směru Y na 2.5. Kužel bude tedy protáhlý. Rotací kolem osy Z o 90 stupňů zajistíme správné otočení ohonu, protože kometa bude létat zprava doleva. Proto ještě posuneme ohon o 1 doprava (ve směru X), aby ohon vlál až za kometou.

Zapneme viditelnost pro obě strany objektu. Asi by vypadalo nepřirozeně vidět jiskry jen z vnější strany a ne z vnitřní strany ohonu.

U ohonu využijeme novou vlastnost - průhlednost. Průhlednost je operace kombinující barvu objektu s barvou předmětů nacházejících se za objektem. Například nastavením průhlednosti na kód 11 se barvy grafických bodů sčítají, podobně jako když hoří oheň. Ještě vypneme osvětlení objektu, jinak by bylo na ohonu vidět stínování od okolního světla, což u zářícího objektu není přirozené.

Dalším objektem bude vlastní tělo komety. Bude to opět koule. Její složitost nastavíme na 6. Barvu na jasně žlutou a osvětlení vypnuté, ze stejného důvodu jako u ohonu. Velikost zvolíme 0.1. Posunutím na -0.8 ve směru Z zajistíme potřebnou výšku komety nad povrchem Země. K tělu komety připojíme objekt světla od komety a objekt ohonu komety.

Posledním objektem bude skupina komety. Je to jen skupina, ke které je připojen objekt komety. Abychom zajistili obíhání komety kolem Země po šikmé dráze, natočíme o kousek celou soustavu kolem osy Z.

A ještě nakonec musíme kometu rozhýbat. Ohon budeme animovat tak, že budeme jednoduše náhodně nastavovat rotaci kolem osy Y, čímž zajístíme náhodné blikání jisker v ohonu komety. Celou skupinou komety budeme otáčet kolem osy Y podobně jako s Měsícem, jen rychlost zvolíme 0.06.

A teď už můžeme program spustit. Měli bychom vidět krásnou kometu, neboli staročesky létavici.

Náš skvělý, ale naprosto neužitečný program se pomalu blíží k naprosté dokonalosti. Ale - co by to bylo za Zemi bez jediného mráčku? Mraky nám ještě chybí k realističtějšímu vzhledu Země.

Základem textury mraků bude průhledná barva, na kterou nasprejujeme barevné skvrny. Nebo downloadujeme hotovou texturu na konci lekce.

Dále potřebujeme číselný prvek ID mraků. Objekt mraků vytvoříme v samostatné skupině vytvoření mraků předtím, než vytvoříme objekt Země. Podobně jako u Země, nejdříve zvolíme složitost objektu 10, vytvoříme objekt mraků jako kouli a nastavíme měřítko ve všech směrech na 1.05, čili mraky budou mírně nad povrchem Země. Poznamenejme, že všechny objekty se vytváří s rozměry 1. Dále nastavíme texturu mraků a zvolíme průhlednost číslo 54. Tento typ průhlednosti používá alfa kanál textury, což znamená průhlednou barvu. Body vyplněné průhlednou barvou zůstanou průhledné, ostatní body budou viditelné.

Před nastavením textury nastavíme parametr vyhlazení textur na hodnotu 2. Vyhlazení textur nám udává, jak moc se obraz textury rozmázne. Rozmáznutí se realizuje tak, že textura se zmenší v měřítku podle zadaného čísla. Přitom je třeba počítat s tím, že zpravidla (v závislosti na grafické kartě) se zmenšení provede na rozměry nejbližší násobku mocniny 2. Rozmáznutí textury zajistí, že okraje mraků budou poloprůhledné, s plynulým přechodem, a ne hranaté.

Po nastavení přepínače vyhlazení textur se tento přepínač uplatňuje i dále, u dalších nastavovaných textur. U textury Země je stupeň vyhlazení textury 2 v pořádku, jinak bychom viděli zrnitý povrch. U textury Měsíce zvolíme raději zrnitost a proto před nastavením textury Měsíce nastavíme vyhlazení textur na 1.

Pokud tutoriál zkoušíte v Lite verzi Petra tak nebudete pozorovat žádný rozdíl při doplnění přepínače vyhlazení textur. Je to z toho důvodu, že textury jsou v Lite verzi interně omezeny na rozměr 128 x 128 grafických bodů. Jedná se přitom o rozměr po vyhlazení textury. Textury byly připraveny tak, aby vyhovovaly stejně jak Lite verzi tak plné verzi, takže po vyhlazení nepřesahují rozměr podporovaný Lite verzí. Lite verze provedla vyhlazení textur jakoby automaticky.

Poslední úpravou bude připojení mraků k objektu Země.

Spustíte-li program, měli byste vidět Zemi zahalenou v oblacích. Mraky se přitom pohybují souhlasně se Zemí.

Nádhera? No a už je to snad konečně vše. Nebo ještě ne? No jasně! Co by to bylo za Vesmír bez hvězd!

No a není nic jednoduššího. Připravte si texturu oblohy, třeba jen černou plochu s pár bílými tečkami, a nastavte ji do prvku textura pozadí scény.

No a už jen spustit...

A to je vše, přátelé!

 

Stáhnout

Staženo 262x (318.73 kB)
Aplikace je včetně zdrojových kódů v jazyce Petr Lite (jsou obsaženy v EXE souboru, který lze v programu přímo otevřít)

 

  Aktivity (1)

Článek pro vás napsal Panda38
Avatar
Programátor C++, WinAPI, ASM.

Jak se ti líbí článek?
Celkem (2 hlasů) :
4.54.54.54.54.5


 


Miniatura
Předchozí článek
A přece se točí!
Miniatura
Všechny články v sekci
3D grafika

 

 

Komentáře
Zobrazit starší komentáře (10)

Avatar
Michal Štěpánek:

Až se budeš pohybovat v IT aspoň tolik let, kolik ti je teď, zjistíš, že do těch tvých patnácti let jsi vlastně ještě skoro nic neviděl...
I když za patnáct let už asi moc LCD monitorů fungovat nebude, protože budou nahrazeny modernějšími technologiemi...

Odpovědět 16.8.2014 16:03
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Šimon Raichl
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Šimon Raichl:

No, když to říkáš tak jistě, tak ti snad budu věřit.

 
Odpovědět 16.8.2014 16:17
Avatar
Panda38
Redaktor
Avatar
Odpovídá na Šimon Raichl
Panda38:

S vypalováním LCD bývá velká potíž u výherních automatů. Zůstat na obrazovce svítit stejný motiv několik dnů, to dokáže monitor docela pohřbít. Proto se musí obraz co nejvíc měnit, např. prokládáním reklam a dema.

 
Odpovědět 16.8.2014 18:57
Avatar
Šimon Raichl
Redaktor
Avatar
Odpovídá na Panda38
Šimon Raichl:

CRTcka jsou ale nachylnejsi, ne?

 
Odpovědět 16.8.2014 21:23
Avatar
Panda38
Redaktor
Avatar
Odpovídá na Šimon Raichl
Panda38:

To už nevím jistě (a nevím jak LCD v porovnání s LED), připadá mi že CRT byly snad i odolnější než LCD proti přepalu.

 
Odpovědět  +1 16.8.2014 21:43
Avatar
Šimon Raichl
Redaktor
Avatar
Odpovídá na Panda38
Šimon Raichl:

to si prave myslim,ze ne.

 
Odpovědět 16.8.2014 22:15
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Šimon Raichl
Adam Ježek:

Já měl CRTeček hned několik a ani jednou se mi nestalo, že by na ní něco zůstalo, ačkoliv mi u jedný vždy v hornim rohu svítil neustále nápis AV1, odešla až po několika letech, kdy na ní někdo nechal magnet a přešla do odstínů fialové. LCD mám teď, a na ní když pozastavím přehrávání, tak po pár minutách celá zčerná a jezdí po ní nápis "pro návrat stiskněte OK", takže bude asi hodně náchylná.

Odpovědět 16.8.2014 23:26
Programátor dělá co může. Počítač co chce. | Pokud mi dáš mínus, tak prosim, napiš proč!
Avatar
Šimon Raichl
Redaktor
Avatar
Odpovídá na Adam Ježek
Šimon Raichl:

Já nvm, někdy nechávam jen tak moňák bežet, a nic se mu nestalo.

 
Odpovědět 16.8.2014 23:38
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Šimon Raichl
Jiří Gracík:

Tak ho nech běžet třeba měsíc v kuse a pak uvidíš :)

Odpovědět 16.8.2014 23:41
Creating websites is awesome till you see the result in another browser ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 20. Zobrazit vše