Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
16
Question by Novodantis · Nov 17, 2009 at 12:12 PM · errorphysicsinertiatensor

What does the "compute mesh inertia tensor failed" error mean?

I have a simple "third person cam" space shooter using a GameObject which contains a valid 3D ship mesh, and various planes used for effects (engine glow and crosshair).

I would like the position of this object to be defined by an invisible rigidbody sphere. However, when I place the rigidbody sphere at the top of the GameObject, I get compile errors:

Actor::updateMassFromShapes: Compute mesh inertia tensor failed for one of the actor's mesh shapes! Please change mesh geometry or supply a tensor manually!

Apparently this is caused by the auto-tensor-assignment process, which trips up on zero mass meshes (ie. the planes). I don't want these hackily put in seperate game objects and positioned each frame. Is there any way I can get this to behave? I'm sure the Tutorial has rigidbody objects containing sprites but I can't seem to figure out what part I'm doing differently. I tried adding a line on Awake() to set up a default tensor manually, as such:

rigidbody.inertiaTensor = Vector3(1, 1, 1);

But that didn't fix it either. Anyone got any suggestions?

Comment
Add comment · Show 4
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image bernardfrancois · Jun 13, 2011 at 11:08 AM 0
Share

I had the same error after adding a rigidbody to a plane, to be able to do a raycast on the plane. I could ignore the error without any noticeable consequences. There may be other consequences though (perhaps memory related issues), but as it was for a gameplay prototype, I had no problems ignoring the issue.

avatar image Eric5h5 · Jun 13, 2011 at 04:31 PM 2
Share

@bernardfrancois: raycasting does not depend on rigidbodies, only colliders. Remove the rigidbody from the plane.

avatar image Brian-Brookwell · Aug 02, 2014 at 09:26 PM 0
Share

I've been getting the same message. I'm generating a terrain as a mesh of triangles. It has no enclosed volume and physics collisions between it and other mesh objects don't seem to work properly (i.e. the object drops straight through). I have put a mesh collider on the terrain. When I added a RigidBody to the terrain though, that's when I started to get the mesh tensor error. I'm looking at two possible approaches:

1) Creating a base plane and make the terrain an actual 3D object ins$$anonymous$$d of distorted plane. This is doable though messy as it'll add a large collection of non-visible triangles 2) Calculate the mesh tensor myself. Have no idea even where to begin this process.

$$anonymous$$y question is: has anyone had this problem and how was it solved?

avatar image Eric5h5 · Aug 02, 2014 at 11:23 PM 1
Share

You should not add a rigidbody to the terrain. Rigidbodies are only for moving objects.

$$anonymous$$esh colliders do not collide with other mesh colliders. $$anonymous$$oving objects should not use mesh colliders; they should use primitive colliders or compound primitive colliders. (Or convex mesh colliders as a last resort.)

6 Replies

· Add your reply
  • Sort: 
avatar image
38
Best Answer

Answer by duck · Nov 17, 2009 at 12:40 PM

This error most commonly arises from placing a Rigidbody on a Plane, so you need to check whether the GameObject in question has a Mesh Collider component which uses "plane" as its mesh. This is because the plane mesh has no depth, and therefore the rigidbody has no mass. You can solve this by using a very thin box (if you really want something which behaves physically like a thin plane), although from the rest of your description it sounds like you're after something else.

Just to clarify - there's no such thing as a "rigidbody sphere" - these are two separate components. The Rigidbody component does not describe the physical shape of the object. The Rigidbody component takes is physical form from the collider component attached to the same gameobject - or, in the case of compound colliders - the combination of colliders attached to each of the child gameobjects which may be parented to it.

So, for a Rigidbody which collides using a spherical shape, you need to add the Rigidbody component, plus a Sphere Collider Component to that gameobject, or a child of that gameobject.

It's entirely possible to display a sprite that corresponds to such a GameObject's position. If you're using the spritemanager (from the wiki), it's simply a case of using the Linked Sprite Manager, and adding a sprite which references the gameObject as the 'client' parameter.

If the above doesn't help, please provide a bit more information about the arrangement of the gameobject hierarchy which is causing the errors!

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Amaresh · Feb 18, 2014 at 03:10 PM 0
Share

Perfect Solution... Thanx

avatar image etbrachium · May 17, 2014 at 04:15 AM 0
Share

Thanks, spot on info

avatar image
6

Answer by $$anonymous$$ · Nov 17, 2009 at 08:09 PM

Do your child game objects have colliders attached? A game object that has children with individual colliders will collectively act as a compound collider (this is described somewhere in the Unity Manual in the Physics section - it's a technique to create collision shapes more complex than a sphere or cube), so if you have zero-volume plane/mesh colliders and a parent rigidbody, that might account for the warning. So I suggest you remove any colliders you really don't want or selectively replace them, e.g. replace a mesh collider with a box collider with non-zero width/height/depth. Or rearrange your objects is the children don't really need to be children.

If you still want to set the inertia tensor explicitly, you made the right call - here's another example setting it for a cylinder shape (extracted from some game physics book). But this is more appropriate for a refinement phase after getting the physics to basically work right and error-free.

function SetInertia() {
var inertia:Vector3;
// cylinder
inertia.x= rigidbody.mass*(1.0/12.0)*h*h+ rigidbody.mass*0.25*r*r;
inertia.y=  rigidbody.mass*0.5*r*r;
inertia.z = inertia.x;
rigidbody.inertiaTensor = inertia;

}

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
2

Answer by Novodantis 1 · Nov 19, 2009 at 01:03 AM

Okay, couldn't see the forest for all the trees! After re-reading your answers, I re-checked my hierarchy and realised I was so busy looking for colliders on the mesh of the ship and its components that might affect the tensor, I forgot to check for colliders on the actual planes of the sprites! Starting their life as unity GameObject meshes, they had colliders added by default of course. Thanks so much for your help, I am now a lot more happy/clear with how these physics entities go together =)

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image $$anonymous$$ · Nov 19, 2009 at 02:59 AM 0
Share

It is certainly not intuitive - I started making compound colliders (stack of spheres for a bowling pin) by adding all the colliders on the same game object, until I saw the Unity doc that recommends putting them on children.

avatar image
1

Answer by ifaris7 · Nov 14, 2011 at 07:53 AM

I have a plane, that is a child of an Object ( capsule ) that has a RigidBody component, i removed the MeshCollider Component from the Child --> Plane , and the error disappeared.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by DAT · Jan 04, 2012 at 01:17 PM

if the game object that the script is attached to is a plane. EASY FIX! all you have to do i, remove the mesh collider and replace it with a box collider. its as simple as that!

Comment
Add comment · Show 5 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Bunny83 · Jan 04, 2012 at 01:19 PM 1
Share

Why do you answer a 2 years old question that has really good upvoted answers with an advice that is already in @Duck's answer?

avatar image DAT · Feb 04, 2012 at 06:07 AM 0
Share

hmm im sorry i didn't relise that giving an answer could get you into trouble with some person that is hidden behind a username... very brave! you deserve a medal!

avatar image Eric5h5 · Feb 04, 2012 at 08:35 AM 0
Share

You're not "in trouble"; it's a valid question. What was the point of this answer? Wanting to help is commendable, but you should add new information if you have it, not just repeat what's already been said.

avatar image DAT · Apr 11, 2012 at 02:52 PM 0
Share

Yes, okay I didn't realize that the question was that old haha. sorry for being moody in the last comment(pms? but im a guy haha). now thanks to your constuctive criticism I will watch what questions I answer ;)

avatar image alexaustralia · Dec 14, 2012 at 10:15 AM 0
Share

I'm glad you did it. You resolve my problem.

  • 1
  • 2
  • ›

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

12 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Disable inertia tensor calculations on rigidbody? 0 Answers

Compute the torque needed to rotate an object at a constant rate 3 Answers

How to calculate inertia tensor and tensor rotation manually 2 Answers

Wierd Internal Physics problem 1 Answer

CapsuleCast consistent error in size 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges