Globalni osvetleni do kazde rodiny

Jednim z nejdulezitejsich problemu pri generovani 3d obrazu na pocitaci je vypocet osvetleni a stinu... spatny vypocet obvykle konci nerealne vypadajicim obrazem. Vypoctu, ktery bere v potaz plosne zdroje svetla a to nejen primarni (lampa), ale i vsechny odrazy svetla od dalsich ploch, rikame vypocet globalniho osvetleni... a tudy vede cesta k normalne (ne umele) vypadajici 3d grafice. Mym cilem bude probrat co maji pod Linuxem k dispozici ti kdo chteji vytvaret sceny s globalnim osvetlenim a renderovat je i ti kdo chteji globalni osvetleni sami programovat. Zaber je to hodne siroky, takze nebudu vrtat moc do hloubky, vic informaci je ale vzdy za odkazy na dokumentaci a programy.


Formaty popisu 3d scen

Pred zacatkem modelovani je dulezite zvolit format... mohlo by se stat ze po roce modelovani s jednim programem ten beznadejne zastara a sceny nepujdou zkonvertovat do jineho a pak babo rad.

MGF

Textovy format s dokumentaci a parsovaci knihovnou.
Nacita ho: Rad, Renderpark, RR
Uklada ho:
Existuje konvertor z: 3DS, Radiance
Existuje konvertor do: Inventor, VRML, Radiance

MGF na rozdil od temer vsech ostatnich nevznikl jako interni format nejakeho programu a neni tak zatizen zadnym balastem, byl vytvoren jen pro popis statickych scen a snadnou pouzitelnost... je fyzikalne dostatecne verny (skoro nejvic ze vsech zde zminovanych formatu), ale pritom elegantni, jednoduchy, rozsiritelny. Obsahuje vsechno co byva potreba pri vypoctu globalniho osvetleni a nic zbytecneho navic... nerika nic o texturach (zadne nema), jen o tvarech a charakteru odrazu svetla od povrchu. Celkove vzhledem k hromade konvertoru a genialni parsovaci knihovne naprosto cool.

3DS

Binarni format pokud vim bez dokumentace a bez knihovny, ale dost lidi ho tak nejak nacist umi.
Nacita ho: 3D Studio...
Uklada ho: 3D Studio...
Existuje konvertor z: ...
Existuje konvertor do: MGF, Povray, Vivid, Polyray, raw...

3DS pokud vim (videl jsem jen prehistorickou verzi 3D Studia pro DOS) nema dostatecne dobry popis materialu a jediny program ktery ho vytvari o kterem vim (ono 3D Studio) je komercni a ne pro Linux... uvadim ho tedy jen pro uplnost. Jako jeden z mala ovsem zahrnuje i trajektorie pohybu, ne jen staticke sceny.

RIB

Textovy format s dokumentaci.
Nacita ho: BMRT, komercni programy...
Uklada ho:
Existuje konvertor z:
Existuje konvertor do:

RIB je soucast precizni specifikace jakehosi "3d studia" od Pixaru... jednotlive implementace, at uz komercni nebo free, dostavaji certifikat ze splnuji vsechny pozadavky. Jednim z nich je bezvyhradna podpora RIBu. Format je to zajimavy jednou velice silnou vlastnosti - chovani paprsku po dopadu na povrch je programovatelne v jazyce vypadajicim uplne jako C. Skripty se kompiluji, vysledkem je prekvapive rychly kod na to, ze si uzivatel muze naprogramovat uplne cokoliv, jakkoliv slozity material, 3d texturu, vsechno. Nepekne na me pusobi spousta pomocnych informacich urcujicich jak scenu renderovat, jakym algoritmem a s jakymi parametry... Podporuje animace, ale implementuje je jako sekvenci nezavislych snimku=scen.

POV

Textovy format s dokumentaci.
Nacita ho: Povray
Uklada ho:
Existuje konvertor z:
Existuje konvertor do:

POV opet uvadim jen pro uplnost, protoze je hodne znamy, dival jsem se jen zbezne, ze je takovy "programovaci", silny... ale velmi svazany s vlastnim programem Povray, opet nerika jen jak vypada scena ale i jakym algoritmem ji renderovat.

RAD

Textovy format s dokumentaci.
Nacita ho: Radiance
Uklada ho:
Existuje konvertor z:
Existuje konvertor do: MGF

Format s moznostmi zhruba jako MGF, nekdy mene elegantni, nekdy snad vice, navic ma textury, bump mapping, programovatelne funkce. Oproti MGF ale nema parsovaci knihovnu. Zaver si netroufam napsat, ja dal prednost formatu MGF a RAD uz jsem tak nezkoumal.

MSDL

Textovy format (Manchester scene description language) s dokumentaci.
Nacita ho:
Uklada ho:
Existuje konvertor z:
Existuje konvertor do:

Opet jeden z velmi mala formatu, ktere nevznikly jako interni format nejakeho programu, ale byly navrzeny pro popis 3d sceny... MSDL vypada na papire mimoradne schopne, povrchy maji vsechny udaje a index lomu dokonce jako 3 floaty, takze vlastne podporuje ruzny lom svetla pro ruzne vlnove delky. Stinna stranka je mala podpora, nevim o zadnem programu, ba nevim o jedine radce kodu, ktera by s MSDL pocitala.

OOGL

Format s dokumentaci.
Nacita ho:
Uklada ho:
Existuje konvertor z:
Existuje konvertor do:

Popis povrchu nezahrnuje index lomu. Obsahuje informace o tom jak zobrazovat (wire/gouraud etc) coz je pro nas uplne nevhodne...

Blend

Binarni format pokud vim bez dokumentace.
Nacita ho: Blender
Uklada ho: Blender
Existuje konvertor z:
Existuje konvertor do:

Nevim o zadne moznosti prevodu z a do jinych formatu... Jinak je ale Blender kompletni prostredi (3d modelar, renderer...) a kdo nepotrebuje nejake specialni featury, nebude muset ani nikdy konvertovat. Pro grafika ok, pro programatora dost nesikovne.

Dalsi

Formaty o kterych jsem slysel v souvislosti s radiositou:
.sl - gcl's scene language
.obj - Wavefront .obj file
.smf - Garland's .smf
.sc - Heckbert's .sc

Jinak existuje prehled formatu pro 3d sceny, ovsem vetsina formatu z nej je nepouzitelna, pouzitelne uz jsem zminil.


Renderovaci programy

Radvis

Prostredi s vypoctem a prochazenim cele sceny, zdrojaky, www site.
Nacita formaty: mgf, sl, obj, smf, sc
Bugfixy: Potrebuje preportovat ze SGI na Linux...
Komentar: Kvalita od maximum radiosity guru... balik obsahuje mimo hafo radiosity algoritmu jeste kvalitni vector a graphics library. Preportujte to nekdo...

Radiance 3.1.patch12

Renderer statickych snimku, zdrojaky, www site.
Nacita format: rad
Bugfixy: Do makeall pridat neco jako -L/usr/X11R6/lib, smazat -Dqsort=_quicksort, V error.c const sys_errlist, velka hromada dalsich erroru... balik je uz par let stary a knihovny u gcc se mezitim mirne pozmenily, proto je s rozchozenim tolik prace...
Komentar: Nepouziva zadnou poradnou radiositu, prakticky jen raytracuje.

Renderpark

Renderer statickych snimku, zdrojaky, www site.
Nacita format: mgf
Bugfixy: Zmenit _FLOAT_H_ ve Float.h, koliduje s jinym definem.
Komentar: Obsahuje vylepsenou mgflibu - 2.0a. Algoritmy vypadaji nadejne, opravdu je to radiosita a na mnoho zpusobu. Vyzaduje motif, pri prvnim volani lesstifu ovsem zcoredumpuje.

BMRT - Blue Moon Rendering Tols

Renderer statickych snimku, jen binara, www site.
Nacita format: rib
Bugfixy:
Komentar: Vsechno maka, cool featury (viz popis formatu rib).

Blender

Kompletni prostredi (modelar, renderer statickych snimku i animaci), jen binara, www site.
Nacita format: blend
Bugfixy:
Komentar: Bez dokumentace je clovek ztracen, vestaveno neni snad ani pismenko napovedy, ale s tutorem z webu je to velka pohoda. Ac jsem cetl o radiosite v blenderu, zatim se mi nepoved ani obycejny stin, svetlo sviti skrz objekty i kdyz vsude naklikam 'shadows'. Tolik chvaleny vestaveny ultrafast renderer se mi tedy zatim jevi jen jako extremne pomaly 3d engine s gouraud shadingem.


Knihovny

Kdo si chce globalni osvetleni pocitat sam, oceni knihovnu, ktera mu pomuze s rozhranim jeho programu.

OpenGL

Skoda slov, OpenGL zobrazuje trojuhelniky, coz je obvykle jedine primitivum, ktere je potreba. Pri vyvoji enginu tedy staci...ovsem je pak nutne venovat par dni prace podpurnym funkcim jako ovladani z klavesnice/mysi - pohyb scenou, pripadne interakce...

Maverik

Moc dobre a britsky vypadajici knihovna, zdrojaky, www site, podpora hroamdy platforem, 3d primitiva, draw, intersect, windows, navigace, hierarchical bounding boxes, avatar a detekce kolizi, timer, input devices (3d mice apod), callbacky na vsechno, teapot... Nebyt toho, ze uz mi vsechno beha bez Maverika, zkusil bych zacit s nim.


Zaver

A je to. Ani jsme nepotrebovali 3d akcelerator. Pri vlastnim vyvoji doporucuji rozhodne pocitat s formatem MGF, zvazit pouziti Maverika (muze se hodit a nemusi)... pokud jde o tvorbu grafiky, nebyl referat zdaleka vycerpavajici a doporucuji jeste hledat po webu a vyzkouset dalsi programy, jinak ale z veci ktere jsem zminoval se muze hodit kompletni prostredi Blenderu... skvele featury ma treba BMRT, i kdyz tam je zas nutno naeditovat si scenu rucne...


Stepan Hrbek, kontakt: dee at dee.cz, homepage
referat byl vypracovan pro seminar Linux