2022-09-21 Geometry Nodes sub-module meeting

Meeting time: 15:00 CEST (Your local time: 2022-09-21T13:00:00Z).

Links

Present

  • Dalai Felinto
  • Hans Goudey
  • Iliya Katueshenock
  • Jacques Lucke
  • Lucas Cayres
  • Simon Thommes
  • Zhen Dai

General Discussion

  • T101011: Add Signed Noise node to Shader and GN
    • Current state is that there will be two modes (signed/unsigned).
    • Simon:
      • It is a bit similar to the discussion about the Random Value node, with different distribution options.
      • For something that doesn’t fundamentally change the texture but just moves the values around is overkill.
      • Making the node bigger for that purpose does not seem worth it. Maybe if we could hide properties better, it would work better.
  • Asset library integration in the node search menu is in master.
    • Any geometry node group in asset libraries show up in the search menus.
    • Next step: integration with the add menu (shift+a)
    • Ideally we already ship some node groups with Blender 3.4. Help would be useful.
      • Look at what node groups have been built that are shared/used a lot.
      • Focus on quality of life improvements for now, instead of very use-case specific groups.
      • Keep it small for now (3.4), only a few nodes.
      • Selection nodes are a good candidate.
    • Simon: Should use tags from the asset system in node search.
    • Asset node groups are usually appended when used.
      • When Blender ships with an updated node group in the next release, existing files are not updated automatically.
      • How does “append and reuse” work with a node group has been appended in two files which are then appended into a third file? Does it deduplicate the node groups?
  • D16029: Geometry Nodes: Mesh topology access nodes
    • Index input:
      • Jacques/Simon: Index input seems to make it more obvious.
    • Naming:
      • “X Neighbors” is used when the input and output domain is the same.
      • “X of Y” when two domains are used.
    • Simon: Negative offsets/indices should work. Repeated indices make sense as well.
    • “Corner Neighbors”: It’s not clear if it outputs the neighbors in the same Face or at the same Vertex.
    • Follow up: Think about more general sorting utilities on geometry (e.g. sort all vertices).
    • D13373: Geometry Nodes: Control Point Neighbor Node
  • Access to original/modifier object with nodes
    • Options to get the self object:
      • “Self Object” node
      • Can pass in the self object from the modifier
        • In geometry nodes is just a normal object.
    • Get data:
      • Location/Rotation/Scale can come from the Object Info node.
      • Jacques: Object Info node should only output evaluated geometry. So for the self object it has to give a warning.
      • To access original data, a separate node would be better.
        • Hans: “Object Original Geometry”
  • Random value per object
    • Is based on name in shader nodes, which is quite annoying. But there are also does not seem to be a better option currently.
    • Jacques: Maybe generalize the problem more, and allow access to custom properties in geometry nodes. There could be an option to randomize a custom property when an object is copied.
  • Use google meet next time so Zhen can join more easily

Patch Review & Decision Time

Help Needed

  • Node Groups to be bundled for Blender 3.4.

Next Meeting

The next meeting will be on Wednesday 5 October, 15:00-16 CEST (Your local time: 2022-10-05T13:00:00Z), which is 2 weeks from this meeting. The provisional meeting agenda will be linked in the #geometry-nodes channel before the meeting.

4 Likes

If the discussion will involve the node for the shader, should someone from the graphics module participate in it?

1 Like

There was some talk of adding UUID or persistent values to objects. Can’t recall where this was discussed. D12792 was an example patch for adding random value by adding a persistent seed to objects. This allows duplicated objects with the same GN modifier to exhibit variations. Random here could be Seed or UUID instead. That can be converted to a float using White Noise node or plugged into a Seed socket.

2 Likes

I’m still trying to figure out what exactly the use of this new node is and / or how it’s supposed to be used.
First of all I can’t find it in any menu, only when I search for it.
The only orange input I can plug it in is in the “Object Info” node but it just throws an error (“Geometry cannot be retrieved from the modifier object.”)

Please forgive my ignorance and enlighten me :innocent:

1 Like

If we had UUIDs for ID data blocks, we could expose them in geometry nodes and derive randomness from it, but we don’t.

  • The transform outputs of the Object Info node work with the self object.
  • It can be used to get original (not-evaluated) geometry data of the object in the future.
1 Like

OK, thanks. So “in the future” means that it’s WIP still and I shouldn’t mind if I can’t make any use of it currently?

BTW when talking about “getting geometry data from objects”: Will we be able in GN to fetch geometry from anywhere in a GN node network, maybe even from GN networks on different objects like this e.g. (mockup):

So you just add outputs anywhere you like and grab the geometry / attributes that are plugged into them and access them elsewhere.
A bit like shader AOVs where you can add an output anywhere in your shader nodetree and access the data of its input.

1 Like

@jacqueslucke Regarding the original vs evaluated data, is this design still up to date? (especially your reasoning)
https://developer.blender.org/T98845
Or are you considering a different approach for that?


Not a real use case but just to show how it can be useful (of course object info must be in original mode, otherwise there’ll be no transforms)

2 Likes

Thanks for the explanation. I tried to recreate it and still I don’t seem to get it :see_no_evil:

Well in that case it will work the same, the value comes when you apply the same to multiple objects and you want each to refer to itself and not all of them to “cube”

1 Like

OK, I think I got it… although the concept is hard to grasp somehow:

Maybe my example was misleading, I thought you were seeing no results at all from the new node and just wanted to show it working. In terms of more real practical uses, I think up to now in some situations people would for example use an empty at the origin to get world transforms info via the object info node whereas now you don’t need that extra object. For example here’s a nodetree that extrudes a face always in the world Z axis and flattenes the extruded face in that same axis no matter what the object’s rotation is:

Hello,

That is a great news to hear. Blender will ship node group but that suggest new questions.

1st: What is the purpuse of the groups?
Gain time when building node tree?
Make more simple the usage of geometry nodes?

2st: How decide if the fonctionallity you want to build should be node group or new node?
That is the more difficult task i think

3rd: Did you think the interface of node group is ready for that?
I think no. For me two major issue. the first is we can not hide property with check box. For clarity i think it’s needed. The second is that the view of the node is the tree must be splited verticaly and not horizontaly for in/out socket

4rd: What is the step of construction of a standard group?
Now we go in hell. Why? Because blender must do something he dont want. He have to choose a way to do things. And i tell that because blender make the mesh primitive menu that means blender avoid that step otherwise we would have a mesh node where we choose the primitive. Agree for freedom first it’s not an agression :). I make a base shape node group and that reflect perfectly what i would say. There is no difference beetween all geometrycal shape because we set the same property and there is no other things that vertex, edges and face.
A vertex have position. A line is two vertex. A triangle is 3 line. A face is at least 3 point where all edges share a point so we can fill the shape. All the 2D is a derivate of what we need with triangle. X Y nb point (res X, res Y). At this point you have to be aware of considering 3D sketch or volume for the Z axis because that will decide the usage of extrusion or primitive. For me the 2D doesnt realy exist and in usage it’s to construct or drive a geometry. So it’s more like it’s no matter of 2D or 3D but it’s more like fill or not is important.
So should i create vertex and extrude it to get line and extrude the result to create the 3rd line and connect the point then create a face? or you give me a XY 2D space, and object with X point connected where i can displace point and fill or not the inside?
Now the 3D, that mean we add Z and res Z property to the previous one. But we just extrude and displace even for a sphere.
The caps in blender primitive is not a real one is the way that you cant create and manipulate it with the property i previously enumerate. For me it’s a compose shape because you need to extrude 2 differente 2D shape where the 2nd is not the direct result of the 1st.
The volume in blender exist because the extrude fill the inside with no density. Otherwise there is no property different between mesh and volume right?

5: Selection nodes are a good candidate.
If we considering what i say above. You will see that the shape can have and have carthesian selection. What is that? All shape have a front, back, top, bottom, right and left geometry face, edge or vertex and all shape have the same for volume front v, bottom v…
If you want face on the shape it’s a simple boolean selection or name attribute
If you want a edge on this face you make a boolean and for example top and right
If you want a vertex of the face you boolean and again for example top and right and back
You can do that with the front v example to handle the resolution on the shape.
And the midle X, midle Y, Midle Z are here to handle the missing geometry. So for all shape you have the same selection.

6: Why all of that speech?
Because it’s needed to see i answering to the 1st question. It’s simple to just set shape than reconnect all. If i decide for a part of my geometry than a cylinder is finaly better that a sphere it’s simple.
But there is more. Since you have do things with a shape property and X,Y,Z res X, res Y, res Z and use front, top etc… selection you keep all relational position for the fonctional purpuse of your geometry. For example the hole for my screw is always at the same place, the shape doesn’t mater
That mean you can animate the shape of an object
And finaly that mean we can make transformers :slight_smile:

I will publish video on my channel when my PC finish to render it. I will edit the post when the render was finish.

Sorry for the english.

bs 2022

  1. Procedural programming and high-level custom effects architecture.
  2. Groups are needed for everything that is not done by the node. The knot is done for everything that is either impossible or too bad or too difficult otherwise and yet popular.
  3. The UI won’t change without a very major redesign. And if you have a bunch of properties for a mesh, it’s easier to group their setting on different nodes and use the named attribute naming convention for your package.
  4. I didn’t get the point, but all primitive nodes will not be one mego node. It’s not something that should be merged. You clearly don’t want to have a node as 3 of your screens.
  5. You create an abstraction that is convenient for you in the form of a Cartesian selection. Just masks are unified enough for this.
1 Like
  1. That the general node purpuse and second part is specific to one domain “architecture” so it’s a category in node group?
  2. All is made by node :slight_smile: Group is a chain of node where the path can be choose by property
  3. That already append with the basic node for example mesh boolean change dependently of the boolean operation. Why groups cant do it? The name attribute on node group not list the name available so you have to put a node before you group to see all name available and avoid writting error. So i will not say it’s more simple and i think the UI must not be something that define if we have to make a group or not.
  4. I think this vision lead to have a cone and cylinder primitive and no triangle or tetrahedron primitve with usefull property. The cone is a cylinder with merge on top or offset scale. So you see that we have a node and a group (chain of node) for the same purpuse. If you follow the logic of what i say you see all primitive can be create with a vertice, extrude and positionning. Wich is a chain of node so it can be a group not a mego as you say
  5. There is not abstraction here unsless you live in other dimension :). An object live in space and have 6 degrees of freedom no mater how you look it. And front, top etc… is a plane perpendicular to this degress of freedom positionning at the extremity of the shape. All CAD software are base on that to define the position of the element with skecth constraint like vertical or horizontal. Blender just dont do that, it just lock the position in the 3D space no matter of the plane or face since Blender don’t have sketch

Hi,

The video of the base shape is finish.
video link : https://www.youtube.com/watch?v=luIW595-zuE
file link: https://techsc.gumroad.com/l/kmcbv

I can provide to you a file with all my gn update every month.

I think one node group, not made by me, can be added directly.

Execpt if you have another way to get index in the viewport.

Maybe, since it’s not a develloper job but a user one, the first thing to do it’s to provide a way to submit group node and vote for their integration since they theoricaly already made. So i suggest in first place to provide a model page template where we can, as blender users, register a node. Like that we can vote or unvote for it to integration.
This way provide 2 advantages:

  1. Provide this page template model, means all question is my previous post are solved
  2. This can be an amazing ressources to learn if the page template is well done, we can reject it and provide why and provide a best practice in replacement for example.