Node Tools Feedback

Update: I was able to get correct selection. I didn’t notice you could change Set Selection from points to faces, I’m stupid.

I wrote down indices assigned so that maybe ChatGPT could identify the pattern they’re assigned, and I could fix with math node, but it couldn’t. Simply storing Face Sets as integer attributes gives those indices:

6 - 27, 28, 29 - 37 - 44, 45, 46, 47, 48, 49 - 256, 257, 258, 259, 260 - 262, 263 - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286 - 288 - 316, 317, 318, 319, 320, 321, 322 - 359

Without correct, linear index it is impossible to do any operation that iterates through all of the face sets individually. That is very important to be sorted.

@HooglyBoogly

I was getting big bug which I think was from node tools, and downloaded latest build to check it, and now I can’t see tools I appended from previous blend file, and console shows this error

ERROR (bke.lib_id): C:\Users\blender\git\blender-v400\blender.git\source\blender\blenkernel\intern\lib_id.cc:280 id_us_ensure_real: ID user count error: NTFace Sets to Materials (from '[Main]')
ERROR (bke.lib_id): C:\Users\blender\git\blender-v400\blender.git\source\blender\blenkernel\intern\lib_id.cc:280 id_us_ensure_real: ID user count error: NTFace Sets to UV (from '[Main]')

Creating new tool and copying same nodes there works, but appended ones show this error. Also, creating new data-block doesn’t duplicate node tree like in modifier groups, it creates empty one and you need to copy node tree from original group.

Node Tools give us attribute-based shape keys!

First, let’s create attributes for our mesh: base and shape1. They will act like shape keys later.

Now, a node group to store shape key data into an attribute.

Reading shape key data:

Finally, a modifier to apply a shape key.

Procedure:
First, we enter edit mode and store the initial shape key into ‘basis’ attribute.
After (still in edit mode), we change the shape and store the result into shape key “shape1”.
Inside Edit mode, we restore ‘basis’ shape key with our shape key reader tool.

Finally, we leave edit mode and plug our ‘apply shape key’ modifier to our object. Using ‘shape1’ as input. Voilà, there we have our homemade shape keys.

12 Likes

Nice, this is easy to use also. So we can control them by sticking some empties to armature using geo nodes.


5 Likes

This even could work for sculpt mode.

With a single ‘apply shape key’ geometry nodes modifier group, a bunch of shape keys could be realized.

modifiers :=
  → shape_key(arm, driver(armature, bone_arm))
  → shape_key(leg, driver(armature,bone_leg))
  → shape_key(shoulder, driver(armature,bone_shoulder))
  … and so on …

But we would end up using many modifiers to cover all shape keys.
Thinking about it, it could help to have a big modifier which covers all shape keys and bones. This also could be tedious.
Are there plans for attribute lists or key-attribute dictionaries? ( A container of attributes, where a bone’s name could be used to lookup an attribute) .

I am excited about Node Tools.

1 Like

Yeah that is exactly what I was talking about in first comment on this post. Geonode tools can give us ability to interpolate between shape key positions non-linearly, which is a giant feature for those of us who work with shape keys. Using fields for Value property of shape keys.

ice_video_20231013-140052

5 Likes

I hope my feedback is helping I know I’m commenting a lot.

Tried using node tools (method Leonard created) in my actual workflow. I’m animating face with shape keys and wanted to test it. To save positions as attributes and interpolate non-linearly between them.

Nothing is possible it seems.

Problem n1: Using node tool deletes shape keys (#113662 - Node Tool deletes Shape Keys - blender - Blender Projects)
I lost my entire shape key set when I did that. I wanted to save position when shape key value was at 0, and when it was 1, but it was obviously impossible now.

Problem n2: Using node tool deletes face sets.
I use face sets for splitting face into different parts, and without them I couldn’t even sculpt new shape for animation even if I decide to ditch shape keys. I know you encountered this in video with Pablo so I’m not gonna report this.

Problem n3: Geonodes modifier doesn’t work with Multires
Weirdest shading problem, first time I’m seeing something like this. I can’t geonodes modifier above multires, which is intentional, but when I put it after this abomination happens that you can see in the video. I also have Solidify, and when I put geonodes after solidify, it flips all my normals. I don’t even know what is the problem here, or what to name it, so I can’t report this as a bug.

I kinda failed at every step and didn’t actually get the chance to play with vertex interpolations. I wanted to create something to showcase at Confrence in my talk about shape key animations, but sadly impossible now. As amazing as this new feature is, it seems sculpt mode features are just too ancient to be working with those. Unless sculpt mode sees some maintenance I can’t see many use cases for my personal workflow now.

1 Like

I don’t understand how face set index is created, but below setup seems to work. Face set index was from 21 to 31. So subtracting min value of statistics and adding 1.

Are you using traditional Blender shape keys?
Or do you use vector attributes to store shapes?

I am using your setup to store vector attributes. One when there is no shape keys on the object (or every value is at 0), and other where I have value of shape key to 1. Basically I was testing if it was possible to convert every shape key vector positions into vector attributes, but turns out it’s not. If you use node tools shape keys get deleted on the object.

Trying to store regular shape keys into attributes. It’s like you described, all shape keys suddenly disappeared. Undo does not bring them back.

1 Like

Will GN Tools eventually support built-in algorithms such as decimate, voxel remesh, and specific operators in the menus? It would be fantastic if it was possible to chain menu operators by calling to them through the nodes system, thus making for a simpler workflow than having to code it in Python.

Also, it would be really useful if it was possible to ship tools with built in custom objects that go beyond simple primitive shapes that also has additional data such as materials, etc. Basically combining all types of assets into a tool where you can do some customisation before applying it to your scene.

A good example would be to have a tool with different ear shapes to choose from which then bridges to the head for some fast retopology.

2 Likes

To the extent that those things will be available as nodes, yes. It won’t work to call operators themselves (that aren’t nodes) from geometry nodes though, they are just two very different systems.

Also, it would be really useful if it was possible to ship tools with built in custom objects that go beyond simple primitive shapes that also has additional data such as materials, etc.

This should be possible with the object info node already. Though referencing data from other objects not included in the scene is one thing that still needs work for 4.0. We should eventually have a “Mesh” input node that will make this easier too.

7 Likes

Okay, that’s good! I know that once decimate becomes a node that I should easily be able to recreate a destructive version of an add-on I made in Python. I may need a math algorithm node as well now when I think about it so I can convert certain values into numbers that make more sense. Maybe that already exists and I just don’t know about it yet? ^-^

Yeah, that’s the limitation I was referring to. Hard to add something that doesn’t exist. :stuck_out_tongue_winking_eye:

1 Like

By the way, is there any particular reason why it isn’t possible to plug into specific values for certain values such as X, Y, Z-axes?

I would like to be able to affect only a single value by having it rely on another node in the tree. Because of the sockets affecting all three axes at once this becomes trickier to do.

Also, it would be nice if this node had a selection input/output socket as well. Would help with doing stuff such as transforming some selected geometry in a specific way.

Another limitation. Creating a tool for Edit Mode will make that tool exclusive to Edit Mode. Had to basically duplicate the same code twice to get it to appear on the list in Sculpt Mode.


1 Like

Can’t speak to the rest, but won’t a Combine XYZ node work for that?

1 Like

Did you try changing the options in the “Modes” popover in the node editor header?

I assume they mean a direct connection. I think someone had a patch for that (Lukas ?) . But it’s completely unrelated to node tools

Ah, I found it. Yes, now it works. Thanks! :partying_face: