0
$\begingroup$

I'm putting together a model of an aircraft with moving parts, and as part of the process, the parts require limitations to simulate an appropriate range of motion. This worked for a couple of the parts where the origins are aligned perpendicular and parallel to the global axes, but the rudder and ailerons are problematic. Without any constraints applied, the surfaces rotate on their local axes perfectly fine. I just have to remember what the angular limitations are.

For thee rudder, the constraints work fine if I limit the local axis to +/- x degrees, but if I rotate beyond that, it starts rotating in odd fashions, when I expect it to stop at the limitation. Now, I'm sure the constraint is doing its job as I've set it to be, so I'd imagine I'm not constraining it properly.

I've also noticed on the ailerons that if I set the constraint on one local axis for x degrees, then constrain the other two axes to +/- 0 degrees, they move out of position while the constraint is active. Again, I'm sure it's doing its job exactly as it is programmed to do it, so I'm sure there has to be another way to do this.

File included below:

Where do I go from here?

EDIT: Regarding the ailerons, these three screenshots show the difference of applying different constraints:

enter image description here

enter image description here

enter image description here

$\endgroup$
2
  • 2
    $\begingroup$ For second part of your question just go to Aileron Object properties and lock axis X and Z if you are moving your Y axis with contraint, works perfect for me without those weird rotations. $\endgroup$
    – MikoCG
    Aug 16 at 6:28
  • $\begingroup$ Yep, that seems to work. Thanks for that. Guess the rudder needs a different solution though. $\endgroup$
    – hiigaran
    Aug 16 at 10:10
1
$\begingroup$

All of your objects are set to an XYZ Euler rotation mode (look in properties/object/transform/mode.) In XYZ Euler rotations, the Y rotation comes after the X rotation, and the Z rotation comes after both X and Y*, and so to rotate something in Y or Z, you have to change the X rotation. Blender does this for you behind the scenes when you rotate an object in local orientation: try rotating your aileron with a sidebar open to Item, and look at the rotation values.

Your objects are designed to rotate in single axes, but not in their X axis, which is their only independent axis. So this is causing problems for you.

Limit Rotation always evaluates orientations as XYZ Eulers, so we need to keep the objects as XYZ Eulers. But we need to change their origins so that they rotate in their X axis, their most independent axis. For example, for the aileron, we should enable "affect only origins" on the sidebar, then rotate 90 degrees in local Z, and then adjust our limit rotation constraint to match the new axes:

enter image description here

We can do the same with the rudder, rotating its origin -90 degrees in its Y axis, to get the same rotation from its X axis as we get from its Z axis.

*kind of. There are multiple ways to interpret Euler rotations.

$\endgroup$
1
  • $\begingroup$ Unexpected bit of info, but looking further into it, it makes sense. This fixed it completely. Thanks for that. $\endgroup$
    – hiigaran
    Aug 17 at 1:43

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.