Max von Tettenborn

Freelance 3D-Artist

Java Raytracer

Nachdem das letzte Semester vorbei war wurde von der Uni noch ein Wettbewerb angeboten, für den ein sehr rudimentärer Raytracer mit möglichst vielen zusätzlichen Features erweitert werden sollte. Zusammen mit einem Kommilitonen habe ich daran teilgenommen und den zweiten Platz belegt. Das Ergebnis gibts hier zum Download. Unten stehen zwei Bilder, die wir damit gerendert haben.

Raytracer

Natürlich war das Projekt als Übung gedacht und ist nicht für den echten Einsatz ausgelegt, dafür kann es auch viel zu wenig. Da wir uns in der beschränkten Zeit, die zur Verfügung stand hauptsächlich aufs einfügen neuer Features konzentriert haben, ist das ausführliche Testen und Bugfixen natürlich auch etwas auf der Strecke geblieben. Also nicht wundern wenn sich das Programm hin und wieder mal aufhängt. Außerdem haben wir mit Java gearbeitet und entsprechend wenig performant ist das Rendern. Dennoch sind viele wichtige Features vorhanden und es war äußerst lehrreich diese Machanismen, die man ständig benutzt und denkt zu verstehen, mal selbst zu implementieren. Da merkt man nämlich wie viel unsichtbare Komplexität unter der Haube eines Raytracers steckt. Und es hilft ganz erheblich dem Verständnis auch im Ungang mit den echten Raytracern wie Mental Ray.

Wer den Raytracer ausprobieren will, sollte das Zip-Archiv komplett in einen Ordner entpacken und die Datei JavaRT.jar starten. Dazu muss ein Java RTE installiert sein. Als nächstes kann über die Option “Load Data” eine der mitgelieferten Szenen geladen werden. Die Ordner “Environment Maps” und “Textures” sollten dabei im selben Ordner, wie die Szenen liegen. Alternativ oder im Anschluss kann über das Feld darunter auch ein OBJ importiert werden. Weitere Einstellungen sind über die Reiter zugänglich. Diese werde ich hier nicht erklären, da sie für jeden, der auch schon mal mit anderen Raytracern gearbeitet hat ersichtlich sein sollten.

glossy_reflectionsshader_tests

Und so sieht das GUI aus: (draufklicken für Originalgröße)

Raytracer-GUI

Hier noch eine Liste der von uns implementierten Features:

– General –
GUI
sophisticated resolution changing widget
Full gui control over the camera
Saving and loading of scenes
Bucket Rendering
Image saving (PNG)
OBJ Import
Transform Matrices (Scaling, Rotation, Translation)
Triangle Intersections
Triangle Meshes
Several useful color math and vector math functions

– Render Optimization –
Adaptive and incremental Sampling / Anti-Aliasing
Subdivision of geometry via an octree

– Shading and Materials –
Modular node-based shader system
Transparency / Refraction
UV Support for Triangles and Spheres
Bilinear Texture Interpolation
Support for procedural textures, some already implemented
Bump Mapping, Normal Mapping
Spherical Environment Mapping

- implemented shader-nodes -
Brightness
Texture Reader
Blinn Phong
Lambert
Ambient Occlusion
Vector Math
Intersection Property
Bump Map
Normal Map
Glossy Reflections
Incidence
Rescale
ColorMean
ColorMultiply

Posted in R&D 6 years, 2 months ago at 15:27.

Add a comment

Previous Post:  

No Replies

Feel free to leave a reply using the form below!


Leave a Reply