2
$\begingroup$

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 enter image description here

$\endgroup$
1
  • $\begingroup$ I can reproduce the effect you got if i add a cube to the Vertex in Edit Mode, and scale the Empty in the x-axis alone. If that is indeed what you did, you should add a cube in Object Mode. Then Shift select the Vertex (so both the cube and vertex are selected) and press Ctrl+P > Object(Keep Transform). Now the cube should be a child of the vertex. The Verts Instancing will create a child(cube) for all the vertices of the parent. Then if you scale the Empty (along any or all axes) it should work. $\endgroup$ – Fjoersteller Jul 22 '20 at 17:57
3
$\begingroup$

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.

Array modifier, Object Offset

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.

Object Properties Panel

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".

Cube array with variable spacing

The parented cube should be duplicated with increasing distances between each cube.

$\endgroup$
6
  • $\begingroup$ Thanks you so much Guys it worked, unbelivble how you can figure out this ;) $\endgroup$ – Planet yo Jul 22 '20 at 17:29
  • 2
    $\begingroup$ @Planetyo Sigh. Just so you know this is exactly the same method as mine. $\endgroup$ – batFINGER Jul 22 '20 at 17:35
  • $\begingroup$ How this is different to the other answer? $\endgroup$ – brockmann Jul 23 '20 at 7:09
  • $\begingroup$ @planetyo asked for a simpler explanation and i provided one $\endgroup$ – Samir Rahamtalla Jul 26 '20 at 19:21
  • 1
    $\begingroup$ for anyone else looking, my solution was Make Instances Real $\endgroup$ – Aubrie Feb 26 at 4:38
6
$\begingroup$

Single vert, array modifier, object offset, duplivert.

enter image description here 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.

enter image description here

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
$\endgroup$
3
  • $\begingroup$ Thx reply but its too advance for me, I was sure it some simple option I can change to make this effect $\endgroup$ – Planet yo Jul 22 '20 at 12:57
  • 1
    $\begingroup$ Using arrayed vertices as an instancer is a very neat idea :). $\endgroup$ – Jachym Michal Jul 22 '20 at 13:45
  • 1
    $\begingroup$ @JachymMichal Appreciated.. $\endgroup$ – batFINGER Jul 22 '20 at 13:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.