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 BiomotionLab · Jan 27, 2020 at 07:06 PM · meshruntimeskinnedmeshrendererblendshapesskinned-mesh

SkinnedMeshRenderer: Change Bones at start without changing mesh or blendshape results.

I'm trying to modify a SkinnedMeshRenderer at runtime but am running into a problem I can't figure out how to solve.

My team has provided me with a bone-rigged mesh of an average person. They also gave me some blendshapes that modify this mesh to match the shape of an individual person. So if I know a person's values for the blendshapes, I can make the character's mesh look like them. However, the problem I'm having is that the bones do not get modified, so if a person has short legs, the mesh becomes short correctly, but the bones are still the "Average" length. and when I try to animate the character, it gets all warped because it's animating long bones, but the mesh "expects" them to be short.

I'm trying to figure out how to make the bones match the mesh. I can actually perfectly calculate where the bones should be in the new mesh I have an array of bone positions. However, when I set the bones to these new locations, the mesh also moved to compensate for the bones moving. So now, when O add blendshape values, they are now incorrect, because they are assuming the mesh starts from the "average" mesh, not this bone-deformed mesh. So they no longer match the person. The bones match the person but not the mesh anymore.

Is there a way to only move the bones while keeping the mesh constant, and then "resetting" something so that it thinks this is the initial position? and then somehow the blendshapes are correct?

Hopefully my problem is clear.

I've tried cloning the mesh, changinging the bones, then restoring the old mesh, but it still gets deformed by the bone movement.

I've tried resetting the bindposes at different stages using:

 public void ResetBindPoses() {
         Mesh sharedMesh = skinnedMeshRenderer.sharedMesh;
         Matrix4x4[] newBindPoses = new Matrix4x4[bones.Length];

         Debug.Log($"binds: {sharedMesh.bindposes.Length}, bones: {bones.Length}");
         for (int i = 0; i < bones.Length; i++) {
             newBindPoses[i] = bones[i].worldToLocalMatrix * bones[0].parent.parent.localToWorldMatrix;
         }
         sharedMesh.bindposes = newBindPoses;
         skinnedMeshRenderer.sharedMesh = sharedMesh;
     }

That didn't seem to do much, but I don't really understand what bindposes are, and the unity help on bindposes is abysmal.

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

0 Replies

· Add your reply
  • Sort: 

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

132 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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

Unbind a skinned mesh in Unity 2 Answers

Importing Blender Object Splits Mesh Into 4 1 Answer

Importing models from streamingassets 0 Answers

Unity crash on iOS in SkinnedMeshRenderer deforms 0 Answers

How to fix a object intersection problem? 0 Answers


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