# Rotate and scale instances on points from instanced curves based on float curve. AKA Instanception

I have a shape that is popping up in my dreams :) And I've decided to model it. Of course it does not consist of some cones as in the image attached. However, I found this describes my problem better than the original geometry itself.

Now I have a primitive cone to instance on the points.

And I would like to create vertex in the geometry node, that will be positioned to shape like a rugby ball with diamond meshes lets say like the example that I modelled by hand in Image-1.

I would like to do this instancing work on geometry nodes and god I am trying that for the last two days.

I can create it as a cylinder. I do that by adding a curve circle primitive which is instanced on vertex of a mesh line primitive. I rotate curve circles on each step with a value according to the resolution of the circle, to get the result you see in the Image-2. I do that by using the geometry nodes in Image-3.

Then I realize these intances which I will use as points for the second instancing, which will instance ico-cones like in this example. I do that by nodes in Image-4.

I get the result in Image-5.

Image1-5:

At this point to go on further for the desired result, I tried several ways to scale both the circles and instanced ico-cones together. Because in the end, I want circles to be wider, and instances to be scaled up to fill that wider circles.

However, only way I have managed to do so was to instance ico-cones on the circle first, then instance the ico-cone rings on mesh line vertex. And manage the scale on the second instancing by scaling individual rings. Here I do the scaling controlled by a float curve, because I would like to expand the posibilities to different shapes than a rugby ball as well. Geometry nodes on Image-6

Result on Image-7

I seem successful until this step.

Now is the step to rotate these instanced cones, to align on the imaginative normals that are going outwards from this imaginative rugby balls vertex, so that they will face outwards. However, whatever I try, I could not manage to do so. The result I desire is in Image-8 made in modelling.

Also, since I already mentioned that I would like to extend the possibilities of a shape other than a rugby ball, I also desire the result in Image-9 (Embedded in Image-8 Above) -->All instanced ico-cones pointing outwards from pot shape created based on float curve. Done in modelling

However, while I can see that a scale is possible to control with float curve, I doubt I can convert this data and use for rotation for a float curve like in the Image-9.

I appreciate a lot even if you only read it :) Sorry for the long post.

Second Part of the question: First of all thank you very much for your efforts guys.

Now I would like to change how I require to build the shape as "non-manifold". Because, it is hard to work with 4 vertex base, and it causes my instanced geometry to be scaled unevenly.

I would like to instance heads on the diamond mesh. And all of the heads should look in the direction of the normal of their instanced diamond surface. After the instancing done, I am going to realize and boolean instances.

Hence, I tried: Diamond mesh nodes from answer, and followed by nodes below: Getting the result:

Tweaking the "Align Euler to Vector" node I get the result below:

As you see, when I select the pivot as "auto" I get the alignment of y axis of heads with the normals of diaamond faces. However, it also rotates the heads around face normal.

I infer, Blender constructs local coordinate system for each point created from diamond faces. However while Z axis of coordinate systems aligns with diamond face's normal going outwards from face, there is no limitation for X and Y axes.

So how do i make it so that the head's do not rotate around its Y axis, which is also aligned with diamond face's normal?

In other words, geometrically the YZ plane of the head should be defined with center line(Global z axis) and the instance point on the diamond face.

• Is this sort of thing acceptable? Jul 19, 2023 at 9:32
• Hello Robin, thank you really much for taking the time to propose that. Unfortunatelly however, I need to do it by instances. Cause in the end I am going to instance all sorts of things on the surface.
– Batu
Jul 19, 2023 at 10:39
• Okydoky .. must the instances merge to form a manifold? Are they always on quads? (Or the dual of quads) .. what do you require, that can't be provided, say, by the Tissue Tools add-on ? ( Just trying to nail down your spec. :) ) Jul 19, 2023 at 11:36
• I am not really familiar with the Tissue Tools add-on. Though, the reason I would like to scale the instances with the same float curve, is because to create a manifold for sure. So you've got it right. I am going to check the add-on. Quads, triads... I dont really know. My answer my lie within the base geometry I use to instance on. I may go for golden ratio kind of scattering like the center of sunflower. Dont know how to do it though.
– Batu
Jul 19, 2023 at 11:45
• You can imagine a pineapple, and think its sheel pieces as diamonds. Originally, I would like to put some geometry on each diamond, blending in with them. This geometry will be put on the diamonds on its base face and be scaled according to the size of each diamond.
– Batu
Jul 19, 2023 at 11:50

Diamond tube

• To make a diamond-lattice mesh in XY, you can instance a 4-sided Mesh-Circle on the edges of a Mesh Grid.
• You can deform the mesh in XY to a tube, Z-up, as shown in the lower illustration, below:

Once the fiddly arithmetic is done to make everything fit, it can be merged to a contiguous mesh.

• A Tile object is imported , which occupies the XY unit square in its own object space, with its origin at (min X, min Y)
• A small subgroup collects the ordered face-corner positions per-face of the substrate.
• The corner-positions are each transferred by face-index to duplicated instances of the tile-object. (Substrate Face Index <-> Duplicate Index)
• Once the realized tile instances know where the corners (P0-P3) of their containing quad-faces are, they can be mapped in XY to their faces, by bilinear interpolation, using the original XY locations in the unit square as factors along the edges of the faces:

(above, the original XYs come in on the Vector input)

We now have instances deformed to their quads, squashed flat in Z. They also know the Normal and Face Area of the quads they occupy.

• The instance-vertices are un-flattened, by being offset along the normals of their underlying quads, scaled by their original Z.
• The offset is further scaled by the square-root of the underlying face-area, to keep the tile depths in linear proportion to their widths and heights.

The tree below groups that up in 'Tile Quads'. The rest of the tree creates the diamond tube substrate, and provides for its deformation in Z, using a Float Curve node:

With this sort of result:

(Blender 3.4.1+)

• Thank you very much guys. This is far beyond I have imagined and could have come up with. Thank you very much for the efforts. :)
– Batu
Jul 22, 2023 at 22:00
• By the way, of course I can use this for the most of my case. However, I wonder some things. 1) Why the Tile object is in its strange angled orientation? This makes to edit tiles really hard. I tried creating a new cube on world origin and its corners break up because of the angle of the tile in file. 2) If I have to many detail on the tiles that I am going to use, would i be ok to go with 4 vertex on bottom? Is it ok to start with a cube and create a boolean with detailed mesh geometry for a specific tile?
– Batu
Jul 22, 2023 at 22:21
• Hi @Batu! 1 . My bad, the tile is only rotated an shifted for the beauty shot! That's potentially confusing. I'll re-upload for others, with 0 object-transform. The point is, all the tile's vertices are in the right place in their own object's space ( cf. blender.stackexchange.com/a/227327/35559 ). You can see the object space by switching on 'Axis' in Object tab > Viewport Display. In Object Mode, you can Alt-R , Alt-G, Alt-S to line the object-space back up with World space. It all still works. Jul 23, 2023 at 7:07
• @Batu 2. If you want to start with the default cube, in Edit Mode, scale by (0.5, 0.5, 0.5), and translate by (0.5, 0.5, 0.5). Remove the bottom face. Now it occupies the unit cube of its own object space, and you can transform it any way you like in Object Mode, and it will tile. When you transform stuff in Edit Mode, you do so with respect to the object's space. When you transform in Object Mode, you transform the space itself. Jul 23, 2023 at 7:24
• Hi, @Batu, sorry, an earlier comment evaporated, somehow.. It sounds as if the problem of dynamically stretching a mesh to keep faces in proportion is a valid question in its own right, if you can formulate it. :) The more general learning problem.. very personally, I think in components, set quite abstract goals which may not be very exciting on their own, just shovelling numbers around, and try them out in the simplest possible cases. (e.g. this tree started out modifying a plane, then 2 quads..) That means the spreadsheet is readable. My pencils-and-paper get a few outings, too. Jul 27, 2023 at 5:14