TransWikia.com

Exponential distance array

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

2 Answers

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.

Answered by Samir Rahamtalla on November 22, 2021

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

Answered by batFINGER on November 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP