Post your requests to Blender ADD-ON developers here

Just join the Blender Cloud. It is only 10 bucks and you get a very good scripting tutorial for artists by Sybren Stüvel who is one of the Blender developers. And you get a bunch of other things, too.

1 Like

Hmm. Seems like the course is a little short, barely an hour. But it’s in 2.79 with instructions for those using 2.80 so that’s good, plus like you said you get lots of other stuff too. Textures really interest me if they’re of any decent quality.

So, my request still stands, but this should at least get me started.

Thank you much for the link! :slight_smile:

1 Like

I’d like to see Lightwave object import, specially if it supported the new format. Scene import would be great too.

1 Like

The Blender 2.7x series used to ship with an LWO importer / exporter add-on. I wonder what happened to that.

There’s a 2.8 add-on, but I can’t find any description or experiences.

It’d be nice to see some response from Blender add-on developers. Paging @ambi, @Jeacom, @kkar, @Meta-Androcto, @scorpion81:slightly_smiling_face: Anyone up for a challenge?

Edge Constraint, like you can do in 3DS Max.

I guess some kind of add-on idea section would be nice but the issue is that those ideas and points get lost in the number of replies and topics, similar to right click section of the Blender community pages. Plus I am sure every developer has their own long list of things to do, at least I do.

Personally I value new ideas, the issue is to make it manageable and searchable. Ctrl click does that a bit. If the forum option will offer better ways, sure. I would follow it.

Maybe BA should just grab stuff from and make some kind of combo area.

1 Like

The idea about showing the keyboard shortcuts on the 3D viewport and the request to learn how to develop addons can be combined. All you really have to do is create a function that draws using the bgl library and run that function each time viewport redraws. It’s probably a good and straight forward way to learn addon development by doing. There’s nothing super special about being able to develop addons. It’s just knowledge of Python and a lot of google in how to get things done with Blender Python API.

Addons how to import and export various formats also requires knowledge of what those formats contain, example files and the ability to interact with both sides of the pipeline. Something a person who already uses the filetype is in best position to do.

1 Like

That’s correct a modifier has to deal with a ton of data that it manipulates real time, usually geometry data like vertices etc. Python would be extremely slow for such a kind of task.

This kind of processing is tailor made for high performance language like C which what Blender uses mostly for anything it does inside , UI included. However its not technically impossible, after all Python is used for AI which is even more performance hungry but even in the case of AI it the C++ usually that does the heavy lifting in terms of performance. In this case Python is used to drive the processing than actually perform it itself.

Currently Blender does not poses such and API but I think I read somewhere that there was some intention to provide some kind of modifier API for addons. I would not hold my breath though as it will obviously come with some sever limitations.

PS: Python contrary to popular opinion can get as fast as C, its a language that 50% of its code base is in C, but that would require to disable so many dynamic features that the language is well known of, it usually just better to implement the thing in C/C++. That means no GC, dynamic types, refactoring and pretty much anything that makes Python far more powerful and easier to use compared to C/C++.

1 Like

Thanks for the info, @kilon, interesting. I’m afraid my add-on wish of calculating an accurate offset volume from a mesh might also be hard to realize in Python within Blender. But hopefully I’m wrong. :slightly_smiling_face:

Nobody would actually use raw Python for performance critical code. But Python comes with Numpy, which is very powerful. As are compute shaders, as are compiled C API dynamically loaded libraries. Transferring data from Blender to the algorithm through Python has zero overhead. Zero.

1 Like

one problem is usually the exchange of data between an addon and blender , if the functionality you want can be independent of Blender then its possible for an addon to call external C++ code without having to mess with Blender source.

I remember one addon that did this for fluid simulation in Blender. So its possible to do modifier like staff with addons but not actual modifiers cause modifier are deeply integrated with Blender workflow and poses really challenges

Using Python for performance critical code is doable but not easy. It requires good knowledge on how to bypass some of the language dynamic features. This is done through the Python C API. Its a very powerful API that allows for C code to be written as its native Python code, but also can bypass the VM, GC, dynamic types and many features that cause performance issues.

Unfortunately this is way beyond the expertise of average Python developer because it does need deep knowledge of C and code optimization.

A vast majority of Python libraries are written in C. To give an example I once made an addon that loaded png files for icons and I used PyPNG, a library fully implemented in python , I saw slow downs of seconds even when loading just 10 mbs of data. Switching to PIL which is Python library written in C , my code accelerated 100 times. Seconds became milliseconds.

Another example is Python strings, they are actually much faster than C++ strings. Again their code is not only written in C like the entire core of Python (CPython to be exact) its highly optimized code.

Transferring data from C to Python can happen in 2 ways 1) the C way, where C manages the memory and yes in that case you have close to zero overhead, this is what Blender usually uses internally b) the Python way, the C code actually creates Python objects which in turn not only are dynamic in nature they are also can be garbage collected. In that case you can experience severe overheads.

Obviously Blender usually uses option (a) thus you do not experience an overhead.

1 Like

There’s a third way c) through Numpy. Which has the following benefits: immediate, can be manipulated in Python.

There’s also ctypes, but that’s a lot more uncomfortable to use.

1 Like

numpy is just another library that uses the Python C API. Or it may use Cython which in turns uses the Python C API. There is also ctypes for communicating with existing C libraries but ctypes has severe issue with performance because it follows the approach (b) I mentioned earlier.

Fun fact the creator of Python has strongly advised against the use of Python for performance critical code but Python has replaced in many fields C++ as a high performance language. The reason being that many of those coders are very knowledgeable on how to make performance critical code and they basically use their existing C++ libraries inside Python. That has made Python the dominant force in field like AI and scientific computing , a future that none could predicted for a language that usually performance wise belongs to the bottom end speed wise. Of course the creators of Python did not want it to be used as a programming language but as a scripting language, which Python nowadays is rarely used. Blender is one of those rare exceptions.

This of course is great news for addon developers because it means they can do pretty much anything but high performance coding is very messy and requires good knowledge of the more arcane side of coding. This is why we have tons upon tons of addons but Blender variants (forks) can be measured with the fingers of two hands at best.

AI/ML doesn’t use C++ for the heavy lifting, or the CPU. It uses GPU, often programmed with CUDA and Nvidia SDK.

Like I said, you can transfer data between C, C++ and Python without copying any memory. You can change data in Python and have it reflected in C without actually copying any memory. Once you have that data inside a Numpy array, world is your oyster. Only current slowdown is on the Blender C and C++ side when it comes to code, and on the developer side when it comes to understanding right kind of workflows.

You could certainly make high performing modifiers using Python as a data transport layer. Would it be wise? Maybe not, but it’s certainly doable.

Once upon a time GPU was unmatched for massive parallel execution of code but modern CPUs not only come with tons of cores but also new machine instructions specialized in massive parallel tasks.

So the most popular AI framework right now, Tenserflow like Cycles , runs both on CPU and GPU. So tasks can be much faster on CPU others are on GPU. The time when GPU was a clear choice is gone. So it largely depends on the task at hand.

1 Like

Yes, and Tensorflow is multiple orders of magnitude faster with a GPU

1 Like

that article is ancient for AI standards. Its 2016 and we are close to 2020. He uses i7 , I am willing to bet its a quad core.

Now fast forwards to today with an AMD Ryzen with 32 cores and you going to see a vastly different picture. Usually both CPU and GPU is used nowadays.

Of course if you are still stuck with a 4 core or 8 core, GPU is still the way to go.

I would be very surprised if you found an actual production configuration that uses a CPU, instead of GPU or a TPU.

if you go here

sort by “classroom”

you will see the fastest CPU is only 2 times slower than the fastest GPU, which is pretty mind blowing considering we dont even talk AI here, we talk actual rendering an area that GPU suppose to vastly outperform CPUs. “BMW” benchmarks is a very similar story. So yeah CPUs can be blazzing fast nowdays. And that CPU is not even the fastest , here you can find a list of CPUs outpeforming high end GPUs in rendering scenes

1 Like