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$ Commented Jul 22, 2020 at 17:57

2 Answers 2

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
    Commented Jul 22, 2020 at 17:29
  • 2
    $\begingroup$ @Planetyo Sigh. Just so you know this is exactly the same method as mine. $\endgroup$
    – batFINGER
    Commented Jul 22, 2020 at 17:35
  • $\begingroup$ How this is different to the other answer? $\endgroup$
    – brockmann
    Commented Jul 23, 2020 at 7:09
  • $\begingroup$ @planetyo asked for a simpler explanation and i provided one $\endgroup$ Commented Jul 26, 2020 at 19:21
  • 1
    $\begingroup$ for anyone else looking, my solution was Make Instances Real $\endgroup$
    – Aubrie
    Commented Feb 26, 2021 at 4:38
7
$\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
    Commented Jul 22, 2020 at 12:57
  • 1
    $\begingroup$ Using arrayed vertices as an instancer is a very neat idea :). $\endgroup$ Commented Jul 22, 2020 at 13:45
  • 1
    $\begingroup$ @JachymMichal Appreciated.. $\endgroup$
    – batFINGER
    Commented Jul 22, 2020 at 13:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .