The Blender dev team never ceases to amaze me with their incredible iteration speed. It's crazy how much you can get done when you assemble a team of highly skilled, organized, and passionate people to all work on what they love full time.
Blender is hands-down my favorite piece of software I've ever used. I use it for professional purposes semi-regularly, and with each new update just keeps on getting better and better.
I'm not professional or anything but I find 3ds max UI and way of doing things/UI/toolbars/working with geometry and keyboard shortcuts MUCH more intuitive than Blender. Everybody says Blender is awesome and I respect that, but seriously, no matter how hard I try I always end up saying "this is much easier in 3ds max". Any recommendations?
Probably to stick with 3D Max. I really like 3D Max a lot. It was my tool of choice for about 18 years but, as I stopped doing much 3D professionally, I just decided to give Blender a shot and, once I got over some of the weird UI, most of which is now fixed, I found that I liked it a lot.
I started using 3D as a lark. I am a long-time on-line editor and VFX compositor and had access to 3D in the various studios I worked when commercial 3D packages became a thing, starting in about 1983 or so. More importantly, I had access to some amazingly good animators, modelers and 3D engineers of whom I could ask questions and who I could watch work (and annoy). They had a lot of downtime to talk because of rendering time. Several of these people are, today, legends in the field.
In 1995 I started my own 3D animation, design and VFX studio. It was a Softimage house on SGI with a DEC Alpha render farm but I had a couple seats of 3D Max as well as Side-Effects Prisms and, later, Houdini.
I have used Cubicomp 3D, Bosch FGS-4000, Vertigo, Wavefront, Alias|Wavefront, Softimage, Prisms, Houdini, Maya and 3D Max packages as well as the Rhino 3D Nurbs modeler and several other long-gone packages including a 3D solids system whose name I cannot recall.
A 3D guru I am not, though. I regularly see stuff today that I just cannot imagine how in the hell was done and the insane skill levels involved in doing it. I will point out one thing that was common among the really good 3D practitioners: most of them are really good musicians in addition to being outstanding fine artists. The character animators generally had a drama background.
Now, I just mostly play around, doing the occasional explainer video/animation pieces and elements, usually having to do with automotive and aviation technologies. My old-ass brain can't keep up any more.
Very much its own UI that didn't follow (the admittedly somewhat loose) established conventions. Right-clicking to select and other weird stuff. I got used to it but it really required a lot of playing around to begin to associate the user-model with my prior experience in 3D software-land.
I remember thinking at the time that, had I had no prior experience to build on, I probably would have given up on it.
Probably very much depends on what you do with Blender. I've been trying to port my exporter plugin from Maya to Blender, and it has been nothing but frustrating. It's been quite a while since I wrote it for Maya, but I remember the Maya API (C++ and MEL) to be well documented, well structured, and quite pleasant to work with. I was always amazed at Maya's basic architecture: Every UI action maps to a command that is run by the interpreter. This makes scripting very easy.
Blender's Python API on the other hand is very poorly documented, and - to me - seems poorly thought out. It's not really designed as an API, it's just exposing the existing C++ code, and usability is not a concern. It feels tacked on, leaving lots of gaps. Somewhere I've seen a quote by Ton Rosendaal that Blender is for artists, not for coders. If you want Blender to be a competitor for Maya that seems very short sighted.
The one thing that impressed me though, was the speed by which the Blender devs react to tickets. Hats off to them!
that would be pretty telling, I expected python to be big advantage for blender but if the internals/model are fluffy, and fluffier than good old maya i'd be worried
Another problem is that the code changes from version to version, so a big chance that example you found no longer works. While annoying it’s not insurmountable, but a good doc would help a lot indeed! Perhaps with the LTS release that’s a thing to solve.
Unless the example is from 2.79 and earlier it shouldn't take any or only minimal adjustments. There have been some API changes between versions since 2.81, but they usually wouldn't affect a lot of add-ons or are very easy to change.
All the API changes are also documented in the release notes [0] and the API docs allow to view the Python API for each version [1].
What change between versions caused you problems and what parts of the API docs were lacking?
What is a problem, though, is that when you google an issue, and find a solution, you then have to upgrade that solution to your version of Blender. That is very annoying because unless you're familiar with Blender, you can't tell if the solution is wrong, or correct but outdated.
From my experience script examples usually indicate what version they were made for and add-ons have to declare the minimum supported Blender version in their `bl_info`, which tells what API version it was implemented for. I know that at least on Blender's Stack Exchange the community tries to provide updated answers if anything relevant has changed in a new version.
I can see that older scripts for 2.79 and earlier may cause the issue you're describing, but this doesn't seem like a Blender specific issue. How did Maya handle API changes between versions? I would assume that there were breaking changes at some point that caused similar issues.
I have no experience with blender but have been developing for maya for 7+ years or so. Python in Maya is very much a afterthought and extremely slow (even for Python standards). There is noting pythonic about the api which by all means is just a port of the mel interface.
The documentation is great, agreed, but I am not sure you can attribute that to the python part of Maya. The documentation structure goes back to pre python days.
If any of the major studios spent a fraction of their development budget on Blender rather than Maya (and contributed back to the community) I think we could see great strides in polishing Blenders usability for scripting.
> That is pretty much how it works in Blender. All the buttons and properties in the UI are accessible through the Python API.
Yes, it seems that way, and I was hopeful at first. But then I tried to use it.
In Maya, you can just copy paste a command from the command window, and it will work.
When you do that in Blender, it will probably give you an unspecific error message like "not possible in the current context". Because you need to manually switch Blender e. g. from Object mode to Edit mode (Faces), and your command only works in that context. So you develop a script that works initially, but later you find that it only works if Blender is in a certain state. That state is nowhere documented, you have to guess what it wants.
While Maya uses arguments to commands, Blender uses the equivalent of global variables.
That is specific to operators (Blender's implementation of buttons) since they are closely tied to their use in the UI. They may expect a specific context which is checked by the operator's `poll()` function. The namespace the operator is in should hint at what that context is, e.g. `bpy.ops.mesh` works with mesh data which is accessed in edit mode. Other operator namespaces directly reference area types, those need to be executed within that area. For instance operators `bpy.ops.view3d` will most likely require to be executed in an area of type `VIEW3D`. That is a requirement because the data that the operator needs is otherwise not accessible. I understand that the approach you are used to in Maya is more convenient.
When you have issues with calling an operator due to a wrong context, there are different ways to approach the problem:
1. Figure out what the necessary context is and switch modes, areas, etc. to match the requirements.
2. Figure out what the necessary context is and override the context.
3. Avoid using operators.
Approach 1.) could be accomplished by checking where the operator is originally used in Blender. For instance the `bpy.ops.mesh.remove_doubles()` is available in edit mode in the Mesh > Clean up menu. Thus edit mode is required to run the operator. This will work for many operators because they don't have very complicated requirements.
Approach 2.) is for when you must use an operator, it requires a complicated context and you know about Blender's internals. You can look at the operator's (poll) implementation and construct a specific context that is passed into the operator [0]. This should only be used if there is no better alternative.
Approach 3.) is preferable when you are working with mesh data. Instead of using regular operators you can use bmesh instead [1]. It doesn't require switching to edit mode or passing a context. It's usually the more efficient approach as well.
The comment above is more of an explanation of how this currently works in Blender and how one can approach the aforementioned challenge.
I do agree that the Python API is often just a thin wrapper around the C/C++ code [0] and that the documentation of the required context for operators is a bit lacking for people who are not familiar with Blender's implementation. This is also acknowledged in the API docs [1]. However, I do think the API is quite usable and not particularly complicated to understand.
I have the same observation as a fairly novice maya programmer. it's absolutely priceless to be able to do something using the "regular" UI and just see every single command that is run and then just copy paste the appropriate bits and stitch them together with various conditionals and tests.
maya is even MORE layered than just ui -> script commands, there's the intermediate layer of the node editor which shows the scene data as a set of interconnected nodes and what information they're passing between each other (with a few odd omissions) basically any function in maya can be accessed at least 3 ways at 3 different levels of technical skill. where in blender there are still fairly large missing chunks to translate between the UI level, node level and script level.
all that being said it's a very impressive 3d suite and I highly welcome any and all competition!
I'm still completely confused what the title they chose is supposed to mean. What's ending? They don't say. I scrolled through that whole page and if just looks like their normal release showcase.
Does this just mean that they're bumping up the version number to 3.0 with some big new core features? It sounds like something significant is coming to an end, like Blender isn't going to keep being Blender.
2.93 marks the last Blender 2.X release, which is significant because Blender 2.0 came out in August of 2000. 21 years of 2.X development is the "Era" they're referring to. The next major release will be 3.0!
I love the celebration of all they've done! This is so great. Really well put together page. And I have no idea what the next big mystery is going to be. Exciting moment for software that's just gotten so so so so advanced over the years, that's really iterated & progressed consistently. Here's to ya'll!!
I feel like Blender3D 3.0 might perhaps be Blender 3^2D. Now with nine-dimensional hyper-editing!!
As someone who works on mesh importers and low level graphics programming that new spreadsheet feature is going to be incredibly useful for debugging UVs and edge indices.
Many new features in Blender are hyped up, but I don't think the new LTS policy really receives enough spotlight. It's exhausting trying to keep up the pipeline and addons up to date when just downloading the newest version from Blender.org. Blender just moves that fast. LTS gives people a solid foundation to build on. It's a complete blessing.
I entered just yesterday to Blender News[1] and was wondering why there aren't any new articles in 6 months. Even Blender Guru[2] seems to have stopped for almost a year.
Does anyone have some insight on why these two stopped/slowed down? I remember these two were amazing sources of technical posts about Blender and I loved reading and learning about it there.
The "Features Reel and Showcase" video on that page was a cool overview of the type of work being done in Blender (link to video: https://youtu.be/fxNlpQYRz7s)
I dream that one day whoever did that incredible transformation to Blender would do the same to Inkscape and Gimp UIs. In one or two versions it went from the past to the future!
Personally, I'd rather have Blender integrate the feature set of Inkscape and Gimp directly - in the same way that Blender makes an awesome video editor today.
I wouldn't be surprised if that comes someday, since there's already super basic painting on UVs, but "real" work tends to require exporting and working in some form of 2d app be it Gimp or Krita or whatever. Having the same level of functionality directly in the UV editor or even directly on the model to help deal with seams would make shit SO MUCH easier.
Yeah my workflow on my last 3d game required 'layers' in the texture so I had to set up that layering in the shader, rough spray the general idea of what I wanted onto the model, export everything, edit the textures in Gimp to make it look good instead of fingerpainty and flatten them.
Also, the way UV editing selection works is rough. If you don't have a face selected in the model, it simply does not show up in the UV. The UV has its own selection. So in order to single out a part of the UV based on a set of faces you need to first select the faces, remember where in the UV map they live, then select the whole model again, then select the UV points again.
Blender, Inkscape, Krita and GIMP are all good software that can compete with paid alternatives, but only Blender was successful at making modern UI that gives you fast comfortable workflow.
It is now included in this version as the Line Art Modifier. While LANPR was a nice render engine, iterations between the summer of code projects and v2.93 moved to a grease pencil based modifier.
I have always admired blender, since I was 14. Now, in my late 20s. It's just the lack of talent that stops me from using it. But will always admire what it can do, and what Blender does for creatives.
"It's just the lack of talent that stops me from using it."
A 3D modeling application is a "process" on top of a mathematical and algorithmic basis. A process is not something intrinsically intuitive - you can't have talent for a process, you always need to learn it.
There are lots of great learning resources available (check the Udemy courses for example).
I am a COMPLETE amateur. That being said, I’ve been using blender for 3D print modeling. There’s a thing I’ve been working on for a few months that was almost impossible in 2.92 and prior. App would crash all the time. Someone more experienced was able to use the new geometry nodes in 2.93 and was able to super efficiently create the same effect. I’m really glad it’s now out of beta.
Have you tried to join all the meshes you need in a single object and then using the recent voxel remember to turn them into a single surface? It requires no extra addons and you can choose how detailed you want it to be.
After joining all the meshes, select the object and go to the object data panel, as visible here:
There's also the remesher in blender these days, either as modifier or as operator. Simply join all your objects into a single object with control-j, and hit remesh.
Although if you already know Blender shortcuts and concepts, the built in video editor makes a lot of sense to use as everything works the same way as you already know it.
It's been a very long time since I used Blender. The UI update appears to have changed enough that I no longer recognise the workflow.
Is there still an equivalent to the "space key brings up an everything menu"? I couldn't seem to trigger than when I was playing around with the new stuff.
When you first run a new version of Blender a popup should ask if you want to use space for search. If you already made it past the welcome screen, the user preferences (keymap tab) has an easy toggle for changing the space bar behavior.
Oh thank god, applying geometry nodes in 2.93 ACTUALLY creates the geometry now, before you had to do something else (I forget what) to get real geometry after doing all your nodes. Now that they at least appear to be far more fully baked than 2.92 I will need to get back to messing with blender and, more specifically, creating larger scenes taking advantage of geometry nodes.
blender is somthing you should explore whenever you have time.
just follow the blender channel beginner series and you all done.. then it is all up to you, your talent, your persistence to do something. and do you know that it is FREE? now compare that to other software packages....
The biggest issue we’ve had with Blender is performance in any non-trivial scene, both in-viewport and while rendering. We’re constantly experiencing bottlenecks that appear to be coming from single-threaded operations. It’s very frustrating to see only 3-6% of your 16 core CPU and 0% of your GPU being utilized for large chunks of time.
It’s also been very difficult to find information on how to avoid these kinds of issues. I would love it if the documentation for every major feature included a table that listed multithreading support, GPU support, runtime complexity, memory complexity, etc. so that we could make more informed decisions.
A while ago - maybe 12 months back - there were lots of rumours that Blender were working with Ubuntu and Canonical to provide “professional support” for Blender LTS. Does anyone know if this came to fruition?
Welp, tried the experimental ARM build of this one (for M1 mac) and am pretty impressed by the boost, really quite something that they already have a decent jab at native support in such a short time.
Also, blender really does just keep getting better and better, geometry nodes is really quite something.
I have a small company that sells 3D printed jewelry (https://lulimjewelry.com) and I use blender to automatically generate STL files ready for printing with my customers designs engraved on them.
Their scripting support is top notch. Virtually everything you can do in the GUI is accessible with the scripting library. You can even pop open a window that shows the equivalent python commands to actions you are doing in the GUI. They have a nice integrated editor for writing/debugging, and when you are all done you can run it headless from the command line.
I have blender running in a docker container on google cloud run that spits out STL files, which is awesome.
76 comments
[ 5.2 ms ] story [ 168 ms ] threadBlender is hands-down my favorite piece of software I've ever used. I use it for professional purposes semi-regularly, and with each new update just keeps on getting better and better.
Excited for the 3.0 releases!
In 1995 I started my own 3D animation, design and VFX studio. It was a Softimage house on SGI with a DEC Alpha render farm but I had a couple seats of 3D Max as well as Side-Effects Prisms and, later, Houdini.
I have used Cubicomp 3D, Bosch FGS-4000, Vertigo, Wavefront, Alias|Wavefront, Softimage, Prisms, Houdini, Maya and 3D Max packages as well as the Rhino 3D Nurbs modeler and several other long-gone packages including a 3D solids system whose name I cannot recall.
A 3D guru I am not, though. I regularly see stuff today that I just cannot imagine how in the hell was done and the insane skill levels involved in doing it. I will point out one thing that was common among the really good 3D practitioners: most of them are really good musicians in addition to being outstanding fine artists. The character animators generally had a drama background.
Now, I just mostly play around, doing the occasional explainer video/animation pieces and elements, usually having to do with automotive and aviation technologies. My old-ass brain can't keep up any more.
I remember thinking at the time that, had I had no prior experience to build on, I probably would have given up on it.
https://www.bforartists.de/
Blender's Python API on the other hand is very poorly documented, and - to me - seems poorly thought out. It's not really designed as an API, it's just exposing the existing C++ code, and usability is not a concern. It feels tacked on, leaving lots of gaps. Somewhere I've seen a quote by Ton Rosendaal that Blender is for artists, not for coders. If you want Blender to be a competitor for Maya that seems very short sighted.
The one thing that impressed me though, was the speed by which the Blender devs react to tickets. Hats off to them!
All the API changes are also documented in the release notes [0] and the API docs allow to view the Python API for each version [1].
What change between versions caused you problems and what parts of the API docs were lacking?
[0] https://wiki.blender.org/wiki/Reference/Release_Notes [1] https://docs.blender.org/api/current/index.html
What is a problem, though, is that when you google an issue, and find a solution, you then have to upgrade that solution to your version of Blender. That is very annoying because unless you're familiar with Blender, you can't tell if the solution is wrong, or correct but outdated.
I can see that older scripts for 2.79 and earlier may cause the issue you're describing, but this doesn't seem like a Blender specific issue. How did Maya handle API changes between versions? I would assume that there were breaking changes at some point that caused similar issues.
The documentation is great, agreed, but I am not sure you can attribute that to the python part of Maya. The documentation structure goes back to pre python days.
If any of the major studios spent a fraction of their development budget on Blender rather than Maya (and contributed back to the community) I think we could see great strides in polishing Blenders usability for scripting.
> I was always amazed at Maya's basic architecture: Every UI action maps to a command that is run by the interpreter.
That is pretty much how it works in Blender. All the buttons and properties in the UI are accessible through the Python API.
Yes, it seems that way, and I was hopeful at first. But then I tried to use it.
In Maya, you can just copy paste a command from the command window, and it will work.
When you do that in Blender, it will probably give you an unspecific error message like "not possible in the current context". Because you need to manually switch Blender e. g. from Object mode to Edit mode (Faces), and your command only works in that context. So you develop a script that works initially, but later you find that it only works if Blender is in a certain state. That state is nowhere documented, you have to guess what it wants.
While Maya uses arguments to commands, Blender uses the equivalent of global variables.
When you have issues with calling an operator due to a wrong context, there are different ways to approach the problem:
1. Figure out what the necessary context is and switch modes, areas, etc. to match the requirements.
2. Figure out what the necessary context is and override the context.
3. Avoid using operators.
Approach 1.) could be accomplished by checking where the operator is originally used in Blender. For instance the `bpy.ops.mesh.remove_doubles()` is available in edit mode in the Mesh > Clean up menu. Thus edit mode is required to run the operator. This will work for many operators because they don't have very complicated requirements.
Approach 2.) is for when you must use an operator, it requires a complicated context and you know about Blender's internals. You can look at the operator's (poll) implementation and construct a specific context that is passed into the operator [0]. This should only be used if there is no better alternative.
Approach 3.) is preferable when you are working with mesh data. Instead of using regular operators you can use bmesh instead [1]. It doesn't require switching to edit mode or passing a context. It's usually the more efficient approach as well.
[0] https://docs.blender.org/api/current/bpy.ops.html#overriding...
[1] https://docs.blender.org/api/current/bmesh.html
I do agree that the Python API is often just a thin wrapper around the C/C++ code [0] and that the documentation of the required context for operators is a bit lacking for people who are not familiar with Blender's implementation. This is also acknowledged in the API docs [1]. However, I do think the API is quite usable and not particularly complicated to understand.
[0] https://docs.blender.org/api/current/info_gotcha.html
[1] https://docs.blender.org/api/current/info_gotcha.html#why-do...
maya is even MORE layered than just ui -> script commands, there's the intermediate layer of the node editor which shows the scene data as a set of interconnected nodes and what information they're passing between each other (with a few odd omissions) basically any function in maya can be accessed at least 3 ways at 3 different levels of technical skill. where in blender there are still fairly large missing chunks to translate between the UI level, node level and script level.
all that being said it's a very impressive 3d suite and I highly welcome any and all competition!
Does this just mean that they're bumping up the version number to 3.0 with some big new core features? It sounds like something significant is coming to an end, like Blender isn't going to keep being Blender.
I feel like Blender3D 3.0 might perhaps be Blender 3^2D. Now with nine-dimensional hyper-editing!!
Does anyone have some insight on why these two stopped/slowed down? I remember these two were amazing sources of technical posts about Blender and I loved reading and learning about it there.
[1] https://www.blender.org/category/news/
[2] https://www.blenderguru.com/
A lot of communication is also made through Blender's youtube channel: https://www.youtube.com/c/BlenderFoundation/videos .
https://code.blender.org/
Also, the way UV editing selection works is rough. If you don't have a face selected in the model, it simply does not show up in the UV. The UV has its own selection. So in order to single out a part of the UV based on a set of faces you need to first select the faces, remember where in the UV map they live, then select the whole model again, then select the UV points again.
Blender, Inkscape, Krita and GIMP are all good software that can compete with paid alternatives, but only Blender was successful at making modern UI that gives you fast comfortable workflow.
A 3D modeling application is a "process" on top of a mathematical and algorithmic basis. A process is not something intrinsically intuitive - you can't have talent for a process, you always need to learn it.
There are lots of great learning resources available (check the Udemy courses for example).
I want something that can do a surface-remesh. Kind of like being able to boolean unify 100 plus objects at once.
I think the answer might be in geometry nodes somewhere...
Edit: Google found me a Booltron addin + bounding box diff process that may sort me for now. Will test when I get home.
After joining all the meshes, select the object and go to the object data panel, as visible here:
https://docs.blender.org/manual/en/latest/modeling/meshes/pr...
From the remesh section, you can choose between the voxel remember and the quadriflow one. I think the Voxel one might suit your needs.
I tried the booltron process and it seemed to work, about three quarters of the way down: https://blender.stackexchange.com/questions/5752/simplify-me...
But I will also try yours to compare and contrast differences. Thank you!
tool: https://docs.blender.org/manual/en/latest/sculpt_paint/sculp...
modifier: https://docs.blender.org/manual/en/latest/modeling/modifiers...
I tried the booltron process and it seemed to work, about three quarters of the way down: https://blender.stackexchange.com/questions/5752/simplify-me...
But I will also try yours to compare and contrast differences. Thank you!
just follow the blender channel beginner series and you all done.. then it is all up to you, your talent, your persistence to do something. and do you know that it is FREE? now compare that to other software packages....
It’s also been very difficult to find information on how to avoid these kinds of issues. I would love it if the documentation for every major feature included a table that listed multithreading support, GPU support, runtime complexity, memory complexity, etc. so that we could make more informed decisions.
Also, blender really does just keep getting better and better, geometry nodes is really quite something.
Their scripting support is top notch. Virtually everything you can do in the GUI is accessible with the scripting library. You can even pop open a window that shows the equivalent python commands to actions you are doing in the GUI. They have a nice integrated editor for writing/debugging, and when you are all done you can run it headless from the command line.
I have blender running in a docker container on google cloud run that spits out STL files, which is awesome.