Align origin to face

Since this has Drastically changed from what many blender users have been doing for years, you’ll have to make sure you read the whole thing. People are still posting solutions that are the “old way.”

In 2.82, there’s a wonderful option to transform origins only. It’s under options in the top right, as well as the tool >options>transform tab on the right (n hotkey)
If you check that box, then choose to snap to face with the align rotation to target then Yay, the Z axis is aligned to the face. Great, now I can start making instances…ONLY, that’s not Quite right because it isn’t perfect. It really only rotates to Z matching the normal. X and Y are left to do whatever they want. So sometimes it works great, and sometimes you get a wonky orientation.

So I used Mesh Align Plus to get a perfectly placed plane. Yes, that has the orientation I want. But how do I Mass replace the origin with that one? I basically want to copy the orientation from my newly created plane, and paste it to the 236 objects I have selected.

Oh, now for the WHY, because I know some will ask. So importing CAD data as obj (fbx sucks from Rhino) all objects have no real orientation or position. So every origin is at zero. So your rotated objects, blender has no clue. Because the data just isn’t there. Rhino doesn’t know either. Only the original 3D software does, like Creo, SolidWorks, Fusion360, etc. I need to do an exploded view, which means All the tiny parts of everything. But in order to look good, cylindrical objects should rotate as a cylinder, and parts should explode in the direction of their face in order to look good. So great, I can move the cylinder origin to the center of some flat faces, but that doesn’t orient any of the pivot axis to the normal of that face. So the pivot position is correct, but Not the orientation. In Max, my solution was to put the pivot in the correct place, then normal align an object to the face of my cylinder. Then align Only the orientation of the pivot point to that object. I do Not know how to do that in Blender, if you even can…currently.

Any advice? Most engineering data will be fine because engineers Usually do things at very perfect angles, but this has gears all over the place that travel over a curve in order to fit everything within a space for your face. It’s an old prototype for the Avegant Glyph. Project is Well over, and it’s public, so I can talk about it.

2 Likes

Enable “Only Origins” and then either…

  1. Create a custom transform orientation from your plane, select your 236 objects and do Object -> Transform -> Align to Transform Orientation.
  2. Set current transform orientation to “Local” and pivot point to “Active Element”, select your 236 objects, shift+select your plane so that it’s active and do Object -> Transform -> Align to Transform Orientation.

May be a good idea to do the last step twice, because the operator is dumb but the devs don’t consider it an issue, for reasons :crazy_face:

4 Likes

Thank you. That worked great. Exactly what I needed.
I was thinking about making a quick video for youtube also, because it seems Lots of people just don’t get it. And I see people saying, “you should just remodel everything.” Really? Yeah, that’d be Great to have that kind of time. If I were throwing it in a game engine, I agree. But for a 30 second animation, you’ll go from 12 minute renders to 11:30 renders. So the 8 days you spent remodeling that many pieces Might not be worth the 7 hours of render time you saved.

The answer I see Most is to go into edit mode, rotate your entire model to the orientation of your object and then go outside and rotate it back. That’s Not a good solution, but yes it works. Or there’s the better make a plane and orient it where you need. Then merge (not sure what it’s called in blender yet) the two models so your model take on that of your plane. Then delete the plane. And of course, if you had any modifiers, those will be gone.

This method works So much better as it is only destructive to the thing you’re actually working on, the pivot.

Thanks again.