Ray Trace Software-Paket, Version 3.3.


Ray Trace software package, release 3.3.
Copyright © By Sam Buss
For original English text, go to: http://www.math.ucsd.edu/~sbuss/MathCG/RayTrace/

Autor: Sam Buss

Univ. of California, San Diego

Release 3.0 war als der 28. Juni 2006 zur Verfügung, mit Bug-Fixes haben sich brachte bis zu Version 3.3. Die wichtigsten neuen Funktionen, wie von Release 3.0 sind die Fähigkeit zu lesen. NFF und. OBJ-Dateien, und die Verwendung von kd-Baum Beschleunigung Strukturen. Es gibt eine neue Hauptprojekt RayTraceKd, die die neuen Funktionen von verwendet Release 3.0. Abgesehen von einigen sehr untergeordnete Elemente, ist Release 3.X kompatibel mit Version 2.0.

Dieses Software-Paket begleitet mein Buch 3D-Computer Graphics: A Mathematical Introduction mit OpenGL

(Cambridge University Press, 2003). Es implementiert eine Raytracing-Paket in C + + in einer erweiterbaren, objekt-orientierte Art und Weise.

Überblick: Das Ray-Tracing-Software geschrieben wird ein C + +.

Es enthält Klassen für den Umgang mit geometrischen Objekten, für die Berechnung und Phong Cook-Torrance Licht Berechnungen und für die Verfolgung und Ermittlung der Strahlen Schnittpunkte der Strahlen mit geometrischen Objekten. Es gibt keine netten Benutzer Schnittstelle, stattdessen muss man C + +-Code schreiben, um mit dem RayTracing interagieren Klassenbibliothek. Geometrische Modellierung wird erreicht, indem C + +-Funktionsaufrufe zu tun Erstellen von Objekten und deren Eigenschaften festlegen. Es gibt Quellcode für hohe Füllstandskontrolle von Raytracing, aber Sie müssen vielleicht ändern, dies passend zu Ihrer Anwendung.

Geometrische Objekte unterstützt: (Mitglieder des die ViewableObject Klasse): Dreiecke, Parallelogramme, Quader (inklusive Würfel und Quader), Zylinder, Kegel, Kugeln, Ellipsoide, Tori und Sammlungen von Bezier-Patches.

Texture Mapping Funktionen: eine gewisse Unterstützung für Schachbrettmuster, für Texturen aus Bitmap-Dateien, für die Bump-Mapping, und für die Kombination mehrerer Texturen. Auch einige recht allgemeine Methoden für die Arbeit mit Texturkoordinaten.

Lighting Modelle: Phong und Cook-Torrance. Das Phong-Beleuchtung Modell verfügt über alle Standard OpenGL Material und Licht Eigenschaften.

Kamera: Orthographische und Perspektive Ansichten unterstützt.

OpenGL / GLUT Vorschau: Die Szene kann eingesehen werden mit OpenGL / GLUT vor Raytracing begonnen wird. Ein hilfreicher für die Platzierung Objekte korrekt und wählen Sie die Ansicht. Dies ist für die neue Version 2.0.

Objects die Ausmaße: Low-Level-Routinen berechnen Begrenzungsebenen für Objekte. Erhältlich für die zukünftige Verwendung in räumlicher Daten Strukturen wie Bäume oder BSP-kd-Bäume oder octtrees. Das ist neu in Version 2.0.

Datei-Eingang: Scene Beschreibungen können las aus. NFF oder. OBJ-Dateien (für New Release 3.0.)

KD-Baum-Datenstruktur Beschleunigung. Deutlich verbessert Raytracing Zeiten; für große Szenen Raytracing ist nicht viel langsamer als

OpenGL-Rendering! (Neu für Version 3.0.) Die Software ist mit zwei Haupt-Programme, die meist für entworfen wurden verteilt

Testzwecken Raytrace und RayTrace2 und RayTraceKd. Diese erzeugen die folgenden Bilder: (Nicht gezeigt:… Bilder von NFF und OBJ-Dateien wie von RayTraceKd generiert)

Image1Small.gif (11070 bytes) Das Hauptprogramm Raytrace erzeugt

Dieses Bild. Im Hintergrund gibt es zwei Dreiecke mit Schachbrettmuster

Texture-Maps. In der Mitte ist ein weitgehend transparent grau

Kugel. vor den anderen Objekten, gibt es eine kleine blaue Kugel, und es

sind mehrere kleine gelbe Dreiecke in der Luft schweben. Ein

größere Version des Bildes ist ebenfalls verfügbar. Die größere Version

dauerte ungefähr 9 Sekunden, um auf einem 350 MHz Pentium 3, viele vor einigen Jahren zu generieren. Auf meinem 2006-System ist es durchaus ein bisschen schneller.

Image2Small.gif (16120 bytes) Das Hauptprogramm RayTraceKd verwendet werden, um zu erzeugen

Dieses zweite Bild ziemlich voll. Dazu ändern Sie die “MODE ” Variable in RayTraceKd.cpp gleich 1 und neu kompilieren. Es ist eine Rückwand (Textur mit zugeordnet

blauen und schwarzen Streifen). Die Seitenwände sind Dreiecke und sind

reflektierend. um die Szene herum verstreut sind verschiedene Kugeln, Tori,

Zylinder, Kegel, Quader, Ellipsoide, und Bezier-Patches. In

die hintere rechte Ecke gibt es einen gewölbten Spiegel in der Ecke montiert — Diese

ist gebildet aus Bezier-Patches. Für ein besseres Aussehen, lesen Sie in der größer

Version des Bildes . Die größere Version hat rund 10,5

Minuten bis zu generieren, wieder auf 350 MHz Pentium 3 viele vor einigen Jahren. Auf meinem System 2006, dauert es etwa 50 Sekunden — die Langsamkeit liegt an den Bezier Oberflächen.

Es gibt auch eine kommentierten

Version des großen Bildes zur Verfügung, wenn Sie versuchen, herauszufinden,

was all die verschiedenen Formen sind.

jacks_5_1_thumb.jpg (9.2K bytes) Das Hauptprogramm RayTraceKd verwendet werden, um zu erzeugen

die “Buben-5-1”-Bild hier gezeigt. Dazu wird die “ MODE ” Variable sollte gleich 3. Für ein besseres Aussehen, lesen Sie in der eine größere Ansicht des Bildes . Dieser Vorgang dauert ca. 3 Sekunden, um Strahlenverfolgung auf meiner 2006-System.

Rechtliches: Sie können diese Software nutzen, ohne Einschränkung. Wenn Sie es für umfangreiche Projekte oder kommerzielle Projekte, lass es mich wissen (Anerkennung dieser Art ist eine der Möglichkeiten, uns akademischen Typen bekommen belohnt.). Insbesondere seine Verwendung sollte anerkannt in allen Veröffentlichungen und in jedem Produkt. Darüber hinaus, Wenn Sie oder finden Sie beheben Fehler, lass es mich wissen, damit ich die Software aktualisieren für alle anderen. die Software verteilt wird “as-is”, und führt keine jegliche Garantie.

Software zur Verfügung. Release 3.3. Um die Software:

  1. Herunterladen RayTrace_3.3.zip .Dazu gehören alle Quelldateien und Visual C + +. NET-Projekt und Arbeitsbereich Dateien. Der eigentliche Arbeitsbereich-Datei ist RayTraceKd / RayTraceKd.sln.Um zu starten, doppelklicken Sie auf diesen . Sln Datei.Die Projekte und Lösung Dateien sind für Visual C + +. NET 2003. Stellen Sie sicher, das Hauptprojekt ist entweder RayTraceKd (am besten) oder Raytrace (Veraltet, aber einfacher).

    Wenn Sie konvertieren NET 2005 oder später, ist es möglich, dass das Hauptprojekt oder das Projekt Abhängigkeiten nicht korrekt umgesetzt werden. Wenn Sie Probleme haben, das Projekt zu verknüpfen, müssen Sie eventuell um die Abhängigkeiten von Hand beheben.

  2. Für Nicht-PCs und anderen Compilern: Sie müssen das Projekt neu sich. Der Code verwendet plattformübergreifende OpenGL-Befehle, so sollte es Kompilieren und Ausführen unter Unix, Linux und Macintosh-Systeme. (I konnte Unix Makefiles, etc. zu lösen, wenn ausreichende Nachfrage besteht, aber in letzter Zeit fast alle Downloads erscheinen für PC-Umgebungen sein.

Dokumentation: Siehe Anhang B des oa Buches und das Einführung in Upgraded Releases.

Oder prüfen Sie den Quellcode …. (Sorry, das ist, was verfügbar ist für jetzt. Vielleicht eines Tages werde ich eine bessere Dokumentation zu erstellen.)

Ausführen der Software: Beginnen Sie mit dem Projekt RayTraceKd als das Hauptprogramm. Wenn Sie das Fenster größer machen, dauert es proportional mehr für das Bild, um sein Raytracing. Mit dem neuen kd-Baum-Beschleunigung (Release 3.x), läuft das Raytracing recht schnell. In der Tat für große Dateien, können Sie feststellen, dass die Ray-Tracing ist schneller als die native OpenGL-Code!. Es ist höchst empfohlen, dass Sie einen optimierenden Compiler wie Visual C + + ‘s Version verwenden Modus, wenn nicht Debuggen des Codes — dies zu verbessern Laufzeiten erheblich. Beim Debuggen Ihres Codes, halten Sie die Fenster sehr klein zubekommen anständige Laufzeiten.

Parallelität. Raytracing ist “peinlich parallelisierbaren” wie man so sagt. Dale Ranta hat berichtet, dass er den Code umgewandelt zu sein multithreaded mit relativ guten beschleunigen. Dazu brauchte er, um die Anrufe, die in der statatistics KdTree :: Traverse Routine sammeln und gab jeder Thread seine eigene “traverseStack” zu entfernen. Ranta Berichte Erreichen 3 oder 4 Bildern pro Sekunde Raytracing (720 x 480) auf einem Quad-Macintosh mit acht Threads. Ranta Der Code ist nicht verfügbar auf dieser Website jedoch.

Danksagungen. i Dank Dale Ranta, Sven-Bertil Blom, Rob Graeyer, Robert Hanson, und Hans Dietrich für Bug-Fixes in Versionen 3.1 bis 3.3 integriert.

Historie der Änderungen und Dokumentation: Release 1.0 wurde die Version im Anhang B meines Buches dokumentiert oben erwähnt. Release 2.0 ergänzt ein paar neue Funktionen, darunter (a) der OpenGL / GLUT Vorschau und (b) die Low-Level-Routinen für die Berechnung der Ausdehnungen von Objekten. Release 3.0 ergänzt weitere Funktionen wie das Lesen Szene Beschreibungen aus Dateien und KD-Baum Beschleunigung. Mehr Dokumentation, wie man die neuen Features des Releases 2.0 und 3.0, die nicht im Anhang B beschrieben verwenden Sie in der Online Einführung in die aktualisierten Releases gefunden werden.

Detaillierte Release Notes: Release-3.1-3.1.2.

-. Bug fixes und bessere Nutzung von ISO-C + +-Standards, einschließlich einer Reihe von Artikeln von Dale Ranta und Sven-Bertil Blom gefunden

Release 3.2:

– Bug fix zu VisiblePoints betroffen KD-Bäume mit Texturen aus Bitmap-Dateien geladen werden (diagnostiziert und von Bob Graeyer fixiert)

– Bug auf Grenzen Berechnung der ViewableParallelepipeds (jetzt sollte mit kd-Bäume zu arbeiten) zu fixieren.

– Code Bereinigung und Entfernung von Syntax, generiert Warnmeldungen mit GNU C + + von Dale Ranta berichtet.

Release 3.2b:

-. Zwei Fehler im Zeichen Quaternion.cpp, diagnostiziert und von Robert Hanson fixiert

Release 3.3:

-. Zuordnung Methode zur Array fixiert, mit Unterstützung von Hans-Dietrich


Comments are closed.