Obsah
1. Modelovací programy a další utility pro POV-Ray
2. Modelovací program Moray
3. Modelovací program KPovModeler
4. Spilin – tvorba rotačních a vytahovaných těles
5. LParser – generátor stromů, keřů i abstraktních objektů
6. POV-Tree – vizuální editor stromů a keřů
7. Odkazy na Internetu
8. Obsah následující části seriálu
1. Modelovací programy a další utility pro POV-Ray
Raytracer POV-Ray patří mezi aplikace, které jsou vyvíjeny již po mnoho let. První reálně použitelná verze byla vydána v roce 1991 a od té doby se datuje tvorba pomocných programů pro tento (a nejenom pro tento) raytracer. Pomocné programy (utility) jsou využívány k mnoha činnostem. Některé programy slouží pro interaktivní tvorbu modelů, jejich grafické uživatelské rozhraní se většinou snaží přiblížit rozhraní používanému u CADů či profesionálních modelovacích a konstrukčních programů typu Blender, 3D Studio MAX, Maya, Rhinoceros, SurfCAM, starší TrueSpace apod. Ovšem existuje i mnoho dalších utilit zaměřených na jiné činnosti, především programy pro automatickou tvorbu některých typů objektů (generátory stromů, keřů, terénu), simulační programy s výstupem do POV-Raye (těch existuje velké množství, POV-Ray se často používá jako vizualizační back-end pro kvalitní vykreslení výsledků simulací), různé konverzní utility určené pro převod trojrozměrných dat do formátu POV-Raye atd.
Obrázek 1: Relativně složitý model vykreslený v POV-Rayi (autor: Steve Anger)
Do tvorby aplikace, která je použitelná spolu s POV-Rayem se může pustit vlastně každý uživatel, který je seznámen s některým programovacím jazykem. Může se jednat prakticky o libovolný jazyk, jedinou podmínkou je, aby bylo možné vypisovat text na standardní výstup či do souboru (jinými slovy – lze použít takřka vše od assembleru přes běžné programovací jazyky až po PL/SQL). Dokonce není ani nutné porozumět celému formálnímu popisu souborů zpracovávatelných POV-Rayem, většinou postačuje znát a použít pouze ty uzly a entity, které vytvářený pomocný program generuje. Příkladem může být převodní utilita z formátu, ve kterém jsou uloženy objekty vytvořené z trojúhelníků (například VRML či DXF). Taková utilita vygeneruje zdrojový soubor pro POV-Ray, který může obsahovat pouze informace o trojúhelnících, tj. entity typu triangle popř. smooth_triangle, volitelně také nastavení kamery či jednoho popř. několika světelných zdrojů. To sice znamená, že je použita jen malá část schopností POV-Raye, nicméně požadavky utility byly splněny.
Obrázek 2: K vytvoření zdrojového souboru tohoto modelu může být použitý jednoduchý třířádkový program v Perlu, Basicu či jiném podobném programovacím jazyce
2. Modelovací program Moray
Jedním z nejdéle vyvíjených modelovacích programů určených k tvorbě modelů pro POV-Ray, je aplikace nazvaná Moray. První verze této aplikace byly vytvořeny pro DOS (poprvé jsem se seznámil s verzí 1.5 vydanou v roce 1994), ale již od začátku se jednalo o program mající grafické uživatelské rozhraní podobné 3D Studiu či dalším v té době používaným profesionálním programům – čtyři podokna s volitelným pohledem na model (většinou nárys, půdorys, bokorys a perspektivní zobrazení), na pravém okraji menu s nástroji a v dolní části obrazovky podrobnější příkazy a nastavení k vybranému nástroji.
Obrázek 3: Pracovní prostředí programu Moray s typickou čtveřicí pohledů na model a panelem nástrojů umístěným v pravé části okna
V Morayi lze použít prakticky jakýkoli objekt nabízený POV-Rayem, ovšem – na rozdíl od některých jednodušších modelovacích programů – je umožněna snadná a rychlá tvorba objektů vytvořených pomocí spline křivek (rotační tělesa) a spline ploch. Moray však má také některé vlastnosti, které mohou bránit v jeho širšímu využití – je určen pro MS Windows a jedná se o shareware.
Obrázek 4: Scéna vytvořená za pomoci modelovacího programu Moray, jenž je následně vykreslená v POV-Rayi
3. Modelovací program KPovModeler
Pro uživatele Linuxu bude asi zajímavější modelovací program KPovModeler, který je primárně vyvíjen pro prostředí KDE. Lze ho ale samozřejmě spouštět i na systémech, které KDE primárně nepoužívají.
Obrázek 5: Okno se základními informacemi o programu KPovModeler
Svým vzhledem se KPovModeler podobá výše zmíněnému Morayi, i systém práce je velmi podobný. Jednotlivé objekty, tj. jak geometrické tvary, tak i kamery a světelné zdroje, se ukládají do stromové struktury, která odpovídá struktuře ve výsledném zdrojovém souboru určeném pro POV-Ray. Objekty lze po výběru ve stromové struktuře běžným způsobem modifikovat, lze jim přiřazovat texturu (náhled na texturu je tvořen samotným POV-Rayem, který je z modelovacího programu zavolán) apod. Poněkud škoda je, že u některých objektů není korektně vypočten jejich přesný tvar, týká se to zejména implicitních ploch (metaballs) a aplikace CSG operací. Také práce se spline plochami není tak jednoduchá a intuitivní, jako v Morayi, což je škoda, protože při tvorbě složitějších objektů se mnohdy jedná o základní modelovací nástroj.
Obrázek 6: Pracovní prostředí programu KPovModeler
KPovModeler obsahuje i funkci určenou pro načítání (import) souborů s popisem scény, které jsou uloženy ve formátu POV-Raye. Načtení sice není vždy stoprocentně úspěšné (ostatně se není čemu divit, jelikož POV-Ray používá pro popis scény poměrně složitý jazyk s makry, podmínkami a smyčkami, nejedná se tedy o běžný souborový formát), ale většinu informací – zejména geometrii objektů – se v mnoha případech podaří načíst, což je patrné ze sedmého a osmého obrázku, na kterých jsou zobrazeny modely získané ze zdrojových souborů POV-Raye.
Obrázek 7: KPovModeler se scénou načtenou z POV-Rayovského zdrojového souboru
Obrázek 8: Další model získaný ze zdrojového souboru určeného pro POV-Ray
KPovModeler zobrazuje celou scénu ve zjednodušené podobě, většinou jako takzvaný drátový model (wireframe), tj. bez textur a náležitého osvětlení. Pro finální výstup ve zvolené kvalitě je využit samotný POV-Ray. V podstatě postačuje nastavení cesty ke spustitelnému souboru POV-Raye (většinou /usr/bin/povray), cesty k dokumentaci a konečně cesty k podpůrným souborům, tj. definicím barev, textur či složitějších objektů. V případě, že jsou tyto cesty nastaveny korektně, je možné POV-Ray použít jako pro náhled na vytvářené scény (nejnižší kvalita renderingu), tak i pro tvorbu výsledného snímku (nejvyšší kvalita). Kromě toho POV-Ray slouží při tvorbě textur, opět jako back-end použitý při tvorbě náhledu.
Obrázek 9: Nastavení cest k POV-Rayi a podpůrným knihovnám
4. Spilin – tvorba rotačních a vytahovaných těles
Kromě plnohodnotných modelovacích aplikací jsou pro POV-Ray dostupné i úžeji zaměřené programy. Jedním z nich je i aplikace Spilin, která slouží k tvorbě rotačních těles (surfaces of revolution) a vytahovaných těles (extruded surfaces). Jedná se o aplikaci, kterou je možné naprogramovat i s relativně malými zkušenostmi, například v rámci semestrálního projektu.
Obrázek 10: Logo jednoduché modelovací aplikace Spilin
Ovládání této aplikace je velmi jednoduché. U rotačních těles se pomocí myši nakreslí v levé části okna křivka složená buď z úseček nebo spline křivek, pomocí které je rotační těleso zkonstruováno. U těles vytahovaných se podobným způsobem vytvoří obrys objektu, který je následně vytažen. Koncovými body úseček popř. řídicími body spline křivek je možné pohybovat, podobně jako u mnoha dalších vektorových editorů.
Obrázek 11: Tvorba rotačního tělesa ve Spilinu
V pravé části okna aplikace je zobrazen 3D náhled na vytvářené těleso, pro vykreslení je použita knihovna OpenGL. Při 3D náhledu je možné zvolit kvalitu zobrazení, zapnout či vypnout pomocnou mřížku, definovat způsob osvětlení i barvu povrchu atd.
Obrázek 12: Tvorba vytahovaného tělesa ve Spilinu
5. LParser – generátor stromů, keřů i abstraktních objektů
Zatímco Spilin je zástupcem relativně jednoduchých pomocných programů, je naopak LParser (celým jménem L-System Parser/Mutator) určen pro tvorbu mnohem složitějších modelů a také na uživatele klade poněkud větší požadavky. Tento program slouží k tvorbě trojrozměrných modelů přírodních objektů i umělých artefaktů vytvářených pomocí takzvaných L-systémů. Kromě běžných přepisovacích gramatik je možné použít i pokročilejší techniky, například takzvanou mutaci a simulaci gravitace. Tuto aplikaci, kterou vytvořil Laurens J. Lapre, je možné získat na adrese http://home.wanadoo.nl/laurens.lapre/lparser.html. K dispozici je původní DOSovská (první) verze; dále verze číslo 2, která vytváří pouze soubory typu VRML a konečně zdrojový soubor napsaný v programovacím jazyku C, který je možné použít pro přenos první verze na různé platformy, samozřejmě včetně Linuxu.
Obrázek 13: Prohlížeč Lviewer spuštěný v DOSBoxu
Program Lparser1 byl původně vyvíjen pro operační systémy DOS, konkrétně se jedná o LParser1 verze 3.0. Kromě samotného Lparseru jsou na této platformě k dispozici i další pomocné programy, zejména prohlížeč vytvořených trojrozměrných modelů, který se jmenuje Lviewer a převaděč vytvořených modelů do formátů zpracovatelných raytracery POV-Ray a Vivid. Tento převaděč se jmenuje lv2povid.
Prohlížeč trojrozměrných modelů Lviewer nabízí kromě základního náhledu na vytvořený model i další funkce, zejména možnost otáčení modelem, současný pohled na model z více stran (čtyři podokna) a mimo jiné také skrytí neviditelných hran pomocí malířova algoritmu (Painter's algorithm). V současnosti, kdy má prakticky každý majitel PC k dispozici výkonný grafický akcelerátor zobrazující vystínované a otexturované polygony, se tento program nutně jeví jako archaický, stále je však použitelný. Na operačních systémech Microsoft Windows je ho možné spustit přímo (testováno na Windows 98 a Windows XP), v Linuxu se bez problémů spouští například v DOSBoxu.
Obrázek 14: Model vytvořený pomocí LParseru
Nyní si řekneme, jakým způsobem je možné Lparser nainstalovat na operační systém Linux. Na stránkách programu (viz odkazy uvedené níže) je možné nalézt i zdrojový kód Lparseru1 verze 5.0. Jedná se o jediný soubor se jménem lparser.c, který je možné přeložit jak pod Microsoft Windows (testováno s Borland C++ Compilerem 5.5 a GCC 3.2), tak i v Linuxu (testováno s GCC 3.3.5) a s velkou pravděpodobností i na ostatních unixových systémech. Při linkování je nutné připojit knihovnu s matematickými funkcemi, tj. zadat příkaz:
gcc -o lparser lparser.c -lm
Kromě zdrojového kódu aplikace je vhodné stáhnout i původní LParser1; v archivu s tímto programem se totiž nachází i soubory *.ls, které obsahují definice přepisovacích gramatik zajímavých trojrozměrných L-systémů. Mezi Lparserem1 a Lparserem2 se způsob zápisu gramatik (a tím i obsah souborů *.ls) změnil, námi přeložený Lparser1 tedy nebude s novými soubory funkční! (ruční převod však není složitý)
LParser1 dokáže vytvořit model, který lze vyexportovat přímo do formátu zpracovávatelného POV-Rayem. K dispozici jsou dva typy objektů, ze kterých se trojrozměrné modely mohou skládat. Prvním typem jsou obligátní plošné polygony (trojúhelníky i víceúhelníky), druhým typem implicitní plochy, známé pod názvy metaballs či blobs. V tabulce níže jsou vypsány volby Lparseru1, které ovlivňují výstup do programu POV-Ray:
Volba | Význam volby |
---|---|
-v | výstup ve formě plošných polygonů v syntaxi POV-Raye |
-b | výstup ve formě jednoho objektu složeného z blobů |
-B | výstup ve formě více objektů složených z blobů |
-c | místo samostatných souborů s koncovkou .pov se generují include soubory .inc |
Pokud se LParser spustí například s volbou -v -c soubor.ls, vytvoří se na základě zadané přepisovací gramatiky soubor s názvem output.inc, který lze použít ve vykreslovaných trojrozměrných scénách. Různé objekty vytvořené LParserem se již mnohokrát objevily i ve scénách, jež se zúčastnily různých soutěží.
Obrázek 15: Složitější model vytvořený pomocí LParseru a vykreslený POV-Rayem
Další informace o L-systémech, LParseru a přepisovacích gramatikách je možné získat na adresách:
- L-systémy: přírodní objekty i umělé artefakty:
/clanky/l-systemy-prirodni-objekty-i-umele-artefakty/ - Implementace L-systémů založená na želví grafice:
/clanky/implementace-l-systemu-zalozena-na-zelvi-grafice/ - Paralelní přepisování řetězců v L-systémech:
/clanky/paralelni-prepisovani-retezcu-v-l-systemech/ - Závorkové a stochastické L-systémy:
/clanky/zavorkove-a-stochasticke-l-systemy/ - Mozaiky s L-systémy a trojrozměrné L-systémy:
/clanky/mozaiky-s-l-systemy-a-trojrozmerne-l-systemy/ - L-systémy v 3D: Lparser, POV-Ray a Blender:
/clanky/l-systemy-v-3d-lparser-pov-ray-a-blender/ - Tvorba 2D a 3D modelů pomocí Lparseru:
/clanky/tvorba-2d-a-3d-modelu-pomoci-lparseru/ - Trojrozměrné modely vytvářené v Lparseru:
/clanky/trojrozmerne-modely-vytvarene-v-lparseru/ - Animace a mutace modelů L-systémů:
/clanky/animace-a-mutace-modelu-l-systemu/ - Pokročilejší animace trojrozměrných L-systémů:
/clanky/pokrocilejsi-animace-trojrozmernych-l-systemu/ - Publikace Biological Modeling and Visualization research group (University of Calgary):
http://algorithmicbotany.org/papers/ - Stránka programu Lparser:
http://home.wanadoo.nl/laurens.lapre/lparser.html - Galerie modelů vytvořených v Lparseru:
http://home.wanadoo.nl/laurens.lapre/lparser2.html - Charlie Chernohorsky :-) L-systémy ve FractIntu:
http://fractint.oblivion.cz/ - David G. Green: „Tutorial about L-systems“,
http://life.csu.edu.au/complex/tutorials/tutorial2.html
http://www.csu.edu.au/complex_systems/tutorial2.html - Hill, F. S. jr.: „Computer Graphics using OpenGL“,
Prentice Hall, 2001 - Prusinkiewicz Przemyslaw and Hanan James: „Lindenmayer Systems, Fractals, and Plants“,
Springer-Verlag, New York, 1989. - Prusinkiewicz Przemyslaw and Lindenmayer Aristid: „The Algorithmic Beauty of Plants“,
Springer-Verlag, NY, 1990. ISBN 0–387–97297–8
http://algorithmicbotany.org/papers/abop/abop.lowquality.pdf - Weber J., Penn J.: „Creation and Rendering of Realistic Trees“,
Proceedings of SIGGRAPH '95, volume 22(4), ACM SIGGRAPH, New York, 1995
6. POV-Tree – vizuální editor stromů a keřů
Zatímco výše popsaná aplikace LParser umožňuje pomocí L-systémů vytvářet takřka libovolné trojrozměrné objekty, ovšem od uživatele je vyžadována pracná a pro mnohé i neintuitivní ruční editace souborů s definicemi přepisovacích pravidel, další program, jenž je příznačně nazvaný POV-Tree, slouží převážně k tvorbě trojrozměrných objektů stromů a částečně i keřů.
Obrázek 16: Splashscreen programu POV-Tree
Jedná se o aplikaci s poměrně propracovaným grafickým uživatelským rozhraním, která je naprogramována v Javě, tj. jde již z principu o multiplatformní program. Aplikace naprogramované v Javě sice bývají náročnější na systémové zdroje než nativní programy, ovšem POV-Tree lze bez problémů provozovat i na pět let starém počítači s 256 MB operační paměti. Vytvořené trojrozměrné objekty stromů a keřů lze samozřejmě vyexportovat do formátu POV-Raye.
Obrázek 17: Pracovní plocha zobrazená po spuštění programu
Definice tvaru stromu probíhá po částech: lze měnit parametry jeho kořenů (root), kmene (trunk), hlavních větví (branches), menších větviček (twigs), způsobu rozvětvení (ramification) atd. Způsob zadávání jednotlivých parametrů částí stromu se liší – v některých případech se jedná o numerické hodnoty (úhel větvení, míra zužování větviček atd.), jindy lze tvary vymodelovat v jednoúčelových vektorových editorech.
Obrázek 18: Editor stromů
Náhled na vytvořený strom přímo v aplikaci je pouze přibližný: v podstatě se jedná buď o zobrazení kostry stromu pomocí úseček (primitivní forma drátového modelu) nebo o zvýraznění jednotlivých částí kostry, květů a plodů kružnicemi a kruhy. Kvalitního výsledku lze dosáhnout až renderingem v POV-Rayi. POV-Tree objekty exportuje ve formě trojúhelníkových sítí, které jsou v POV-Rayi po načtení optimalizovány z hlediska spotřeby paměti, na rozdíl od samostatných trojúhelníků.
Obrázek 19: Editor květů či plodů
7. Odkazy na Internetu
- Moray:
http://www.stmuc.com/moray/ - KPovModeler:
http://www.kpovmodeler.org/ - Stránka programu Lparser:
http://home.wanadoo.nl/laurens.lapre/lparser.html - Galerie modelů vytvořených v Lparseru:
http://home.wanadoo.nl/laurens.lapre/lparser2.html - POV-Tree:
http://propro.ru/go/Wshop/povtree/povtree.html - POV-Ray Modelling Programs:
http://www.povray.org/resources/links/3D_Programs/POV-Ray_Modelling_Programs/
8. Obsah následující části seriálu
V další části seriálu o raytraceru POV-Ray budou popsány další zajímavé utility, které je možné spolu s POV-Rayem použít. Bude se jednat především o různé konverzní utility (převod z DXF, VRML, 3DS apod. do formátu POV-Raye), aplikaci Connect The Dots Smoother, jenž dokáže z množiny bodů v prostoru vytvořit na základě zadaných podmínek tělesa složená z koulí, válců a komolých kuželů a konečně simulátor částicových systémů Rune's Particle System, který je zajímavý především tím, že je celý naprogramovaný v samotném POV-Rayi, přesněji řečeno za pomoci jeho programovacího jazyka.
Obrázek 20: Jeden snímek animace vytvořené pomocí utility Rune's Particle System