Enable 3rd party content in embedded navigation systems by extending RAMSES ecosystem with a Blender exporter
Student: Daniel W. S. Almeida
Mentor: Violin Yanev
This project started out as a way to export content from Blender into RAMSES - a distributed system for rendering 3D content with focus on bandwidth and resource efficiency. As of now only meshes and their transformations - scalings, rotations and translations - and modifiers get exported. The delivered project showcases a screenshot of a car modelled in Blender on half the screen and the resulting RAMSES scene on the other half.
You can get the code at https://github.com/GENIVI/ramses-blender. The Python bindings used for this project can be found at https://github.com/GENIVI/ramses-python/. The bindings can be improved and or repurposed for other projects that rely on the interoperability of RAMSES and Python.
The exporter first converts the Blender scene to an intermediary representation and then outputs a RAMSES scene graph right from Blender itself.
The last commit was dac2fbc
.
During my work on this project my knowledge of git substantially improved. Also my appreciation for automated tests grew as I recognized them as an invaluable tool for finding and fixing regressions. I had plenty of trouble with git at the start but Violin helped me navigate through these.
Needless to say my understanding of computer graphics matured a bit. I am far from proficient, but I think this project was a very good start on the subject.
I also learned a bit on the interfacing of C++ and Python code via pybind11.
I think this project can use a well designed system for the exchanging of materials between Blender and RAMSES. A combination of material baking and an implementation of the Principled BSDF shader is probably a good approach for this.
Also, this project can handle simple scenes well, but more complicated scenes might break it, simply because they use elaborate techniques that a project in its infancy cannot readily support. It is my understanding that this can be fixed by incrementally adding new features for the translation machinery.
As a final note, I think some gratitude is in order. Therefore, I thank GENIVI, and personally Violin and Gunnar Anderson for letting me work on this. I appreciate the opportunity I was given. This project would not be possible without the guidance I was offered. I hope it is fit for purpose and that it gets extended should the need arise.