Ray Trace softverski paket, pustite 3.3.

Izvornik: Ray Trace software package, release 3.3.

Autor: Sam Buss
Univ. of California, San Diego

Oslobodite 3.0 je dostupan kao 28. juna 2006. godine, sa bug ispravke su doveli ga da pusti 3.3. Glavne nove funkcije, kao ispuštanja 3.0, su sposobnost čitanja .NFF i .OBJ datoteke, i upotreba KD-Tree ubrzanje strukture. Tu je i novi glavni projekt RayTraceKd da koristi nove mogućnosti ispuštanja 3.0.Osim nekih veoma male stvari, puštanje 3.X je kompatibilan s verziji 2.0.

Ovaj programski paket prati moju knjigu 3D Computer Graphics: A Mathematical Uvod sa OpenGL (Cambridge University Press, 2003). Ona provodi ray tracing paket jeziku C ++ u proširivu, objektno orijentiran način.

Pregled: Ovaj ray tracing softver je napisan na C ++. Ona sadrži klase za rukovanje geometrijskih objekata, za izračunavanje Phong i Cook-Torrance svjetlo proračuna, a za praćenje zraka i određivanje raskrsnice zraka sa geometrijskim objektima. Nema lijepo korisničko sučelje; umjesto toga, morate napisati C ++ koda za interakciju sa Raytracing klase knjižnica. Geometrijsko modeliranje se vrši tako što C ++ funkcija poziva da se stvori objekte i postaviti njihova svojstva. Postoji izvorni kod za visoku kontrolu ray tracing nivou, ali vjerojatno je potrebno modificirati ovo da odgovara vašoj aplikaciji.

Geometrijskih objekata podržani: (Članovi ViewableObject klase): Triangles, paralelograma, paralelopipeda (uključuje kocke i pravokutnog oblika prizme), cilindri, čunjeva, sfera, elipsoida, Toruses, i zbirke Bezijeove zakrpa.
Tekstura mapiranje karakteristike: Neki podrška za šahovske obrasce, za mape tekstura iz rasterske, za Bump mapiranje, i za kombiniranje višestrukih mape tekstura. Također neke prilično generalni metode za rad s koordinata teksture.
Osvjetljenje modela: Phong i Cook-Torrance. Model Phong rasvjeta uključuje sve standardne OpenGL materijala i svjetlo svojstva.
Podržao Ortografska i perspektive gledišta: kamera.
OpenGL / GLUT pretpregled: Scena se može pogledati sa OpenGL / GLUT prije nego što je počela ray tracing. A pogodnost za postavljanje objekata ispravno i odabiru pogled. Ovo je novi za verziji 2.0.
Objekti je razmjere: rutine niskog nivoa izračunava priključna aviona za objekte. Dostupno za buduću upotrebu u prostorne strukture podataka kao što su BSP stabla ili kd-stabala ili octtrees. Ovo je novo u verziji 2.0.
Ulazni file: opisi scena može se čitati od .NFF ili .OBJ datoteke (Novi za oslobađanje 3.0.)
. KD-strukture stabla podataka ubrzanje Značajno poboljšava ray tracing puta; za velike scene Raytracing nije puno sporiji od OpenGL renderiranje! (Novi za oslobodili 3.0.)

Softver se distribuira s dva glavna programa koji su dizajnirani uglavnom za svrhe testiranja, RayTrace i RayTrace2 i RayTraceKd Ove stvaraju sljedeće slike:. (Nije prikazano:. Slika iz .NFF i .OBJ datoteke kao generira RayTraceKd)

Image1Small.gif (11070 bajtova) Glavni program RayTrace generira ovu sliku. U pozadini, postoje dva trougla sa šahovske mape tekstura. U centru je uglavnom sivo transparentan sfere. Iznad drugih objekata, nalazi se mala plava sfera, a tu su i nekoliko manjih žuta trokuta lebde u zraku. A veću verziju slike je također dostupna. U veću verziju trajala oko 9 sekundi za generiranje na 350 MHz Pentium 3, prije mnogo nekoliko godina. Na moj sistem 2006. godine je dosta brže.
Image2Small.gif (16120 bajtova) Glavni program RayTraceKd se može koristiti za generiranje ovaj prilično puna drugu sliku. Za ovaj, promijenite “MODE” varijabla u RayTraceKd.cpp na jednak 1 i rekompajlirajte. Tu je i zadnji zid (tekstura mapirani sa plavim i crnim prugama). Bočni zidovi su trouglova i odražavaju.Raštrkani oko scene su različite sfere, Tori, cilindri, kupe, paralelopipeda, elipsoida, i Bezier zakrpe. U zadnjem desnom uglu, tu je zakrivljena ogledalo montiran u uglu — ovo je formirana od Bezijeove zakrpe. Za bolje pogleda, provjerite veću verziju slike. U veću verziju trajala otprilike 10,5 minuta za proizvodnju, ponovo, na 350 MHz Pentium prije 3 mnogo nekoliko godina. Na moj sistem 2006. godine potrebno je oko 50 sekundi — sporost je zbog Bezier površine.
Tu je i sa komentarima verzija veliku sliku na raspolaganju, ako pokušavate da shvatim šta sve različitih oblika su.
jacks_5_1_thumb.jpg (9.2K bajtova) Glavni program RayTraceKd se može koristiti za generiranje “Jacks-5-1” slika prikazana ovdje. Za ovaj, “MODE” varijabla treba da bude jednaka 3. Za bolji izgled, provjerite veću verziju slike. Ovo traje oko 3 sekunde u zrak trag na mom sistemu 2006.

Zakonitostima: Možete ovaj softver može koristiti bez ograničenja. Ako ga koristite za značajne projekte ili komercijalne projekte, molim vas javite mi (priznanje ove vrste je jedan od načina nas akademske vrste osvojite nagradu.). Konkretno, njegova upotreba treba priznati u bilo publikaciji i na bilo koji proizvod. Osim toga, ako nađete ili popraviti bugove, molim vas da me znaju, tako da mogu ažurirati softver za sve ostale. Softver se distribuira “kao-je”, a nosi nema jamstva bilo koje vrste.

Softver dostupan. Oslobodite 3.3 Da bi softver.:

  1. Download RayTrace_3.3.zip. To uključuje sve izvorne datoteke, i Visual C ++ .NET projekta i radni prostor datoteka. Glavni radni prostor datoteka je RayTraceKd / RayTraceKd.sln. Za početak, dvostruko kliknite ovaj .sln datoteku.
    Projekti i rješenje datoteke za Visual C ++. NET 2003. Provjerite je li glavni projekt je bilo RayTraceKd (najbolje) ili RayTrace (od datuma, ali jednostavnije). Ako ste pretvoriti u NET 2005. ili kasnije, moguće je da je glavni projekt ili projekt zavisnosti neće biti ispravno pretvoriti. Ako imate problema povezuje projekta, možda ćete morati popraviti ovisnosti rukom.
  2. Za ne-PC i drugim prevodiocima: morat ćete se obnoviti projekt. Kod koristi cross-platform OpenGL naredbe, tako da bi trebalo sastaviti i rade pod Unix, Linux i Macintosh sistema. (Nisam mogao osloboditi Unix makefileove, itd, ako ima dovoljno potražnje, ali u zadnje vrijeme gotovo sva preuzimanja čini se da za PC okruženja.

Dokumentacija: Dodatak B gore navedenih knjiga i Uvod u Upgraded za javnost. Ili ispitati izvornog koda …. (Žao mi je, to je ono što je na raspolaganju za sada. Možda jednog dana ću stvoriti bolju dokumentaciju.)

Pokretanje softvera: Počnite s projektom RayTraceKd kao glavni program. Ako ste napraviti prozor veći, potrebno je proporcionalno više za sliku da bi zrak u trag. Sa novim ubrzanjem KD-tree (release 3.X), i ray tracing radi vrlo brzo. Zaista, za velike datoteke, možete naći da je ray tracing je brži od native OpenGL kod !.Preporučuje se da koristite optimiziranje kompajler kao što je režim priopćenju Visual C ++ ‘e kad ne debugging koda — to će poboljšati vremena rada znatno. Kada debugging vaš kod, držati prozor vrlo male da se pristojan puta staze.

Paralelizam. Ray tracing “sramota parallelizable” kao izraz ide. Dale Ranta je prijavio da je pretvoren kod koji se multithreaded sa relativno dobru brzinu-up. Za ovaj mu je potrebno da biste uklonili pozive koje okupljaju statatistics u KdTree :: Traverse rutinu i dali svaki konac svoj vlastiti “traverseStack”. Ranta izvješća postizanje 3 ili 4 kadra u sekundi raytraced (720 x 480) na Quad Macintosh sa osam threadova. Ranta kod nije dostupan na ovoj web stranici, međutim.

Zahvalnost. Ja Zahvaljujući Dale Ranta, Sven-Bertil Blom, Rob Graeyer, Robert Hanson, i Hans Dietrich za popravci uključeni u tisak 3.1 preko 3.3.

Povijest promjena i dokumentacije: Otpustite 1.0 je verzija dokumentirani u Dodatku B moje knjige gore navedenih. Verziji 2.0 je dodao nekoliko novih mogućnosti uključujući (a) OpenGL / GLUT prikazivanja i (b) na niskom nivou rutine za izračunavanje razmjere objektima. Oslobodite 3.0 dodao više mogućnosti, uključujući čitanja opisima scena iz datoteke i ubrzanja KD-stabla. Više dokumentaciju o tome kako koristiti nove značajke za javnost 2.0 i 3.0 koje nisu opisane u dodatku B može se naći u online Uvod u Upgraded za javnost.

Detaljan release note:
Oslobodite 3.1-3.1.2.
– Bug ispravke i bolje korištenje ISO C ++ standarda, uključujući i broj pronađenih artikala po Dale Ranta i Sven-Bertil Blom.
Oslobodite 3.2:
– Bug fix za VisiblePoints pogođenim KD-stabla koristeći tekstura kartama koje iz bitmap datoteke (dijagnosticirana i fiksna Bob Graeyer)
– Bug fix za razmjere obračun ViewableParallelepipeds (sada bi trebao raditi sa Kd-Trees).
– Kod čišćenje i uklanjanje sintaksu koja generira poruke upozorenja s GNU C ++ prijavio Dale Ranta.
Release 3.2b:
– Dvije znak greške u Quaternion.cpp, dijagnosticira i fiksna Robert Hanson.
Oslobodite 3.3:
– Način dodeljivanja za Array fiksno, uz pomoć od Hans Dietrich.

Leave a Reply

Your email address will not be published. Required fields are marked *