Skip to content

Instantly share code, notes, and snippets.

@dwlsalmeida
Last active August 22, 2019 23:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dwlsalmeida/3ad2b0ae7c9f23b4ded9b08016a993b4 to your computer and use it in GitHub Desktop.
Save dwlsalmeida/3ad2b0ae7c9f23b4ded9b08016a993b4 to your computer and use it in GitHub Desktop.
A final recap on the work done for GSOC2019

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.

Where can I get the code?

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.

How does it work?

The exporter first converts the Blender scene to an intermediary representation and then outputs a RAMSES scene graph right from Blender itself.

What was the last GSOC2019 commit?

The last commit was dac2fbc.

What have I learned?

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.

How can this project be extended? What is left to do?

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.

Final notes

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment