← All ideas
  • Published 3 Apr 2019

Blender Modifier API

I wonder why there is no Modifiers API. I also know, I`m not the first who asks for it. Modifiers are one of the greatest strengths of blender. I think it would be nice to have more tools developed this way. So, what is the reason it is still closed up?

85.7%

Development Status: Open

Upvote 6 Downvote 1
luisseyfer1
3 Apr 2019

2 Comments

jason

The default answer is that there is an API (of sorts); it's just internal to Blender. Since Blender is open source, it's not quite a necessary to to have a separate API to modify parts of it. You can "simply" (yes, I'm aware that it's not entirely simple) modify the source code directly and add tools however you'd like.

There are other reasons as well. Adding a Python API for modifiers has been discussed, but the concern there is that since modifiers often deal with much lower-level data, there could easily be a major performance disadvantage to hooking Python to the modifier stack... regardless of whether any modifier add-ons are actually used.

It's worth noting that Blender did, in fact, have a published API for parts of it... such as its Sequencer. In the entire lifetime of that API, there were maybe 3 plugins written. The API never got used, languished, and became a maintenance liability whereas the Python API thrived and matured. It would take a strong argument to convince anyone that wouldn't happen again with another API.

And a final consideration for this would be more political/controversial. Blender is GPL licensed. Having a compiled-language API to the modifier stack introduces the possibility that people could write closed-source plugins that violate the GPL. While that's a much smaller consideration relative to the other two, it's worth mentioning because some users do place a high value on Blender's open source licensing.

And a link to a relevant Blender developer wiki page for reference .

1
samueloates

It would work if bpy.types.Modifier was registerable, but it currently can only be done in the C code.