Geometry Nodes

Great, thank you very much!

1 Like

Hi Astronet,
Sorry for not getting back to you sooner. Ideally, youā€™d be able to generate the two tangent vectors that represent the other two axes (X & Y) if youā€™ve already been given the normal of the meshā€™s surface. In this case, if your mesh is a cube then it shouldnā€™t be too difficult.

However, while using the old set-up (matching the instancesā€™ orientation to the direction of normals using the ā€œRotationā€ output from the Distribute points on face node), I did encounter some difficulties so I have to use another workaround to get the rotation of the instances to match correctly with the direction of normals so that the when the tangent vectors are generated, its direction match with the local X and Y-axis of the instances.

//Hereā€™s the screenshot of the node tree, I also attach the blend file below in case you want to give it a look.

demo_1.blend (4.1 MB)

2 Likes

Thank you so much for taking the time to generate this setup. Iā€™ll spend time studying it :slight_smile:

1 Like

thank you so much! This is very useful! Do you think thereā€™s a way to ā€œlockā€ uv coordinates of the instances based on their initial position?

1 Like

Similar issue - here I have a curve with noise; masked with a Float Curve to fix beginning and end point.
How can I instance this, that each instance has this mask? I tried things with your above given solution ( I thought the index input into the map range might be replaced by that procedure you showed), but in this case, the three other instances do not behaveā€¦


didnā€™t succeed. Thanks for any help!

solved! (for clearer understanding I changed the mask curve shape)

1 Like

My pleasure.
Iā€™m not entirely sure what you mean by ā€œlockā€ but you can pretty much ā€œoffsetā€ the UV of the instances based on their position if thatā€™s what you mean. You just add the position to the UV and output that as a vector attribute you can use in the shader editor. But then again they used to be a bug where as soon as the instances are realised their UV gets destroyed! and Iā€™m not sure if that has been fixed yet

1 Like

Hello @Benny_G
I saw your question on devtalk about tangent vector displacement and I assume itā€™s also related to this question?
Your setup is quite complex and Iā€™m not sure I understand the problem simply by seeing this. What is the intended behaviour you want and can you provide a simplified setup showing just the problem?
to my understanding tangent vector displacement should be possible provided there is a tangent vector in the first place which curve objects have by default. Or maybe I am missing something?

From what I see you can just use the ā€œfactorā€ output of the attribute parameter node. It outputs the normalised length for each point on the curve (0 for the starting and 1 for the ending). You should just be able to connect it before the curve map.

1 Like

Sorry, I just tried your setup and realized that it works as I wanted out of the box! :smiley:

What meant was to have the instances maintain the same color even when they are moved around. So letā€™s say you have the cubes like in the example you posted, and those cubes will then move away from their original position and while doing so they will maintain the initial colors assigned by the UV.

Thanks you again! :slight_smile:

thatā€™s already possible with the current setup. I added the highlighted node to do that and animated it.

The transfer attribute node is not technically transferring the colour by projecting it. instead, itā€™s mapping each point to each instance cube. So it doesnā€™t matter how I translate the cubes later

2 Likes


Look at the picture. These are all same objects with the same geo node tree, but with different parameters. Is there a way to change just one input parameter and leave the others unchanged?
A use for this would be for example this: you have 100 windows of different sizes in your scene and you only want to change lets say just the material of the sill, which is one of the parameters. Changing one by one maually would take a huge amount of time, and changhing just one parameter for all of them all at once should be possible imho. Afterall, thatsā€™s what procedural modeling is for, isnā€™t it?

1 Like

Iā€™m afraid I donā€™t understand the question. If the material of the sill is one of the parameters, of course you can change it.

If youā€™re asking if itā€™s possible to change parameters in a batch, I believe itā€™s not possible as of now. An alternative would be creating one object, changing the params as needed, and then duplicating that object.

If your problem is same as the one Zorro mentioned, you can ctrl+L > Copy modifier to copy the stack form the active to the selected objects. But of course that copies all the parameters.

Perhaps you can make it such that the object uses the material that is actually assigned to original mesh? If so then you can ctrl+L > Link materials to batch change the materials.

1 Like

Of course I meant in a batchā€¦

The material was just an example. What if I want to change the thickness ot the sill for example? Or to switch on and off the shutters that have a switch parameter. Iā€™m not looking for a workaround for a specific situation, I just wanted to know if you can edit only one parameter and leave the others as they are in a batch.
Blender already allows that for some operations, for example if you want to change the location of multiple selected objects in a batch you just hold ALT and click and slide on each of the XYZ values in the Location section in the Transform Side panel (N shortcut). The same thing applys to the auto smooth checkbox, select multiple objects, press and hold ALT and click on the checkbox. I wish this was true for Geo Node paremeters, but itā€™s not.

With cyles you have the option to use vector displacement object or tangent space
I try to do the same with GeometryNodes .
For example if you use a curve line and you deform ( bend ) this , then the displacement is not correct anymore , so is there a way to get the correct vector
displacement

Vector displacement .rar (103.0 KB)

You could put the value you want to change across multiple objects inside the geonodes tree as a value node.

Less convenient, but it gives you a global variable across multiple objects with different parameters.

Yeah, obvoiusly, but still, what if I want to change a parameter for only 50 out of 100 objects? Ok create 2 different node trees, but you see where am I going with this. I wish we had this possibility, and I think the devs should take it into consideration. For one, I am certainly going to try and find a solution, maybe with some scripting, I dunno, weā€™ll see

I donā€™t think this would work.

Each modifier acts as a different link to the nodetree itself. How would blender know which modifier to change when you hold alt, or where it is in the stack?

Object parameters are consistent from object to object, but modifiers are an arbitrary stack.

Come to think of it, a better solution would be to automate the process using a selection. Just take the nodetree that you want to change the parameters of, use it within another nodetree, and use a random value node to change 50% of them. No need to use separate objects.