Over the last week I wanted to push Geometry Nodes as far as I could to put what I’d learned from the rest of the month into practice, and maybe also come up with some useful tips for others getting into the nodes. The prompt was tiny so I wanted to make a little mouse house, loosely inspired by the Brambly Hedge series by Jill Barklem.
(More views at the bottom)
The 6 livestreams (around 40 hours all in) are all on my YouTube channel.
Grab the file for Blender 3.1 linked at the bottom of this post (publically available).
Lessons I Learned
Working in single node trees to this extreme does not help you. You are losing out on actually just being able to transform things in 3D. Because this was Nodevember, I did it pure nodes, but don’t do that.
Geometry Nodes is best used as a tool in a larger workflow rather than THE workflow. This slowed me up when making many of the assets. I may change my position on this as we gain actual modelling functionality.
Proceduralism is incredible for when you need flexibility, fine parametric control, and integrating multiple disparate objects into the control of a new object. It’s all about systems. Even something fairly simple like the plaster squeezing throught the laths on the back wall are a good use here.
Proceduralism is not incredible for one off, specific designs, especially with fairly complex forms. For example, the Fairy Lights themselves (not the wires) would have been significantly faster to model manually. Same for the Almonds / Acorns / Spool / Books etc.
Creating dummy meshes to anchor things like wires gives you a lot of really nice, art-directable control versus just working with the entire surfaces they attach to and hoping to find a good seed value or masking with maths. This would be even better if I was using multiple objects because then I could have literally just manually positioned the surfaces real quick.
Creating specific wires (like the one across the front of the floor) would be a good use of mixing processes. A real curve that lets you art direct and then using Geometry Nodes as a “modifier” that can randomise the path slightly and apply a custom bevel shape and shader etc.
Some things work especially well with Geometry Nodes like the floor and stamps where you can instance a whole bunch of geometry and then have a system that individually modifies each instance’s mesh. This does require some lateral thinking (or just the Copy on Points node in my toolkit).
You can do some really fun things by passing normal data out of Geometry Nodes and processing it in the shader. Example in the scene is the postage stamps. A “real”, 3D Suzanne was used and the normal field captured, then suzanne is flattened and added to the stamp. The normal is passed out and processed in shader to give this fun, flat, printed look.
I find Geometry Nodes fairly easy, in a large part thanks to my toolkit giving me 90+ higher level tools that just do what you actually need to make stuff. Blender is renowned for having a lot of low level tools making it super flexible. When it comes to actually making a whole scene, some higher level workflow aides can be a massive help. It’s a paid add-on but the amount that I use it in my work can’t really go unmentioned here.
Things I’d love to see added
- 3D Viewport Gizmos linked to nodes. Like being able to select a Transform node and getting a multi-transform gizmo displayed on the bounding box centre of the relevant geometry.
- A “Paste 3D Cursor Location” operator. Huge thanks to Joshua (Serpens developer) for making me a python add-on to do this in one of the streams. It’s such a useful thing to have quick access to for quickly being able to drop the 3D cursor location into vector inputs like the end points of a Bezier, or the translation of a transform node. There is a CTRL+ALT+C/V operator to copy entire vectors but because of so many different vector types (numbers vs distance vs degrees) this operator doesn’t work half the time.
- Loops. Loops will make Geometry Nodes so much more exciting and versatile.
- Control for more data. Eg instancing things like lamps and being able to pass out attributes to control the light nodes. Being able to control a camera object would be amazing for handling animation. Access to shape keys. Access to Alembic cache to be able to randomise animation per instance. Access to animation actions. The list continues. Ideally all data could be interactable through a single type of node tree. Siloing this control will bite the user unless there’s a really clear channel for shuttling data around inside Blender. Will named attributes alone be able to handle this?
- More of the same. The devs are doing an amazing job. I can’t wait to see what we’ll be able to make in 12 months!