- Home /

# Change Inertia of rigidbody (Ixy)

Hi, I'm simulating the dynamics of an aircraft and I need to specify the inertia values (to get the correct rotation rates)

I have Ixx, Iyy and Izz which I assume are the rigidbody.inertiaTensor.x, ...y and .z respectively.

However, I also need to set the cross moment of inertia Ixy.

Does anybody know how this can be done?

**Answer** by Bunny83
·
Jun 09, 2018 at 07:19 PM

This can't be done. Unity specifies the moment of inertia as a diagonal tensor where each value specifes the moment of inertia around one of the principal axes. The actual axes system is rotated by the inertiaTensorRotation quaterion. Every moment of inertia should be representable that way. Unity does not use an actual 3x3 tensor so you can't set it's members. Read the last sentence of the introduction

Note that Unity's physics system does not preserve angular momentum but only angular velocity. So there's no gyration like shown at the end of this video

Does that mean I have to calculate the principle axes and order rotation about those axes instead of the geometric x, y, z? Or is that what unity is doing under the hood? I'm not sure I've understood the scripting reference.

Well, in most cases objects are usually oriented along the main geometric axes, so they simply match the principal axes. Though if your shape does not match those axes you would need to calculate the rotation of your principal axes and the inertia around those yourself.

Unity already calculates the inertia tensor automatically based on the mass and all compound colliders. However if you want to set it yourself you have to calculate it yourself. It's not clear how Unity does actually calculate the combined diagonal tensor and the rotation. Though since the tensor is basically a symetric matrix you should be able to determine the principal axis. Keep in mind that rotating the inertia tensor works a bit different from rotating a matrix.

This is generally a good source for common moments of inertia of various shapes.

### Your answer

### Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.