Blender 3.1
blender.org
blender.org
This update comes with many geometry node improvements which continue the trend of making Blender the premium non-destructive modelling solution. I'm in particular interested in seeing how 6900 XT and regular M1 (in Mac mini form) will perform under Metal with 3.1 and macOs 12.3. I was a long time Radeon VII user on Mac but before 3.0 the stability and performance was just not there so I've moved my Blender experiments to Windows and Nvidia which works spectacularly but I'm not fussed about booting win just for Blender. Sadly I don't think AMD is bringing HIP for their older, pre-6000 GPUs https://code.blender.org/2021/11/next-level-support-for-amd-...
One area I wish they would start to give more attention is their scripting. I consider myself a Python expert, and the Python API leaves a lot to be desired at an architectural level. For example, many operations (bpy.ops) require an accurate "context" to succeed. This context is essentially putting the UI in a particular state, as if the user had clicked specific items and activated certain windows. This makes the api feel like an afterthought to the traditional UI interaction, and introduces a number of issues that I won't bore you with. Suffice to say, you end up writing a lot of boilerplate to ensure predictable state changes in between operations.
If they levelled up the Python API to be more friendly to the code-oriented generative art crowd, they would be even more unstoppable!
My goal with Blender is to animate explainers and screencasts, how feasible is to have a procedural pipeline where I could just launch Python scripts changing basic properties like text, position? Basically I want to generate animations where I have a bunch of re-useable objects but change their properties via code, is this something Python bindings could help me?
Each bubble is parented to a screen object which scrolls upwards, but the parenting is dynamic, so that it only engages when the message has been "sent".
The "typewriter effect" of each bubble is not keyframed (unsupported) but handled by a frame update callback. The typing is determined in advance with random jitters to emulate a person typing.
Hope that explains it! I have considered sharing the framework, but I know I will get a lot of requests that I'm not prepared to handle unless I was receiving donations.
Here’s an example I made https://vimeo.com/497222609
https://storage.googleapis.com/lulim-api-file-storage-prod/R...
In the end I was able to get what I wanted (a script which would spawn a bunch of geometric objects according to a procedural function, set the scene, and ray trace a frame) but it took a bunch of weird incantations in a mix of API idioms.
The bpy.ops are really just a python shim to be able to call them from the UI.
Not a good idea to call them from a script (because of the reasons you cited) but that hasn’t stopped anyone, ever. The whole of blender is designed around the MVC model and the operators are the ‘control’ and are dependent on the ‘view’ (aka context) to do their thing.
All the underlying data structures should be exposed to the python API (through bpy.data IIRC) so, in theory, one could do whatever their little heart desires.
Weird design but once you realize the UI runs everything through python it mostly makes sense.
I think it was the outliner (the part where you edit the keyframes?) where the underlying design made the python API an absolute trainwreck. I spent a bunch of time on that and it was just bad, the best that could be done was to expose it and let people who were sufficiently motivated dig around and figure out how all the pieces interacted because it wasn’t at all obvious. Horrible design from the python side…
Anyhoo, sounds like someone just needs to add a collection.duplicate() or .clone() method — whichever is more pythonic.
>>> arm.bones['Bone'] is arm.bones['Bone']
False
This is not a bug: https://developer.blender.org/T88914As for operator overrides, you may find this list useful:
https://blender.stackexchange.com/questions/248274/a-compreh...
>>> 1 is 1
True
>>> 999999 is 99999
False
"is" is a pretty special operation in python. The only thing it can be reliably used for is to check if two things refer to the exact same object. Retrieving the same value twice has no guarantees about returning the same object twice."is" causes so much confusion I'm not sure if it should've been a part of the language in the first place. It can always be substituted with the more explicit
id(a)==id(b)Of course in the end of the day it's not a problem that you have to use equality operator instead for bpy wrappers. It's just surprising, non-idiomatic in Python, where a developer unaware of this gotcha would rather think using `==` can give `True` for two different bones but similar enough that the `__eq__()` returns `True`.
Substituting with `id` solves nothing and goes against Python's spirit.
Substituting with id goes against the python spirit because "is" exists. I'm trying to argue that "is" probably shouldn't exist. It's a bit of a footgun.
I had no clue how to use blender before, but now I feel like I have at least a passable idea of how the UI works -- despite basically never having touched it!
Don't get me wrong. Full props to Blender and its contributors. The UI/UX, speed, and stability have improved by leaps and bounds in the last few years. I miss the game engine though.
I keep wondering if FreeCAD will eventually make these kinds of strides, or if it's better to try getting Blender to do CAD-likes stuff. I know there is a bit of CAM-like stuff floating around for Blender. But I'm always afraid that this will come up short in the long run, due to Blender's fundamentally mesh-based nature.
I've tried FreeCAD for precision modelling like house plans but it was just painful to use, especially compared to AutoCAD which is super good and the snapping is unlike anything I've seen, but sadly prohibitively expensive for non professional use. Their cheapest plan is something like $200/mo.
As long as you expect everything to be done in two or three iterations and split out the work appropriately, you won't be stuck for too long.
The "triangle of uses" of Blender/FreeCAD/OpenSCAD has a weird void in the middle to fill ...and seeing how Blender keeps growing, I'd imagine it'd be the first covering most of it. It may be argued that it's already doing so in many ways, via plugins and Blender's Python API.
You may be interested in this: https://blenderartists.org/t/geometry-sketcher-constraint-so...
Someone implemented sketching in blender using the geometric constraint solver borrowed from Solvespace. It is also notable that the same solver has been used in FreeCADs assembly 3 workbench.
For the next Solvespace (3.1) release we have replaced the homegrown matrix operations in the solver with Eigen. In some sketches this seems be running 8-10x faster.
The RealThunder development branch fixes one of FreeCAD's main weaknesses -- the topological naming problem, and is worth checking out as well.
So I like to think that there's hope for FreeCAD or something similar. Especially when considering how the 3D printing/maker community has become increasingly prominent. There's definitely demand for open source 3D CAD and a passionate and capable community of makers willing to make that happen. But this type of software isn't built, refined, and polished overnight.
FreeCAD's most serious drawback, the topological naming problem (TNP), is remedied in RealThunder's branch [0] (confusingly also called the RT branch, assembly3 branch, Link Branch, and LinkStage3). Many of the smaller features it includes will also be in the imminent upcoming release (0.20); sadly, the TNP fix has only been weakly promised for 0.21. FreeCAD's other crucial issue is the lack of official assembly support. There are four competing addons; RealThunder's branch includes his, Assembly3.
I often feel that 'bad' UI (especially in free software) is perfectly productive once the user is familiar, but I will admit that difference in aesthetics in FreeCAD from switching themes, tweaking settings, and rearranging toolbars/panels is not small. I'm not sure of the authorship of each, but UI improvements in RealThunder's branch include animated camera snapping and panel autohide/transparency. A FreeCAD idiosyncrasy is the drop-down list for workbench switching, which is not ideal. It is a good example of the flexibility often seen in FOSS software: replace the list with the tab bar addon, custom keyboard shortcuts, or one of two compatible pie menu implementations. The Pie Menu addon can contextually vary from the types of selected objects; the pie menu in RealThunder's branch can be both global and per-workbench.
FreeCAD's keyboard shortcuts are standard, though I'll express a peeve I have with almost all software where one hand goes on the keyboard and another on the mouse: shortcuts arranged mnemonically and thus spread across the keyboard ease learning but are terrible for skilled use. I mean, if I have to hunt with one hand for a key under my desk, I might as well use the toolbar/menustrip/ribbon! Blender does seem to be an exception, though. Seems like the otherscould take a hint from PC games (notably MOBAs).
[0] https://github.com/realthunder/FreeCAD_assembly3/releases Seems to require a side-by-side release installation for dependencies. I also had to fiddle with MSVC.
Was my impression correct; and is this something that is being addressed?
Took me a ~3 evenings of 3 hours each (included some playful fiddling outside the scope of just completing the tutorial) and now I feel like I can generally google for answers to questions and get by in blender.
Also 3.0 featured a roughly 8x speed increase in rendering! It's insanely cool.
Blender Guru and CG Geek are my favorite Youtube channels for Blender tutorials and they both make it easy to get started with Blender with short and practical tutorials.
While I can only create some basic shapes so far, I'm really impressed by what is possible based on the tutorials I've seen. I'm looking forward to getting into rigging and animation soon and start with some low-poly and eventually more higher-resolution models and animations.
I'll go through a tutorial, and start picking up stuff. Then life happens, I spend some time away. Now I want to pick it up again... and I have to start from scratch.
Here goes attempt 5.
I wish GIMP and other projects were like this.
EDIT: Looks like I missed that it's also already compatible with AMD cards in older Macs, they just have to have the latest OS installed!
I have a lot of fun in Blender for two years now, using Nvidia GTX 970 - it's quite old by now, and definitely cheaper than $400.
As someone who has seen a lot of bug reports, Blender has problems with AMD, Mac, and newest Nvidia (RTX) cards.
I don't do animations, but I like to edit some personal videos with a pinch of VFX. I always read that it is great and powerful, but has a difficult UI. I always wanted to learn it, but time is limited.
I recommend doing the Doughnut tutorial by Blender Guru first, then move to CrossMind Studio, another really great one is Ducky 3D. Default Cube is great, but some of the stuff is a bit advanced. Polygon Runway is good but got bored of the same style. The best for more advanced users I've seen so far is Polyfjord, just next level stuff, can't recommend that channel enough.
I dont think Blender itself is that complicated, what is difficult is
1) Find what type of 3d you want do. 2) Do it nicely
The 3d field is enormous and you and depending what you do you will follow a specific technique and workflow.
You don't need to learn everything just with a 1% of Blender you can do pretty great stuff!
I learned (well.. I'm learning) Blender this year and I'm glad I did. It's very intimidating at first, but you get the hang of it, and then you can't imagine a world without it. I now even prefer it to stuff like Photoshop for doing simple graphics work.
Apple is still not listed on the contributors list.[0]
Softpedia has a mirror though: https://www.softpedia.com/get/System/Benchmarks/Blender-Benc...
Here's some numbers from my latest benchmark run:
"Junk Shop" demo using Cycles
M1 Max (10 cores CPU / 32 cores GPU)
Blender 3.0 (CPU) / 1:14.64 minutes
Blender 3.1 (CPU) / 1:10.86 minutes (1.05x)
Blender 3.1 (Metal GPU) / 0:44.16 minutes (1.68x)
Blender 3.1 (Metal GPU+CPU) / 0:27.90 minutes (2.67x)
For a reference, RTX 3090 (OptiX) was 0:18.22Initial testing on one of my low poly scenes:
v3.1 cycles GPU — 35.5 seconds.
v3.0 cycles CPU — 90 seconds.
3.1 with support for Metal and GPU rendering boosted speed by about ~ 3x
[0]: https://blenderartists.org/t/procedural-abandoned-house-with...
Sure, it's not Sketchup, and there is a little bit of a steep learning curve at the beginning (it used to be much, much worse).
However, unlike Sketchup, the freaking depth of the software is nothing short of amazing.
That investment you make at the beginning is really, really worth it.
Also: there is literally a ton of tutorials on YouTube to get started with Blender, and it is rather easy to learn the basics nowadays by doing a bit of monkey see monkey do with Blender open on one monitor and the tutorial vid on the other.
Blender is software that feels complicated at first because, fundamentally it is doing a complicated thing. But once you start to understand it you cut through all the things that you don't need to worry about because 90% of the time you will be in VERY specific contexts (hard modeling, sculpting, painting, etc) and not worrying about large swaths of the features. But to do everything it needs to do all of those things have to exist.
Being able to learn how to context switch and take advantage of the different workspaces helps a TON. Gotta get used to it though, and it is a big lift. I started messing with Blender off and on a year or so ago and while I'm no master, once I get in my groove I feel like I can move pretty quickly.
Still, give you some clear goal about what you want. Blender can do nearly everything related to 3D, compositing and even some special effect. And then search a YouTube tutorial on this subject — it probably exist!
Some of the development funds should go to training materials.
Between the stuff they themselves offer[0] and the literally thousands of training videos on YouTube.. what do you think is missing?
I started recently with Blender 3.0 and I can watch without any problem tutorials made with Blender 2.8 (3.5 years ago). Now that I'm getting more confident I can even watch tutorials from older versions and follow them without a problem.
And btw, you don't need to learn every new feature. Blender is a incredible versatile and ginormous software and you only need to learn what you need for your specific workflow. I can maybe know 1% of Blender and I'm superhappy with what I'm doing nowadays!