2024-04-24 - Design Session: Essentials Assets

Attendees:

  • Dalai Felinto
  • Pablo Vazquez

As part of Blender 5.0 asset embed will encourage more high-level assets (node groups) to be shipped with Blender.

This design proposal tries to map out which assets and node-groups could be shipped with Blender and the related needed changes.

This proposal will still be presented to the relevant modules (Modeling, Nodes & Physics, User Interface, …).

Missing UI features

There are still UI behaviour that we see in existing modifiers which are not possible with node-group modifiers.

  • Icon for Geometry Nodes modifiers
  • Expanded enum
    image
  • Inlined booleans
    image
  • Inline toggle
    image
  • Node Options are not exposed as Menu Switch inputs.
    image
  • Catalog “root/path”
    • Allow to move Hair, Normals and the new node-group modifiers under the same catalog (Modifiers).

Primitives

Mesh Primitives could be replaced by parametric meshes.

When entering edit mode (or sculpt, …), user is prompted to apply the modifier.

This should work even for (non-essential) geometry-nodes systems as long as the object:

  • Has no data in any domain (points, …).
  • Has (geometry nodes) modifier.

World

It would be nice to migrate existing built-in viewport HDRi into World assets so they can be used for rendering and more easily managed by users.

Step 1: Duplicate built-in HDRIs as World Assets

  • Doing only this would already allow users to use those HDRis for final rendering.

Step 2: Replace Viewport Shading HDRIs selector by a World asset selector.

  • This shouldn’t bloat the .blendfile.
  • The display options (Rotation, Strength, Opacity, Blur) should still be possible.

Step 2.5: Operator to migrate user custom HDRIs into World assets.

Improved Modifiers

Modifiers are a good high-level interface for advanced functionality. There is much to be gained from using nodes though.

It would be interesting to convert some existing modifiers and have users using them as a start point to geometry-nodes customization.

While doing so we should:

  • Provide a full feature parity with original modifier
    • This allows for backward compatibility with existing files.
  • Enhance its functionality.
    • Technically this is optional, but it gives more reason to spend time on it.
  • Keep things as simple as possible
    • Use mostly “Single Value” inputs.
    • Leave the complexity for the node implementation, while keeping the UI simple.

Array Modifier

The array modifier would be a good first candidate to port to an asset.

  • Add randomness.
  • Circular control.
  • Mirror
  • Instancing

Feature Parity

Geometry-nodes assets can be used to bring feature parity to new parts of Blender.

Grease Pencil

There are missing features that could be brought back via assets:

  • Screen Space Stroke thickness
    (freestyle: Line Thickness: Absolute / Relative)
  • Line Art
    • Primitives with Geometry Nodes modifiers.
    • This could likely be composed by separate modifiers.

Curves

The new (hair) curves still don’t support the same functionality as the old object type. To bring back some of the functionality we could have:

  • Primitives using the new Curves object type with a geometry-nodes modifier
  • Separate modifiers or sub-panels for:
    • Bevel
    • Path Animation
15 Likes

Why? What would this accomplish?

That allows for using primitives for blocking, preserving their parametric-nature. Right now the moment you add an object, if you don’t tweak the parameters in the redo panel, there is no way to do this again.

12 Likes

I think this would already be a big step up. Parametric primitives are very useful in Houdini and Maya. Unfortunately having to apply the modifier to edit feels cumbersome If I didn’t actually need the parametric features

Maybe the redo menu should have an option to “make parametric” (which could be on by default)

since the redo menu options are saved between adding new meshes, I could see myself enabling or disabling it once and using it for entire parts of the process

I’d probably tick it on for the blockout and disable it later on in the project?

1 Like

This is honestly really exciting. Replacing modifiers with Geometry Nodes-based ones is a clear signal of what this software aims to become in the future. It feels a bit strange right now to have the same task accomplished by either a node tree or a modifier.

For example, I haven’t used the Array Modifier since I started learning Geometry Nodes because of how flexible it is, but I had to build a node tree from scratch every time. Having an editable base to start from is honestly a great improvement.

This also gives new users the opportunity to see what can be done with nodes and helps them learn through (relatively) simple or intermediate use cases. This is a thumbs-up on many levels.

That said, how is this supposed to behave when you edit the node tree? If I edit a Geometry Nodes version of the Bevel Modifier, would it update every instance of the modifier? Or would it create a unique instance if you try to edit the tree?

Thank you for your work!

2 Likes

To be clear, you wouldn’t have to go to the modifiers panel, there would be some popup when you enter edit mode, and you could probably just press “enter” to move forward and edit the applied parametric geometry. But some option in the redo panel still might be helpful.

With asset embedding, this aspect will behave like linked data-blocks currently do. So you’d have to create a local copy before editing. The fact that editing these imported node group assets affect future imports is one of the main problems the asset embedding development will solve. For example it’s pretty easy to break the “Shade Auto Smooth” operator this way right now.

2 Likes

Wohoo! Very excited for this! Happy to help build essentials assets if needed.

Before more things get moved to assets, could we get some eyes on this issue (#123508)? It hasn’t been replicated by any developers and so is not triaged, but looking at the number of comments and references there is definitely something weird going on with correctly finding the built-in assets on some computers some of the time.

When entering edit mode (or sculpt, …), user is prompted to apply the modifier

I do agree that an extra popup for every single primitive added does seem cumbersome for quick modeling. An option to either disable parametric primitives or auto-apply only primitive modifiers would be awesome.

A “Mesh Edit” modifier here would probably be the fully procedural way, but that’s… extremely out of scope.

At the same time, having this popup would be great in other situations too. Could this be made more general for any object with no geometry data? Like collection instances? If you drag a collection instance from the asset browser and want to edit it, it’s at least four clicks before you can start doing anything. Or maybe that’s more of an asset browser thing to import collections not as instances, which is a totally different topic.

for a bcon presentation the melting effect one, a developer made an “influence” node its crazy useful and should come with blender imo

(post deleted by author)

For the Mesh Primitives can we have something like this, where old behavior is still there as it is now and then next to it there is a procedural icon. (like in image) User can then quickly select what it needs. This would be faster than having ability to create object and then decide if it should be procedural or the one that is destructive. For us who model a lot and need destructive workflows primitives, would mean another additional click when adding objects that can end up with dozens of clicks at the end of the day.

I was also wondering if there is any plan to do radial symmetry modifier? This was extremely useful modifier that I often use in one other 3D software but can’t replicate it in Blender. It basically preslices your object and then repeats it radially (array) and merges vertices if needed. This is not just an radial modifier, it is a symmetry modifier that can do radial array.

Higher levels geometry nodes would be amazing addition also. Can’t wait to see what you guys do for 5.0!

2 Likes

As a note, some modifiers have behaviours tied to edit mode in ways that are currently impossible to replicate :

  • the Mirror modifier’s clipping option prevents the user from moving vertices that lie on the symmetry plane (which is great, to be clear).
  • the “show on cage” modifier option allows the user to select elements from the mirrored side.

The first one is effectively the modifier controlling what happens above it (on the edit mesh) and I don’t see it happening at all because that’s not how data is designed to flow. It’s similar to how “limit” constraints affect transform operations in object or pose mode : instead of just clamping the values, they prevent transformations themselves from going beyond the limits.

Should this be possible ? how ?

1 Like