Blender Asked by Planet yo on November 22, 2021
How can I create an array with the distances between the objects increasing exponentially? I want something like this:
[].[]..[]…[]….[]…..[]
The distance between the objects should increase.
Thx reply ok I made this but only scale object change not distance
Like the previous answer use a single vertex array and an offset object.
Add a cube, enter edit mode and merge the vertices to the center. Press M then select "Merge at center". Add an array modifier to the single vertex and set it to constant offset with your required distance.
Add an empty to control the offset. In the array modifier on the single vertex object activate "Object offset" and select the empty.
Select the empty then scale it slightly to get an exponential increase in the distances between the vertices.
Create a new cube and parent it to the single vertex array.
Select the single vertex array and go to its Object Properties (the orange square on the properties tab) and open the Instancing panel and choose "Verts".
The parented cube should be duplicated with increasing distances between each cube.
Answered by Samir Rahamtalla on November 22, 2021
Single vert, array modifier, object offset, duplivert.
Animating the scale of the offset object
With the "Add Mesh Extra Objects" addon enabled can add a single vert object. Or by other means.
Since the single vert has no dimensions can array it and only effect the arrayed vert locations.
Add an array modifier to the single vert. Give it object offset add an empty.
Under Properties > Object > Instancing
select Verts.
Make the display object you "really" want to array a child of the single vert. Will now have this object instanced at location of each vert created by array modifier.
In the example image the empty has been given x location 2, and x scale 2. The duplivert object is default cube with some scale in z.
Some theory. Assume object is at (0, 0, 0)
>>> loc = Vector() # zero
Get the matrix of the object offset object (the empty)
>>> C.object
bpy.data.objects['Empty']
>>> M = C.object.matrix_world
Ok original is at x = 0. For the next 4 arrayed objects, apply the offset object transform
>>> for i in range(4):
... loc = M @ loc
... print(loc.x)
...
2.0
6.0
14.0
30.0
Answered by batFINGER on November 22, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP