37

how to distribute different objects evenly in Object Mode? I know about dupliverts, particles, array modifier, etc, but they do not serve as a good, general solution.

EDIT: I have a scene with a quite a lot objects. They are already there, the question is how, in general, to distribute them evenly in linear (or in 2d/3d) fashion.

piotao
  • 1,407
  • 3
  • 15
  • 27
  • What exactly are you looking for? Could you add some images of what you want to do? – gandalf3 Nov 28 '13 at 19:00
  • 1
    You could try using Shift+S > Selection to grid, but beyond that I think you will have to script this in python. – gandalf3 Nov 28 '13 at 22:27
  • Dear Gandalf, this is simple like that - just a bunch of object scattered randomly. So, they are in really random positions, and it seems there is no simple native way of distributing them. – piotao Nov 29 '13 at 20:33

6 Answers6

40

Afaik, I think you have to use script or some existing addons. The only addon I've ever seen that can do distribute is the Oscurart Tools, which has been bundled with the official Blender build, already.

The following steps show you how to use it:

  • File > User Preferences (or press CtrlAltU), then enable Oscurart Tools in the Addons list;
  • Back to the scene, select the objects you want to distribute;
  • Find Oscurart Tools panel down in the left-hand Tool Shelf, enable Object button, which will bring a new panel below called Object Tools;
  • Click Distribute button in it, and choose the axis (X Y and/or Z), then click OK.

enter image description here

enter image description here

NOTE: The order in which the objects are selected is quite important, which determines how you want to distribute them, as shown below.

enter image description here

Manual page for this addon see here. Btw, Oscurart Tools is much more powerful other than distribute.

Note: This addon has been removed from Blender via https://developer.blender.org/rBA731efb680132e3d5f846cae9b448a74a7b74a9b8

Joel
  • 33
  • 5
Leon Cheung
  • 27,718
  • 11
  • 89
  • 161
  • 1
    Thank you! That was the solution, using a script is perfectly OK. And Oscurart is very powerful. – piotao Nov 29 '13 at 20:35
  • 3
    Apparently, not included by default in 2.75a. But you can still download the source into addons_contrib directory, and they work great! – Michael Bray Jul 20 '15 at 03:06
  • @MichaelBray Thanks for the information. :) – Leon Cheung Jul 20 '15 at 06:22
  • @LeonCheung i have ask the question http://blender.stackexchange.com/questions/69231/how-to-equally-divide-spacing-between-a-set-of-objects and u can see the results its not having the proper spacing. – atek Dec 14 '16 at 14:29
  • 1
    @atek as I said, it depends on selection order. For your case there, you may want to select them one by one in order, instead using B tool. Or you can try first select the top cylinder, then using C tool. Good luck. – Leon Cheung Dec 15 '16 at 07:50
  • 1
    It seems to be that this addon is not included in 2.79. Where to download this addon? – jspr Oct 02 '18 at 14:53
  • @jspr It is there. Just download the official blender build. – Leon Cheung Oct 06 '18 at 09:32
  • FYI, as of Blender 2.90, you can right-click to bring up the OscuratTools in the Object Context Menu. – jpaugh Nov 12 '20 at 01:24
  • 1
    @jpaugh I'm running 2.93.4 and I don't see the option in the contex menu. – Reahreic May 19 '22 at 12:22
8

I like to use ShiftR to repeat the last step (when the last step was duplicate/move).

For example:

  1. Duplicate a cube enter image description here

  2. Press ShiftR to repeat the last step enter image description here

CharlesL
  • 15,316
  • 7
  • 53
  • 88
  • 2
    Thanks, but that's not the case. Sorry to describe my problem wrongly. The scene is already set up and objects are already there, and they are not the same in side and shape. You solution is nice and clean, and I knew it already, but it serve well only for the same object. – piotao Nov 28 '13 at 19:04
  • much appreciated, it's not a strategic procedure, but it gets the job done! – fartwhif Feb 05 '24 at 01:03
5

As Leon Cheung's answer showed, Oscurart Tools add-on (bundled with Blender) is great for linear distribution between two objects AND it respects the order of your objects selected, a feature I have not found in other distribute tools. Here are some others I've found which may serve your unique needs:

Distribute Objects Addon - Another Array Addon created by Duarte Ramos

  • Excellent for evenly distributing objects in a single row, 2d grid, or even 3d grid.
  • He does offer it for free and if it helps you and you want to contribute, it's on BlenderMarket.

Distribute Objects add-on settings in action

BsMax 2.80 - created by Naser Merati (Nevil)

  • Has many features and is free.
  • Object>Transform>Distance Sort respects rotation and scale and will evenly space, rotate, and scale the objects relative to the farthest two objects. enter image description here
  • Object>Transform>Path Sort distributes objects along an open OR closed Curve>Bezier or Curve>Circle like this BezierCircle. First select your objects to be distributed, and then the Curve object, and then choose "Path Sort". It will ignore disconnected Bezier segments, so an "i" Bezier shape for example would either ignore the dot of the "i" or it it will ignore the long stroke segment of the "i". Ironically, "Path Sort" does NOT work with Nurbs objects, including "Path".
    enter image description here

BONUS: Align Tools (bundled add-on)

  • Does NOT evenly distribute between two objects, but can be very useful for aligning an array of objects to a floor or wall etc. For example, the Advanced align options provides min / max of mesh bounding boxes, so if I use BsMax addon's "Distance Sort" to evenly distribute and tween my cubes like this, enter image description here

I can then align the cubes (previously selected) to the top of the monkey's head (active object) with Align Tools "Advanced" options like this, aligning the "Min" or lowest point of each cube's bounding box to the "Max" highest point of the monkey's bounding box: enter image description here

Coby Randal
  • 716
  • 4
  • 9
3

None of these addons seemed to work for Blender 2.90 so I made my own basic one. It distributes along an axis taking bounding box into account, an an option for the margin in between items.

https://gist.github.com/JakeCoxon/2927e8ea0d7fa3902be163b83e6ddb22

screenshot

Jake Coxon
  • 131
  • 1
1

blender -> scripting -> text editor -> new script

import bpy

turntables

xoff = 0 xstep = 2 yoff = 0 ystep = 2

ywrap = 10

set the translation of all objects

for obj in bpy.data.objects: obj.location[0] = xoff obj.location[1] = yoff xoff += xstep

if xoff > ywrap:
    xoff = 0
    yoff += ystep

execute the script with: alt+p

ThorSummoner
  • 344
  • 3
  • 14
0

Adding another option for people, I've made a simple line / grid / circle distributor addon. Check it out here, any feedback is welcome :)

https://madllama.gumroad.com/l/Distribute-Objects

enter image description here

enter image description here

enter image description here

Aras
  • 306
  • 2
  • 8