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 /
  • 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.

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

Humanoid Animations 0 Answers

Using an Avatar locks Movement in Character When Animating 0 Answers

Mixamo animations get weird when set to humanoid 2 Answers

Humanoid Avatar Muscle Pose Issue 1 Answer

Why does a humanoid avatar's (in preview mode) pose gets applied whenever I enter play mode and use animator without animation? (default pose) 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