Logo Uni Logo FMFI Comenius University > Faculty of Mathematics, Physics and Informatics > Department of Computer Science

Dr. Tomas Plachetka


Research
Teaching
Publications
Contact

Rocnikove projekty

Vseobecne informacie

Pocitacova grafika inak

Pravidelne stretnutia: pondelok 10:40, M218

Nulta verzia projektu (originalny projekt SunFlow v0.02.2, (c) Christopher Kulla):

Pociatocna verzia projektu pg_inak (v Eclipse):

V pociatocnej verzii pg_inak sa udiali oproti originalnemu SunFlow v0.02.2 nasledujuce zmeny:

  • V package src.org.sunflow.raytracer.Intersectable.java: public interface Intersectable sa zmenil na public abstract class Intersectable a tiez sa v nom tym padom zmenili povodne deklaracie metod v Intersectable. (Class Intersectable je abstrakciou vsetkych konkretnych geometrickych tvarov, ktore su v src.org.sunflow.raytracer.geometry. Kazdy konkretny geometricky tvar, napr. plane, sphere, triangle, implementuje metody abstraktneho classu Intersectable.)
  • V packages src.org.sunflow.raytracer.geometry.*.java sa zmenili deklaracie classes Plane, Sphere a Java, ktore teraz neimplementuju interface, ale class Intersectable.

Na tomto mieste ideme projekt pg_inak rozdelit na 2 podprojekty, CONVERTER a RENDERER. Ideou je pouzivat program CONVERTER ako prototyp modelovacieho programu, v ktorom sa vytvara vstupna 3D scena pre program RENDERER (idealnym cielom by bolo vytvorenie modelovacieho a zaroven renderovacieho programu, v ktorom by 3D modelovanie bolo interaktivne, t.j. nieco na sposob 3D Studio ci TrueSpace; tento ciel je vsak zatial utopisticky). Technicky toto rozdelenie znamena, ze skutocne vzniknu dva nezavisle projekty ci programy. (Tieto pravdepodobne neskor zlucime znovu do jedneho programu, ale tomuto zlucovaniu sa budeme venovat neskor.) Oba podprojekty sa tykaju zmeny malej casti povodneho programu SunFlow, ktora zabezpecuje citanie vstupnych dat. Casovy plan je implementovat oba projekty najneskor do piatku 17.3.

Cielom projektu CONVERTER je nacitat (povodnym parserom) vsetky povodne vstupne data (subory .sc v sunflow.zip) do pamate a vyrobit novy subor .sr, ktory obsahuje seriovany zoznam geometrickych objektov classu Intersectable. Pritom treba mysliet na to, ze kazdemu geometrickemu objektu je priradeny material (shader). Preto nazov materialu zo suboru .sc treba zapamatat ako string v seriovanej verzii objektu. Po tejto konverzii dat z .sc suboru do .sr suboru ma konvertovaci program skoncit.

Cielom projektu RENDERER je nacitat (novo vytvorenym parserom) subor .sr (vyrobeny programom CONVERTER), a taktiez povodny subor .sc, pricom novy parser bude ignorovat konstrukty "object{...}" (tie su totiz v seriovanom .sr subore). Napriek tomuto ignorovaniu treba zabezpecit priradenie materialov (shader) z .sc suboru geometrickym objektom z .sr suboru. Pre tento ucel sa bude vyuzivat string v seriovanych geometrickych objektoch, ktory identifikuje meno materialu v .sc subore. Po tomto citani ma program RENDERER robit presne to, co robi povodny SunFlow program, t.j. vyrobit okno a renderovat don obrazok. V samotnom renderovacom algoritme netreba robit ziadne zmeny, staci ho zavolat.

Warningom, ktore su reportovane kompilatorom, netreba zatial venovat pozornost; nemaju ziaden vplyv na funkcnost a zbavime sa ich neskor. Experimentovat doporucujem so suborom cornell-box01.sc (je najmensi a neobsahuje ziadne textury).

V cgdiff_20060320.zip je pociatocna verzia projektu CONVERTER, ktora je predsa len totozna s pociatocnou verziou projektu RENDERER. Do menu pribudla polozka Import/Export, pod ktorou su 2 subpolozky, ktore zodpovedaju projektom CONVERTER a RENDERER.

CONVERTER

Projekt CONVERTER je zaveseny v menu Import/Export/Open and Export. Pre ucely projektu CONVERTER treba dorobit vazbu na materialy (Shader), lebo shaders nechceme (zatial) seriovat, a dorobit seriovanie geometrie, ktora je priradena svetelnym zdrojom (vid napr. TriangleAreaLight). Vsetko ostatne funguje, t.j. pri citani sceny sa vyrobi .sc.sr file (v directory, kde je povodny .sc file).

RENDERER

Projekt RENDERER treba zavesit do menu Import/Export/Import...

Podprojekty CONVERTER+RENDERER ukoncene

Oba podprojekty, CONVERTER a RENDERER, su uspesne integrovane do jedneho programu. V cgdiff_20060424.zip je aktualna verzia projektu (kompletne menu Import/Export funguje korektne).

Pridavanie dalsich geometrickych tvarov do projektu

Zaverecne prace pozostavaju z 2 uloh: 1.vytvorenie noveho geometrickeho tvaru (treba "odkukat" ako je urobeny napr. class Sphere); 2.vytvorenie sceny, ktora ten novy geometricky tvar pouziva. Pokial ide o vyber noveho tvaru a implementaciu priesecnikov s lucom, doporucujem inspirovat sa implementaciou POV-Ray 3.1g (povray31g.zip).


Updated by Tomas Plachetka, 24/Apr/2006