1
$\begingroup$

I have two complex meshes that I want to align with each other as closely as possible. Not in terms of touching each other (as a lot of questions seems to cover) but actually overlapping with each other.

As an example, I want to turn this:

separate monkeys

into this:

overlapping monkeys

through a combination of moving, rotating and scaling.

Clearly I can get a rough result by hand (as above), but is there an automated method I could use that does not rely on my own judgement?

What I have tried/considered already:

  • The align tool will do position but not rotation or scaling, and in fact it doesn't even provide the best position since it is based only on the object origins.
  • The snap tool will align particular faces but doesn't take the overall shape into account.
  • Perhaps there is a modifier that will do it? I don't know much about the various object modifiers.
  • EDIT: In contrast to the simple example given here with Suzanne, my objects don't necessarily come with the same orientation relative to their local origin, so e.g. copying rotation information will not work in most cases.

I also understand that there isn't necessarily one single metric that will tell me the "best" alignment between two objects, as there will be different ways to measure this property. I don't mind that too much - the important thing is having a consistent and automated method.

$\endgroup$
12
  • 1
    $\begingroup$ AFAIK there is no built-in tool to do it in Blender. However there are a number of specialized softwares that can do it, with very efficient tools based on research papers, like CloudCompare (free), import your models, select them both and go tools > Registration > Fine registration (icp) $\endgroup$ – Gorgious May 21 at 12:02
  • $\begingroup$ How similar are those "complex meshes"? Regarding Chaudhry's answer and my comment on it, do they have the meshes in the same or at least similar position and rotation relative to their origins? $\endgroup$ – Gordon Brinkmann May 21 at 12:47
  • $\begingroup$ @GordonBrinkmann The meshes are from different sources (photogrammetry) and don't necessarily have the same rotation relative to the origin, no. $\endgroup$ – user2390246 May 21 at 13:08
  • $\begingroup$ So the given answer here would not work if not per coincidence those two objects happen to have the same relative mesh locations and rotations. Maybe it would be best to give the information in the question as well, or perhaps even make it visible. $\endgroup$ – Gordon Brinkmann May 21 at 13:16
  • $\begingroup$ @GordonBrinkmann So won't resetting the origin points by going to the set origin>origin to geometry function be a suitable step? And for example if the origin point has to beon the bottom, both meshes can be selected and move them up on the z axis. $\endgroup$ – Chaudhry Yousuf May 23 at 11:44
1
$\begingroup$

Very Easy. You can use object constraints. The constraints which will help you are: Copy Location, Copy Rotation, and Copy Scale. Then just add the other object as the target in the constraint. enter image description here

$\endgroup$
2
  • 1
    $\begingroup$ In the question he says he has "two complex meshes", not defining any details about them. Your answer works with his example where he has got two Suzannes. The question is if his two meshes all have the origin in the same space and are rotated the same relative to their origin points. If I take one Suzanne from his example, go to Edit Mode and move and rotate the mesh slightly, this will make your answer useless. But that's just a thought since the question isn't clear on these issues. $\endgroup$ – Gordon Brinkmann May 21 at 12:45
  • $\begingroup$ @GordonBrinkmann is right, unfortunately this won't work in a lot of cases as the objects aren't necessarily oriented in the same way relative to their origins. In my example I used Suzanne just to keep it simple, but in reality I can't use information based on local axes and origins. However, +1 as this does highlight a tool that I can use in some situations, and might also be useful to other readers. $\endgroup$ – user2390246 May 21 at 13:12

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.