Seeking Advice on C++ Development in Blender for a Maya Tool Developer

Hello,

I am a solo technical artists with the Qt framework and C++ skills. For a long time now, I have been contemplating the right time to transition from Maya to Blender, and I find myself still considering it. My primary concern revolves around C++ based plugin development in Blender.

The features I aim to develop involve real-time interactive custom manipulators. My goal is to significantly enhance the functionality of soft selection and enable real-time manipulation of multiple objects and keyframes simultaneously, suitable for modern animation and rigging workflows. I have successfully implemented similar functionalities in Maya using C++. I am keen to replicate these advanced tools within Blender and showcase my technical skills in that environment as well.

However, the most significant hurdle I perceive is the build process.

The tools I intend to create would likely suffer from performance bottlenecks if implemented solely in Python, making them difficult to use comfortably. This is because my plugin involves manipulating multiple controllers concurrently and caching numerous matrices across multiple frames, all at once.

In Maya, developing C++ plugins doesn’t necessitate rebuilding the entire application. Furthermore, even with version changes, plugins generally remain compatible as long as one consults the API patch notes.

From what I understand, Blender primarily supports Python scripting for addons. To achieve the low-level access, memory optimization, and real-time performance I require through C++, it seems necessary to build the entire Blender program from source. This aspect presents the biggest challenge for me.

I am still deliberating on this matter. Perhaps I am overcomplicating the issue? If I were to learn the build process and how to maintain my own custom version of Blender, would adding C++ functionality become less problematic?

Alternatively, as a developer aiming for tools with highly optimized C++ memory access and excellent real-time usability, is it perhaps too early for me to engage deeply with the Blender development community?

Developing C++ plugins in Maya felt relatively straightforward. If I were to maintain a custom Blender build, I worry about whether such a version could be shared with others, and whether I would need to research and implement the build process anew with every Blender version update. These potential complications are causing significant hesitation.

Although I am still working primarily within Maya, I have a strong desire to transition to Blender and become an active participant in its community. I am sharing these thoughts hoping for some perspective or advice.

Thank you for your time and any insights you might offer.

8 Likes

Your idea is great. I really hope that developers like you can join Blender’s headquarters and make Blender better and better.

1 Like

Blender doesn’t have a plugin C++ API and won’t have one anytime soon (if ever). For writing native code, I would encourage you to consider contributing to the Blender project directly. See Blender Developer Handbook - Blender Developer Documentation.
If that’s not something you are interested in and would rather work on addons/plugins, then I’m afraid you won’t find much help on this forum.

4 Likes

Hey,
Just purely out of curiosity why not though?

https://developer.blender.org/docs/handbook/new_developers/faq/#can-a-c-plugin-api-be-added

Thank you for the answer. I’ll start learning how to build Blender and manage commits.

4 Likes

From a pure user perspective, native integration and improvements in Blender are super apreciated, if it’s something as performance dependent as soft selection and manipulation tools.

If you feel comfortable trying to get into contributing to core blender, the community really apreciates this. :heart:

4 Likes