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.
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. https://www.youtube.com/watch?v=WbHPH96A5Lo
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.
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++.
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.
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.
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.
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.
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
hi. I don’t think this forum needs an addons request section. We have seen here the great “Most Missed Addons” thread which handled many requests. There’s Right Click Select site that handles requests and ideas. There’s the “Paid Jobs” section in this forum also. Individual addons that get used or needed get their old threads bumped with requests for fixing. There’s many outlets for this.
I’ll also mention the sheer amount of addons available for 2.8. Numbers are reaching 350+ working addons doing a variety of tasks. So many in fact, it’s near impossibly to test them all out! I wonder how many of them have “requests” already functioning? You would need a pretty long list to prevent duplicating others work.
Sometimes I think it’s better to focus on what addons do, functions Blender has, and focus on what can be done with the free cold beer called Blender. If you watch the videos by some of the experts, you can see quite easily that they have no issues with their high skill level and the tools provided.
I’ve found when making “Requests” to addons developers it comes down to this:
If the addons developer has interest and a use for the function they are more likely to help.
If the addons dev has similar function set to the requested new function, there’s a chance.
If the addons dev has time they might help but usually they are focused on their own projects. @Metin_Seven I already have a challenge with addons in Blender. If you do have a specific request for a edit mode tool maybe you could try the Blender modelling module, there seems to be some work going on there. I notice mention of the .lwo importer. It was sad to lose it but with no maintainer and limited developer resources for addons included in Blender it had to go. Hopefully it will turn up again on github one day.
The modal hotkey display, hmm, I’ll buy into that as far as to say that I think it can be done very easily. In fact if an addons dev is interested in this, I could provide instructions on what I think would be a very simple was to do this.
Not sure how relevant this is but I couldn’t find many other places to request a add/on.
I use a real-time vfx engine called Notch VFX and many of it’s users use blender as there dcc.
Thing is notch has very annoying rotations, fbx obj and alembic requirements and diffrent import settings that can really hinder a workflow, it would be really awesome if someone could make a exporter/presets that took into account the import settings,scale,rotation and any other specifics for imorting into notch, even a simple python checker that could alert you if something is needed for a “smooth” export.
I myself would definitely pay for this and I’m 100% many of the other notch users would.