3
$\begingroup$

I want to align two objects with Blender because for whatever reasons, the head was exported by another program in random orientation. I can easily generate two edge lists which perfectly fit. Knowing the edge lists it should be possible to calculate a the correct orientation of the head, right?

enter image description here

$\endgroup$
5
  • $\begingroup$ Perhaps relevant blender.stackexchange.com/questions/39784/… which is suggested by the web page on the right side. You may also want to search [Create Orientation]. You may only need 3 vertices to create a plane normal. $\endgroup$ Oct 4, 2017 at 15:31
  • $\begingroup$ Can you also explain [perfectly fit]? Is this vertex count or length or angles determined by a Script? Casual Inspection? $\endgroup$ Oct 4, 2017 at 16:00
  • $\begingroup$ You may also want to see [merge]. $\endgroup$ Oct 4, 2017 at 16:11
  • $\begingroup$ @atomicbezierslinger Your link does not solve the problem of finding the right orientation, it is only for location. Also Create Orientation does not give me any useful results on BSE. $\endgroup$
    – Dimali
    Oct 4, 2017 at 19:18
  • $\begingroup$ @atomicbezierslinger yes $\endgroup$
    – dgrat
    Oct 4, 2017 at 21:10

1 Answer 1

3
$\begingroup$

This is my workflow for aligning objects that are accuratelly separated but rotated randomly. The tutorial seems to be complicated but it is actually quite quick method (if you remember how to do it :) and accurate. Unfortunately I don't know about any addon that would do that automatically.

I will demonstrate it on an example with Suzanne model so warning - this tutorial contains drastical images.

The whole idea is to rotate the model gradually by using 3 common vertices.

  1. Rotate & align both objects so they fit to each other roughly enter image description here

  2. No we need to find common vertex pair and snap objects there

    enter image description here

    Detailed steps:

    • set Snap target to Active (remember, the active vertex / edge / face is the one selected the last)
    • set Snap Element to Vertex CtrlShiftTab
    • select the object you are going to fiddle with (it is the top part in our example), switch into Edit mode Tab, then Select All A and select the vertex you are going to use for the snap (now it is the active one)
    • enable Snapping ShiftTab or you can always hold Ctrl while grabbing instead
    • grab G the mesh while holding Ctrl and move it / snap it to the same positioned vertex in the second model
  3. Use the previously aligned vertex as a pivot point, then snap the model's rotation to the vertex on the other end of the same edge. This needs to be done for each axe separately enter image description here

    • set Pivot point to 3D cursor .
    • make sure you have the common vertex selected and move Cursor to Active ShiftS
    • select whole model and then a vertex on the same edge as previously snapped vertex (so it is active now)
    • press R and then X to rotate around X and snap it to corresponding vertex on the second model, repeat this for Y & Z axes (after that, double-check the mesh doesn't rotate anymore on any of these axes so it is aligned perfectly)
  4. When we have the common edge, we can rotate model around it to make the fit complete

    • Pivot Point to Active Element
    • Transform Orientation to Normal
    • Snap Target to Closest
    • turn off snapping ShiftTab
    • select whole mesh A and ...
    • select the edge between our previously aligned vertices as last (so it is active)
    • rotate the mesh around normal Y axe by pressing RYY so it roughly fits the other model enter image description here
    • turn on snapping ShiftTab and use the same rotation method as in the previous step, now it will (hopefully) snap perfectly enter image description here

If you are about to join the objects (by selecting them and pressing CtrlJ), don't forget to go into Edit Mode Tab, select all A and Remove Doubles by W > Remove Doubles to merge the common vertices.

$\endgroup$

You must log in to answer this question.

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