Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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
0
Question by Mindmapfreak · Jun 24, 2016 at 05:01 AM · meshskinnedmeshrendererbindingposeboneweights

Wrong bindPoses with generated mesh

I am trying to import a fbx-file with a skeleton. I got all the data and can import the mesh and bones correctly, this looks like this: MeshWithoutBindpose The problem occurs when I am trying to add weights and bindposes to the bones. The weights are correct, they deform the excepted vertices, but the mesh is deformed. See this picture: MeshWithBindpose The scales of the bones are all 1 and they are at the correct position. The hierarchy looks roughly like this:

 TestObject
 -------Hips
 --------------L_Thigh
 ---------------------...
 --------------Spine
 ---------------------...
 --------------R_Thigh
 ---------------------...
 -------MeshParent
 --------------Mesh

And the code for setting the bindposes like this (simplified):

 Transform[] boneTransforms = new Transform[numberOfBones];
 Matrix4x4[] bindPoses = new Matrix4x4[numberOfBones];
 for(int bi=0;bi<numberOfBones;bi++) {
     boneTransforms[bi] = getBoneWithIndex(bi).transform;
     bindPoses[bi] = boneTransforms[bi].worldToLocalMatrix* meshObject.transform.localToWorldMatrix;
     //Other stuff (setting boneWeights, ...)
 }

In every example I found the bindPoses were computed like this, so I am not really sure what I am doing wrong ... Are the bindposes the problem? How do you compute them correctly? Has it something to do with the hierarchy?

unityfbximportwithweights.png (66.3 kB)
unityfbximportnoweights.png (108.6 kB)
Comment
Add comment
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

1 Reply

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

Answer by Mindmapfreak · Jun 27, 2016 at 08:21 AM

Ok, the reason was rather dumb:

I get a pointer to each object from my DLL and first generate a GameObject for each pointer, so that parenting can work. Then I import other data for the object, such as position, rotation, scale, name and the mesh-data. The problem was that I set the bindposes when importing the mesh and the parent-objects do not necessarily have their position/rotation/scale set at that time. For this reason the bindposes were not correct at the time the mesh was generated. I changed the order from:

 GenerateGameObjectForEachObject();
 GetTransformDataAndMeshForEachObject();

to

 GenerateGameObjectForEachObject();
 GetTransformDataForEachObject();
 GetMeshForEachObject();

The code from my original post works as intended.

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

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Unbind a skinned mesh in Unity 2 Answers

Binding a mecanim skeleton to a new mesh 1 Answer

Character Animation Pose Mesh,Animated Pose Mesh 0 Answers

Reset SkinnedMesh pose 1 Answer

Performance issues with mesh processing 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