• 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 /
  • Help Room /
avatar image
4
Question by hho_e3d · Feb 18, 2019 at 03:58 PM · animationanimatorruntimeavatarhumanoid

Replace / Modify Humanoid Avatar during Runtime

Hello everyone,

I am trying to build a new Humanoid Avatar and replace my current Humanoid Avatar during runtime.

The idea behind this is that I need to change the proportions of the rig dynamically (e.g. change the arm length or the width of the shoulders etc.). I wrote a test script where I only change the length of the left arm. Without changing the Avatar this change is immediately overwritten by the Animator as soon as I play an Animation. Thats when I figured I also have to create a new Avatar with the new skeleton proportions.

Itermediate Solution: The creation of a new Avatar works fine as long as I add a new Animator component before setting my newly created Avatar. This means I start without an Animator component attached to my character and then add a fresh Animator component and set my new Avatar as well as an AnimationController (first branch in the code).

Remaining Problem: If I want to just replace the current avatar of the existing Animator the changes are ignored (else branch in the code). The avatar is replaced (according to the name in the Inspector) but the proportions of the skeleton remain the same. I also tried to destroy the Animator Component before adding a new one (as stated above the whole problem only occures with updating an existing Animator), but this does not really work as Unity's Destroy function is delayed.

This is my current code (only showing the relevant parts IHMO):

 //Update...

 //... modify bone proportions (e.g. arm length)
 
 Animator anim = gameObject.GetComponent<Animator>();
 if (!anim)
 {
     //[!!] if this branch is executed, everything works fine

     anim = gameObject.AddComponent<Animator>();
     anim.runtimeAnimatorController = animationController;
 }
 else
 {
     //[!!] if this branch is executed, the new avatar is ignored

     Destroy(anim.avatar);
     anim.avatar = null;
 }
             
 //snapshot gameObject's parent and pose
 Vector3 originalPositon = transform.localPosition;
 Quaternion originalRotation = transform.localRotation;
 Vector3 originalScale = transform.localScale;
 
 Transform parent = transform.parent;
 
 //detach gameObject and place it into the world origin
 transform.SetParent(null, false);
 transform.localPosition = Vector3.zero;
 transform.localRotation = Quaternion.identity;
 transform.localScale = Vector3.one;
 
 //custom method to set the skeleton to T-Pose
 SetToTPose(gameObject);

 //custom method to create the human description
 HumanDescription description = BuildHumanDescription(gameObject);

 Avatar avatar = AvatarBuilder.BuildHumanAvatar(gameObject, description);
 
 if(avatar.isValid)
 {
     anim.avatar = avatar;
 }
 else
 {
     Debug.LogError("Avatar Invalid!");
 }
             
 //reset gameObject's parent and pose
 transform.SetParent(parent, false);
 transform.localPosition = originalPositon;
 transform.localRotation = originalRotation;
 transform.localScale = originalScale;
Comment
Add comment · Show 1
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 sayedsalah · Jun 18, 2020 at 11:55 PM 0
Share

are you reach at any solution ???

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

334 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 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 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

What am I doing wrong regarding this animation? It changes to a default state after the first frame and stays there. 0 Answers

Animation keys don't stay or save in animator? 0 Answers

Animation resetting to the muscle pose 0 Answers

How to create Mecanim animation in script from scratch? 0 Answers

Humanoid Animations 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