Scale Face By Proximity Blender 3

Hi, I’m using Blender 3 and am trying to scale faces by proximity to another object, I kind of have it working however i seem to be scalling the face along a normal rather than scalling the face in a fixed position which is what I hope to achieve. Screen grab attahced. Any input would be much appreciated.

1 Like

The faces are scaled relative to the object origin. What you can do is

  1. move the faces to the origin
  2. scale them
  3. move them back to their original position

(Blender version 3.1 alpha)

scale_face_proximity.blend (107.6 KB)

1 Like

Thank you so much for this, works perfectly, would you say that the screen shot sections off the process propertly? Just trying to get my head around putting the faces at the geo origin, working on them then putting them back. I guess it is what it is.

2 Likes

Your screenshot at least displays what I think the node setup is doing :grinning:, except that in the orange and blue boxes it is not the faces that are scaled but actually the vertices, if i am correct ( but it makes no difference here).

Yes, I had a feeling that this was the case, I watched a youtube video by Chris P called beam me up, supposedly one has to store the face integer and pass that through the node tree, will give it a go. Thank you for taking the time to respond.

Hello! I just came here looking for how to scale individual faces to their relative origins.
Do you mean that in Blender nodes we cannot directly access individual face origins but only object origins, without spliting or separating them? I know you can do that with instances but i wanted to have this ability to the face level directly witthout moving them first

I think the problem is, that the pivot point for scaling is always the object (or instance) origin. So you have to apply translation and scaling to a face if you want to scale it with respect to a different pivot point (e.g. the center of the face).

Yes but it looks like using a combination with the Mix node and Capture Face position attribute you can scale its origin, in a way like in this node.
But it only works if you have separated the faces before.
I still cant wrap my head around why is it so and what does the Mix node do…
For example you cannot access a face and scale it locally without separating it.

mix_scale

The mix node does the following: it interpolates between the to input “colors” based on the factor.

In your case, the first color gives the center position of the face, the second the vertex positions.

The set position node itself only works on vertex positions, you in your case you replace the position of each vertex with an interpolation between the vertex position and the center face position: meaning at factor 0 you replace the vertex positions with the face center which is the same as scaling the face with a factor of 0, at a factor of 1 you don’t change anything (which is the same as scaling with a factor of 1).

This is (probably) also the reason why this technique only works after splitting: then the capture attribute allows you to assign a certain face to every vertex; if the faces are not split, it is unclear which face center is associated with each vertex.

1 Like

And in 3.1 beta, there is a scale node which probably does exactly what you want :slight_smile:

Thanks for explaining ! That helps me alot in understanding!
It looks like the next Blender version 3.1 really has some of the best features i was looking for! The scale and the extrude node