2
$\begingroup$

Is there a way to align origins of multiple objects to their lowest point without addons, custom scripts? I want to modify only Z coordinate, the others leave intact. For example there are furnitures with origins at their bounding box center, and the modify them so, that they stand on their legs if I set their Z to 0.

There are a lot of objects, I'd like to place the origins to their bottom. Here is a very simplified example:

enter image description here

Now the origins are at center of mass, they need to be on the bottom:

enter image description here

I have a lot of objects, manual techniques are not suitable here. This is a very common task, I need it every day. Hard to believe, Blender has no function for this.

$\endgroup$
3
  • 2
    $\begingroup$ How do you already know Blender can't do that? Align tools addon can do that. In N panel click Advanced, Pivot mode, include active object by Active too, Self mode, Min option to align to minimum of each alignment for each object (so, minimum position for Z axis), pick Z axis. See also blenderartists.org/t/multiple-objects-origin-to-base/1295029 $\endgroup$
    – Mr Zak
    Jan 20, 2022 at 17:37
  • 1
    $\begingroup$ Well…he wrote: without add-on. Although I don’t understand that restriction…it's a bit like "i wanna drive my car without using fuel..." (and it's hard to believe my car cannot do that) :D $\endgroup$
    – Chris
    Jan 20, 2022 at 17:42
  • 1
    $\begingroup$ Align tool does it. This is the best method. My "without addon" restriction applies to external addons, especially paid ones. I don't want to buy an addon for every basic task. Align tools is not too user-friendly compared to some addons on Blendermarket, but at least it is built in. $\endgroup$
    – Denatural
    Jan 20, 2022 at 18:48

2 Answers 2

3
$\begingroup$

Python script

Select the objects, run Python script:

import bpy
from bpy import context as C

for z, co in [(o.bound_box[0][2], v.co) for o in C.selected_objects for v in o.data.vertices]:
    co.z -= z
$\endgroup$
2
  • $\begingroup$ Although I wrote "without scripting", this solution really works well. $\endgroup$
    – Denatural
    Jan 20, 2022 at 18:29
  • 1
    $\begingroup$ @Denatural D'oh! It's time for me to learn how to read again... $\endgroup$ Jan 20, 2022 at 19:24
1
$\begingroup$
  1. Select the lowest vertex of the model in edit mode

  2. Then press ⇧ Shift + S and pick Cursor to Selected

  3. Leave edit mode and select from menu: Object>Set origin>Origin to 3D cursor.

$\endgroup$
2
  • 1
    $\begingroup$ for multiple objects? who wants to do that? $\endgroup$
    – Chris
    Jan 20, 2022 at 16:32
  • $\begingroup$ I edited the question to clarify what I need. $\endgroup$
    – Denatural
    Jan 20, 2022 at 17:08

You must log in to answer this question.

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