4
\$\begingroup\$

I have a rigid body (a boat) whose centre of mass is towards the front of the object. However, this makes the rotation look strange as the rudder that is turning the object is at the back of the boat so the rotation would be around that point.

How can I rotate the object from the a separate point (using forces) without changing the centre of mass?

Applying a force at a location still causes the object to rotate around the centre. In real life, you need to pin down the point that you want to rotate around, forcing the object to rotate around that point.

This would suggest using constraints but I can't figure out how that would work. You sort of need the rotation point to act as a hinge, but when I apply a suitable constraint, but that would just block the rotation rather than convert it into a rotation around the new point.

I want to resolve this using physics driven operations in Unreal Engine 4.

I don't want to move the Centre of Mass, admittedly for not a particularly good reason, but this still feels like a valid question even if that was an option - what if you want to rotate around two different points.

\$\endgroup\$
  • \$\begingroup\$ How does it look strange? Are you able to turn on the spot (without moving)? If so, maybe the better (and more realistic) approach might be forbidding turning? If that's not an option, just rotate the object rather than applying forces only? \$\endgroup\$ – Mario Jul 2 '15 at 19:05
  • \$\begingroup\$ Instead of applying the simple rotation R, apply a convoluted transformation T R T* where R is the rotation you desire; T is the translation from the Centre of Mass to the desired rotation point; and T* is the inverse of T. \$\endgroup\$ – Pieter Geerkens Jul 2 '15 at 22:01
  • \$\begingroup\$ @Mario Strange because the back of the boat swings out rather than the front of the boat being driven. You are able to turn on the spot, but that is intentional and I'm not worried about that element. \$\endgroup\$ – T. Kiley Jul 3 '15 at 8:32
  • 1
    \$\begingroup\$ @PieterGeerkens I don't see how I can apply a convoluted transformation to a physics driven object, are you proposing disabling the physics simulation, applying the rotation and resuming? I would really rather avoid this as the physics simulation is quite complex. \$\endgroup\$ – T. Kiley Jul 3 '15 at 8:41
  • \$\begingroup\$ Objects in real life always rotate about their center of mass. There may be forces that act on a boat's hull (hydrodynamic) that you are not taking into consideration that can cause a difference between what a real boat rotation looks like and your simulation. These forces can be summed to a single vector with magnitude that would fit into your physics engine and simulate it accurately. Your job is to determine the force vectors affecting your hull based on your hull shape... or just 'wag' it and create an arbitrary point on the boat and call it CofM for turning purposes. \$\endgroup\$ – Steve H Jul 3 '15 at 14:53
3
\$\begingroup\$

All free rigid bodies will rotate about their center of mass, so you're kind of stuck in that regard. However there are two options:

  1. Implement an artificial pivot (specify the coordinate that you want it to pivot about) and do summation of moments about that point. This would require a modification to existing physics fxns, or a new fxn.
  2. Temporarily store the old CoM, then replace that variable with your desired pivot before running the physics calculations (or allow the fxn to take CoM as an input)

Rigid body eqs

Either way, once you sum your moments about the pivot, simply divide by the moment of inertia to obtain an angular acceleration (which is only valid for rotating about the pivot). More on rigid body dynamics

\$\endgroup\$

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.