I'm trying to create a interactive vector, but I'm not getting a way to make the arrow stable under rotations and scaling. Make it stable under translation is easy, but make the 'body' and the 'tip' of the arrow connected after a rotation has been a problem for me.
-
in order to make the the arrow tip remain intact after a scaling of the arrow body, I create it separated and now I'm thinking in use geometry nodes to connect then in a stable way – mack_hyuuga May 15 '22 at 21:18
-
1Maybe, it could help, if you set the origin of the tip and the body to their connection point. - If you could provide your current blend file or more information, it would be easier to help you. – André Zmuda May 15 '22 at 21:23
-
1Related: What's the fastest and / or craziest way to model an arrow in Blender? – Markus von Broady May 16 '22 at 14:01
4 Answers
I would solve it like this:
Here I create a curve, which uses as starting point, direction and length the values of the Group Inputs given by you.
From the length I subtract the length of the cone. I build the body of the arrow with the node Curve to Mesh, and at the endpoint of the curve I instantiate the cone in the appropriate size.
The scaling of the arrow and the cone is also controlled here by a value for the scaling via a Group Input.
- 35,177
- 10
- 50
- 133
-
this is really close with what I was thinking, the only difference is that I thought in keeping the tip size constant until a resize of the arrow body. Do you have any idea of how to do this ? – mack_hyuuga May 19 '22 at 17:43
-
@mack_hyuuga Unfortunately, I don't understand exactly what you mean. The size of the tip is constant and can be scaled together with the body. What exactly do you want to do? – quellenform May 20 '22 at 17:57
If you don't need a correct topology as in Robin's answer, you can construct an arrow out of 2 elements (or more, I added a red starting ring because sometimes I don't want the vectors to start at the surface, as there might be obstacles hiding the vectors), and now you can use instances with varying properties without realizing them:
In this solution the varying bit is the distance between the bottom of the green cone and top of the red ring, so it's still visible at 0 length (I cheat and use a color that is not exactly 0 in the color ramp, because otherwise you have no information for "Align Euler" - you could just add 1 before align euler and subtract it after.)
- 36,563
- 3
- 30
- 99
If you're using a late enough version of Blender (3.1+) to include the Extrude Mesh node, you can make your arrow in a single piece:
- An extrusion by 0 from the bottom of a cone, followed by a scale of the 'Top' (= an inset)
- Followed by an extrusion of the inset
- Followed by a transformation of the whole mesh to put its origin at the end of the stem.
Here, indicating the vertex-normals of a UV sphere:
You can use it as you would any other arrow constructed along its Object Z.
- 76,260
- 8
- 77
- 190
-
Problem here is if you instance on points and you want each instance to have a different length, you need to modify the meshes after realizing instances, probably after rotating them. – Markus von Broady May 16 '22 at 14:51
-
Hi @MarkusvonBroady! Don't the other construction methods have essentially the same problem? How do you interpret the specs? I'm probably missing something. :) – Robin Betts May 16 '22 at 15:06
-
1Indeed, I think both extrusions should have offset = 0, but everything but the last face should get an offset multiplied by a normal after realization - either that or if you glue the arrows together from cylinders and cones, you can instance them separately and scale the cylinders without realizing them. – Markus von Broady May 16 '22 at 15:13
-
@MarkusvonBroady OK, I see. We want, say, conveniently to illustrate a (variable length) vector-field. – Robin Betts May 16 '22 at 15:28
I managed to get the objects (body and tip) to be connected in such a way that wherever you but your tip the size of the body will be attached to it, so far it's only working in 2D, someone help me generalize to 3D please
- 165
- 5









