A 3D ray-tracing program that renders computer generated images.
A 42 project done with Jeongmo Bae (@jebae), Samuel Boniface (@sabonifa), and Alexandru Moraru (@almoraru).
A scene including 80% of the features in this project.
- Install Node.js
Run make inside the repo.
$ make path/to/repo
- The program takes an xml scene file as the input, you can create your own or use the already created scenes.
- Modified files modified and saved are rerendered due to hot-loading implemented in project.
$ ./rtv1 scenes/file_name.xml
- To properly launch the web interface, the following command needs to be executed in the interface directory.
$ node interface/index.js
- 11 Objects: cone, cylinder, plane, sphere, box, ellipsoid, ring, parabaloid, pyramid, rectangle, and triangle.
- Shadows
- Multispot Lighting
- Spherical and directional lighting
- Ambient lighting
- Filters: grey, blur, sepia, and negative
-> For filter add the following tag to the XML file (but not within the objects tag):
<filter>sepia | grey | negative | blur</filter>
- Cel-shading (cartoon effect)
-> For cel-shading add the following tag to the XML file (but not within the objects tag):
<cel_shading>true | false</cel_shading>
- Translation and rotation (camera and shapes)
- XML parsing and debugging
- Refraction, reflection, and transparency
- Texture mapping
-> For texture mapping add the following tag to the XML file:
<texture>
<file>name_of_file</file>
<reapeat>1</repeat>
</texture>
- Texture bumping
-> For texture bumping add the following tag to the XML file:
<bump_map>
<file>name_of_file</file>
<reapeat>1</repeat>
</bump_map>
- Rotation and translation
- Multithread computation
- Hot-loading
- Color
- Live update of xml file
The interface's welcome page.
- Modify camera or add a new object (Note: The modified file will automatically be rerendered due to hot-loading technique implemented in our program.)
The interface form for adding a new object to the chosen XML file.
A scene including texture maping, reflection, and transparency.
A scene including texture mapping and tranparency.