I’ve been looking for a way to move and rotate one object so any chosen face on the first object matches up with any chosen face on a second object. This question seems to crop up here every now and then, but there never seem to be any adequate answers. At least I haven’t found any. Since I also need to do this occasionally, I’ve spent some time and worked out a method that’s reasonably satisfactory. It’s a little bit cumbersome to read, but once you’ve done it a few times it’s not so bad.
Start with two objects, each with a random orientation. I used a cube and Suzanne, intending to attach one face on Suzanne’s forehead to one face on the cube. To help identify the target face on the cube, I subdivided once, and moved the center vertex of one face to create a depression. The target face would be the one opposite that.
- Create a plane that’s parallel to the chosen face on Suzanne: A. Select Suzanne and edit
B. Select the chosen face on Suzanne
C. Cursor -> selection (Shift-S,4)
D. Align view to top (Shift-V,1)
E. Object mode: center cursor
F. Deselect and add mesh plane
- Adjust Suzanne’s axes A. Select Suzanne, then the new plane
B. Scripts->Axis Orientation Copy
- Move Suzanne A. Turn on magnet snap, align, face, center
B. Select Suzanne and move to desired face on cube, holding control key
C. Suzanne should flip around with the desired face either parallel or perpendicular to the desired face of the cube.
D. Rotate Suzanne around the appropriate local axis to achieve the correct orientation - usually +/-90 or 180 degrees.
At this point Suzanne could easily be moved to the center of the cube’s face using Shift-S snaps. From there, her position could be adjusted parametrically, as desired.
Note that although this should result in the two faces parallel and touching, Suzann’s rotation around the face normal may not be exactly what you want. I don’t know of any way to make an exact snap for that. All you can do, as far as I know, is rotate by hand to achieve the desired result.
I don’t know how blender decides what orientation the object being moved should take, but more often than not it seems to be either upside down, or at right angles.
If anyone has any thoughts on easier, or more precise ways of doing this I would enjoy hearing them.