Search Unity

PuppetMaster - Advanced Character Physics Tool [RELEASED]

Discussion in 'Assets and Asset Store' started by Partel-Lang, Oct 1, 2015.

  1. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    117
    Hi Partel,

    How can I avoid the body parts of the npcs from getting stuck in walls or the floor?

    Many thanks!
     
    dimitur_kolev2 likes this.
  2. Deleted User

    Deleted User

    Guest

    Partel-Lang likes this.
  3. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    When in Kinematic mode, PuppetMaster doesn't make the animated rig follow the ragdoll, because the ragdoll is kinematic and is just matched to the animation.

    Should apply that timeline of transform data directly to the animated rig, not the ragdoll. In LateUpdate or if Animator is in Animate Physics mode, use PuppetMaster.OnRead delegate. That way PM will match the ragdoll to that and you will not have to do anything else.

    No, I don't think you can have another PuppetMaster parented to your PuppetMaster. You could add rigidbody, joint and collider for the holder under PuppetMaster hierarchy. Then add a muscle to PuppetMaster's list of muscles, assign the joint and the target. You can set pin weight and muscle weight to 0 for that muscle, so it would just dangle about.

    Usually people use something like Dynamic Bone for stuff like that though.

    Hey,
    Make the wall/ground colliders thicker wherever possible.
    Set solver type to Temporal Gauss-Seidel in physics settings.
    Reduce fixed timestep.
    Increase solver iterations.

    Best,
    Pärtel
     
  4. Deleted User

    Deleted User

    Guest

    Yes I probably will change the holders in future versions, right now I just did a prop muscle for it.

    Speaking about PropMuscles, my Prop has wrong positions:
    Screenshot from 2022-06-28 18-00-44.png
    I targeted the problem already, it's because the PropMuscle has wrong position, the PuppetMasterProp is doing a good job, how can I solve this issue? I generate the PropMuscle at runtime.

    EDIT: Please could you give me best practice "Wait for Fixed Update" or Move the Parent Muscle, etc please let me know :)

    Another thing I like to mention, I don't know what I did, but I never fixed this bug I don't use translation Animations but when unchecking "Update Anchors" and "Support Translation Animations" I get this result

    Screenshot from 2022-06-28 19-43-52.png

    The Ragdoll is shrinking just after checking this both bools
    Screenshot from 2022-06-28 19-45-08.png
    The Ragdoll maintain its shape, it should work without this 2 bools, maybe you know more than me :)

    EDIT:
    I figured it out yey^^ It turns out the joint anchors should not be at zero before the Puppet getting created, I solved it by just set correct anchors
     
    Last edited by a moderator: Jun 28, 2022
    Partel-Lang likes this.
  5. Deleted User

    Deleted User

    Guest

    Hey Partel,

    Finally, I know where this bug is coming from that my Puppets Unpin nearly random^^

    ezgif.com-gif-maker (4).gif

    It's the Garbage Collector of Unity which heaps a lot of data.
    So I've created my own GC so now I know exactly when it's collecting garbage ... so my question is how can I clear velocity after it's finished collecting garbage?
    And which functions should I call to keep the puppet in it's current state but basically ignore the current GC frame because this Delta Time is way too large?
     
  6. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    509
    Hi you enable puppet master when aiming to enemy too? Because when I enable 10 characters with puppet master on It kills the frames.
     
  7. Deleted User

    Deleted User

    Guest

    I just can guide you to the manual, http://root-motion.com/puppetmasterdox/html/page8.html
    I can have 50 Puppets Active without any problem, but the game I'm building is focus on modern hardware.

    Optimal maybe looking at the profiler or build with IL2CPP and use Burst or Jobs.
     
    Crossway likes this.
  8. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    Should work if you call behaviourPuppet.SetHasCollided(false); right before you do GC.

    Best,
    Pärtel
     
  9. Deleted User

    Deleted User

    Guest

    I don't see this Function, it looks like it's in my version not implemented, I'm using the current v1.1

    And I did worked last night on the GC and switched to the Incremental version which is smoothing the GC over some amount of time so maybe there is a better way to do it in the period of 0.3 - 0.7s to overcome this lag, one solution I can think of is using just in this period of time the last valid delta time ( it would look a bit faster or slower ) but it's probably most stable way without distracting the functionality. ... Maybe you have a better idea for a time based version.

    Edit: I thought about disable Puppet Entirely when condition A: pinWeight of the muscles is heigh enough and B: when the Puppet is pinned, and I just created an Empty Behaviour which is switch when both conditions are true. It works perfect and this 0.5s having no Unpinning is actually the effect I want and the Ragdoll is still active so the collision checks and everything works as expected.
     
    Last edited by a moderator: Jul 9, 2022
  10. Edwardfmo

    Edwardfmo

    Joined:
    Jun 2, 2015
    Posts:
    4
    This might have been asked before, but I cannot seem to find it. I would like to set up a basic hit-reaction system. I have my puppet set, animations work correctly, and there is some reaction that I see from colliders.

    What I'm asking is, what best practices are there, what are the basic parameters for this to work fine? I am looking for some hit reaction when struck, but nothing outrageous, and no movement of tha character itself. However, when the killing blow is delivered (I can determine this at the time of impact), I would like to have full ragdoll function.

    I would appreciate any best practices or ideas, that would save me some experimenting time.
     
  11. Edwardfmo

    Edwardfmo

    Joined:
    Jun 2, 2015
    Posts:
    4
    Hi,

    I have an issue with the "Active" mode: Even if I disable internal collisions, some of my animations (where I guess the colliders would intersect at some point) become jumpy, and the model starts to fall apart for a few frame,s then jump right back.

    This is the inspector for the ragdoll:
    2022-07-13_16h21_56.png

    And this is the issue:
    2022-07-13_16h21_19.png

    As you can see, the animator would place the left forearm across the chest, the hand somewhere clsoe to the right forearm (Blue line), but the ragdoll is messed up, the forearm is dislocated in front of the body, and the hand is all the way over the right upper arm. I disabled the skinned mesh for clarity, but it is also similarly messed up.

    Any ideas what am I doing wrong? I have even disabled the character controller for this test.
     
  12. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Ah, sorry, forgot I added it in since the last release. Please open BehaviourPuppet.cs and add the following method until I update the package:

    Code (CSharp):
    1. /// <summary>
    2.         /// Puppets do not get unpinned if they haven't collided with anything on the "Collision Layers" since the last time they got up.
    3.         /// </summary>
    4.         public void SetHasCollided(bool to)
    5.         {
    6.             hasCollidedSinceGetUp = to;
    7.         }
    Hey,
    You can use BehaviourPuppet.OnCollision(MuscleCollision m) delegate to get a call from BehaviourPuppet when it collides with something. MuscleCollision contains collision info and muscle index, which you can use to see which body part was hit, how strong (m.collision.impulse.sqrMagnitude) and use that to play a hit reaction animation. When the health runs out, just call puppetMaster.Kill();

    Hey,
    Does enabling "Update Joint Anchors" and "Support Translation Animation" in PuppetMaster fix it?

    Best,
    Pärtel
     
  13. Edwardfmo

    Edwardfmo

    Joined:
    Jun 2, 2015
    Posts:
    4
    Yes it does, thank you very much! Can you explain what was the issue?
     
  14. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    The ragdoll normally has less moving parts than the animated hierarchy. For example ragdolls normally don't have shoulder rigidbodies and usually have less spine rigidbodies than there are spine bones in the animated rig. So when animation rotates the shoulder bone, the anchor of the upper arm joint needs to be recalculated every frame, because it is connected to the chest, not the shoulder. "Update Joint Anchors" enables that. *Support Translation Animation" allows for stuff like scaling bones and prismatic joints. It is not a visible problem in many use cases, so having it disabled is just an optimization.

    Best,
    Pärtel
     
  15. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    117
    Hi Partel,

    In my game I mostly play animations using Hash Play, so there is no transition and this causes sometimes for the bodyparts of some characters to rapdly jump all over the area. How can I stop that?

    Many thanks!
     
    Last edited: Jul 18, 2022
  16. cybie

    cybie

    Joined:
    Sep 17, 2010
    Posts:
    91
    Hi Partel,

    I come across this reference for doing "stop motion" animation effect. https://github.com/EricFreeman/FakeStopMotion
    It looks like it amounts to reducing the animation update rate. I want to add this to my Puppet Master project. Would you know how I could, for example, skip every second frame of animation? Is there a way to tell Puppet Master to skip updating for one frame?
     
    Last edited: Jul 19, 2022
  17. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    You could just set fixed delta time to the animation frequency you want, set Animator mode to Animate Physics and make sure none of the rigidbodies have interpolation enabled. If the frequency is too low it will affect the quality of physics though.

    What you could do alternately, to have continuous physics, use a script that uses PuppetMaster.OnWrite delegate to store the pose on the stop motion frames and write that pose on the character on all other frames.

    Could also just disable the Animator and update it manually in the desired frequency, but that will cause physics to get pretty jumpy snapping from pose to pose.

    Best,
    Pärtel
     
  18. homemacai

    homemacai

    Joined:
    Jul 22, 2020
    Posts:
    74
    Hello Partel, so I want to have my character to Get Up on Moving Platforms, but as soon as the Get Up State enters, it freezes the character controller transform in place, until a bit before leaving the Get Up State then it releases the transform, and the physics return to move the character based on the platform movement. Even though I am sure nothing is moving that character controller other than the Behavior Puppet.
    Tried with setting Blend to Anim and Min Get Up Time and other parameters to zero, but no luck.
    Any advice? Thank you

    Managed to do a hack, by changing the PuppetMaster targetRoot when entering the GetUp state, so that Puppetmaster doesn't take control of the character's transform. But now I get this( image attached). The blue helper splines tells me that the IK animation is starting at that point, but since the boat is moving, the character bounces to that position and back to the character controller position further ahead since it moved with the platform. It is "usable" but still far away from a good outcome.
    Anyway, will wait for help cause maybe i'm going in the wrong direction.
    Thank you!
     

    Attached Files:

    Last edited: Jul 26, 2022
  19. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    If you go to BehaviourPuppet.cs and comment this section out, does that make the problem go away?
    Also might want to set Blend To Animation Time to 0 in BehaviourPuppet on moving platforms.

    Best,
    Pärtel
     
  20. homemacai

    homemacai

    Joined:
    Jul 22, 2020
    Posts:
    74
    Hello Partel, not sure exactly what lines you asked me comment out. Sorry, you mean the code that moves the roo Transform when getting up?
     
  21. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Oh damn, forgot to add the screenshot haha, sorry! Lines 795 to 803.
    upload_2022-7-26_15-40-7.png
     
  22. homemacai

    homemacai

    Joined:
    Jul 22, 2020
    Posts:
    74
    Ah okay! Just did it.
    So commenting those lines managed to solve the Hack I just did. Now I do not need to change the targetRoot Transform when getting up which is amazing. Thanks!
    But I do still have the issue of the IK Skeleton getting up after a few moments, even with Blend To Animation Time to 0.
    But since the Character Controller keeps moving with the boat, the ragdol rubberband to the IK Blue Skeleton, and back to the Char Controller. Maybe there is a way to instantly make that animation happen so that the IK doesnt have time to be left behind.
    Thank You!
     
  23. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    117
    Hi Partel,

    Could you please help me with this?
     
  24. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey, sent you a PM.

    Hey,
    So the animation snaps from one pose to another in a frame? That's a bit of a problem because physics is continuous. Could try calling this in FixedUpdate every time after it snaps:

    Code (CSharp):
    1. foreach (Muscle m in puppetMaster.muscles) {
    2.     m.MoveToTarget();
    3.     m.ClearVelocities();
    4. }
    Best,
    Pärtel
     
    homemacai likes this.
  25. daedal

    daedal

    Joined:
    Dec 19, 2013
    Posts:
    31
    Hey Pärtel,

    I'm hitting an issue where characters will sometimes shift position right after being enabled for the first time. This position shift is random. Sometimes it doesn't happen. Sometimes it's a short distance. And sometimes the characters shift many meters over several frames, ending up in a distant part of the map, in the sky, or beneath the ground.

    This seems more likely the greater the number of characters with puppets that are enabled at once. And disabling PuppetMaster will prevent this issue.

    I've only seen this issue after adding networking using Photon Fusion to the scene. However, I'm letting Unity handle physics at the moment so a custom Physics.Simulate timing is not a factor here. Though perhaps there's a timing conflict between PuppetMaster and the Fusion callbacks when it comes to transform changes.

    I've attempted to work around the issue by calling PuppetMaster.Teleport when a character is enabled and then repeatedly every couple frames for the first ten frames if the character is in an incorrect position. This workaround reduces the frequency of the issue but does not prevent it entirely.

    Also trying things like BehaviourPuppet.SetState(State.Puppet) and zeroing out velocities on the muscles doesn't seem to help.

    Any thoughts on additional things I could try or ways of debugging this issue?

    Edit: To further clarify, the pelvis of the puppet can get into a state where it continuously drifts over time. I have a script that moves the character to match the pelvis if it gets too out of sync which is getting triggered in this case. And resetting the local position of the pelvis to the initial value doesn't stop the motion.

    Thanks!
     
    Last edited: Jul 31, 2022
  26. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    Make sure PuppetMaster gameobject is not parented to the character controller (Target Root) that moves around. Usually with networked prefabs the puppet has to be a child of the network object, but you should unparent PuppetMaster from it at start. If Pm is a child of the controller, it will inherit motion from it, which is wrong, as the ragdoll needs to be moved by PM physics only.
    About the shifting position, PuppetMaster sets its position and rotation to match the "Target Root" gameobject when it initializes, so maybe that's it?

    Best,
    Pärtel
     
  27. mpDev_TND

    mpDev_TND

    Joined:
    Nov 22, 2019
    Posts:
    3
    Hi, i have problem on doing the setup of Puppet Master, when i try to make the ragdoll with the Biped component and then setup the puppet master, when i press play the characters look weird

    upload_2022-8-2_1-42-30.png

    Am i missiing something?
     
  28. daedal

    daedal

    Joined:
    Dec 19, 2013
    Posts:
    31
    Thanks for the info!

    I did have an incorrect hierarchy with the PuppetMaster parented to the character controller. Upon fixing that, it's working better but I still need a script that checks if the puppet pelvis position has drifted from the character controller position. Upon detecting a drift I set the PuppetMaster's localPosition and localRotation to match the character controller. I also set the puppet pelvis back to the initial local position. Without doing this, there's a ~10% chance that the puppet skeleton ends up being several meters away from the character controller position causing many issues. Doing this position reset always gets the puppet back into a good state at least.

    Edit: I do have a rare repro (~1% chance) where the puppet pelvis ends up a couple meters from the character controller and the character model appears several meters away beyond that, floating in the air. This is happening despite the character model being in the same position as the controller. My logic to correct the position fails in this case even if running every fixed frame. Any ideas on how I can avoid this situation?
     
    Last edited: Aug 4, 2022
  29. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    Please enable "Support Translation Animation" in PuppetMaster component for now until the next version with a fix is out.

    Hey,
    Haven't seen that happen here, so don't know how to reproduce the issue. Can you send me some kind of a repro package/project?
    But also make sure there is no script changing character controller position or rotation while behaviourPuppet.state != BehaviourPuppet.State.Puppet. While unpinned or getting up BehaviourPuppet must have exclusive control over that.

    Best,
    Pärtel
     
  30. chuckyluv869

    chuckyluv869

    Joined:
    Sep 25, 2013
    Posts:
    51
    Hello,

    This is a problem that occurred in a new project with Opsive UCC and PuppetMaster installed and set up correctly. The first puppet was the integration demo puppet in the demo scene for the PuppetMaster integration and it worked as expected. I used the same scene and followed the PuppetMaster UCC Setup window instructions and results in the forearms/hands and the calves/feet bunching up on the model. I spent days trying to fix this thinking I had done something wrong but this test shows that this behavior is out-of-the-box behavior.

    I installed the Opsive's UCC (Unity 2018.4.23f1, UCC 2.2.8) Unity package from the Assets\Plugins\RootMotion\PuppetMaster\_Integration folder.

    Please help me find a fix to this. I emailed support but haven't received a response. Below is the video of the setup process and results:


    I appreciate your help.
     
  31. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    Sorry about that, looks like a known issue with joint anchors being messed up for ragdolls created in newer unity versions, please enable "Support Translation Animation" in PuppetMaster to fix it until the next PM version is out.

    Best,
    Pärtel
     
    chuckyluv869 likes this.
  32. chuckyluv869

    chuckyluv869

    Joined:
    Sep 25, 2013
    Posts:
    51
    Thank you! That worked. I was able to setup new models and have PuppetMaster work with those UCC characters.

    I have some very intricate UCC Characters that I've already set up. I would like to add PuppetMaster to those UCC characters. Can you outline what would need to be done to set up an existing UCC character with PuppetMaster? I've tried several things already but I'm sure I'm missing some steps that I would need to do.
     
  33. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    I haven't used UCC for anything extensive, so don't know enough about it, just managed to create that integration process of setting up a fresh UCC puppet somehow, so can't really help with that, sorry.

    Best,
    Pärtel
     
  34. Stupeflip

    Stupeflip

    Joined:
    Mar 20, 2016
    Posts:
    10
    Hello :) ,

    How can I access the puppet master mode in a new script, I want to change it from active to kinematic with a trigger.

    Also, I would like to implement dynamic bone. I found your earlier answer here :https://forum.unity.com/threads/dynamic-bone-and-final-ik-puppetmaster-issue.967162/

    1. You should use PuppetMaster.OnWrite delegate to update DynamicBone from:
    2. void Start() {
    3. puppetMaster.OnWrite += OnPMWrite;
    4. }
    In which script should I write this ?

    Thanks in advance.
    I appreciate your help.
     

    Attached Files:

  35. The11thAlchemist

    The11thAlchemist

    Joined:
    Aug 10, 2020
    Posts:
    30
    Just a heads up for anyone using unity version 2021.2.2f1. The gizmos for FinalIK and puppetmaster weren't working. I wasted several hours thinking I had a property wrong in project settings, but just updating to 2021.3.4f1 fixed the issue.
     
    Partel-Lang likes this.
  36. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,

    Code (CSharp):
    1. using UnityEngine;
    2. using RootMotion.Dynamics;
    3.  
    4. public class PuppetModeTrigger : MonoBehaviour
    5. {
    6.     public PuppetMaster puppetMaster;
    7.     public PuppetMaster.Mode switchToMode = PuppetMaster.Mode.Kinematic;
    8.  
    9.     private void OnTriggerEnter(Collider other)
    10.     {
    11.         puppetMaster.mode = switchToMode;
    12.     }
    13. }
    About DynamicBone, I think you should also be able to just go to the Script Execution Order and drag DynamicBone script to a higher value than PuppetMaster has.

    Best,
    Pärtel
     
    Stupeflip likes this.
  37. Stupeflip

    Stupeflip

    Joined:
    Mar 20, 2016
    Posts:
    10
    Both things work, thanks !
     
  38. maximmolek785439

    maximmolek785439

    Joined:
    Sep 19, 2020
    Posts:
    89
    Hi, I need help how can I put puppet master and Emerald Ai together? Thank you
     
  39. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Hey,
    I remember there being a problem with PuppetMaster initialization with Emerald AI. This patch should make it work.
    About integrating PuppetMaster with any 3rd party character controller, there are the things to keep in mind>

    1. Make sure the AI is disabled from moving and rotating the character and changing the animation while behaviourPuppet.state != BehaviourPuppet.State.Puppet;
    2. The AI must adopt the current position/rotation of the character controller when the puppet gets up, not force some internal transform state.
    3. The AI must work on the Transform that is assigned as "Target Root" in PuppetMaster, not the parent of PuppetMaster (the ragdoll must be moved physically by PuppetMaster so it must not inherit any kinetic motion from its parent.

    Best,
    Pärtel
     
  40. maximmolek785439

    maximmolek785439

    Joined:
    Sep 19, 2020
    Posts:
    89
    hello, thank you very much, but I need more details, I don't know what to set in emerald ai and how to set prefab buddy, so what's the deal with target root ? when, should I choose joints characters or configurable joints? Thank you
     

    Attached Files:

  41. sancha-km

    sancha-km

    Joined:
    Jun 5, 2016
    Posts:
    41
    Hi,
    Hitting puppet in torso\arms\head is working fine, but in legs he almost almost always fall. Even with very low unpin value.
    Try to change resistance and knockout value, what else can i try?
     
    Last edited: Sep 9, 2022
  42. OmnifariousStudios

    OmnifariousStudios

    Joined:
    Mar 12, 2018
    Posts:
    48
    Hi again Partel,

    I've been working on some flying humanoid enemies and they work really well, but sometimes when they collide with something or ragdoll, they immediately "teleport" to the ground.

    Any ideas?

    I thought it might be the NavMeshAgent doing it when getting re-enabled, but I've set navMeshAgent.UpdatePosition to false.

    Any chance there's a line I missed in PuppetMaster.cs, BehaviourPuppet, or BehaviourFall that would move the puppet to the ground immediately when activated?

    Thanks!
     
  43. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    Oh crap, looks like I missed a notification here. I'm so sorry, did you guys already find the solutions?

    How is the flying done. Is the gameobject that is assigned as "Target Root" in PuppetMaster flying too or is the flying done on the bone level by moving the pelvis up to the sky?

    Did you try increasing Knock Out Distance for the Leg and Foot groups only in the "Group Overrides" of the BehaviourPuppet?

    Best,
    Pärtel
     
  44. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    117
    Hi Partel!

    Does this game use PuppetMaster?


    If yes, how does the dev get this pushing/tumbling/shoving motion with the zombies when hitting them?
     
  45. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,556
    No, I believe that is an Unreal Engine game. But you can do the same with PuppetMaster. Those pushes, tumblings are just animations played at the time of the hit. So it's basically animated hit reaction + physical hit reaction and that always gives you the most realistic results.

    Cheers,
    Pärtel
     
  46. churi24

    churi24

    Joined:
    Sep 17, 2013
    Posts:
    98
    Hi Partel, do you plan to support Photon Fusion?
     
  47. gliealonso

    gliealonso

    Joined:
    Oct 21, 2018
    Posts:
    117
    Thanks Partel!

    He kinda already supports, per example, you can synchronize the body parts of a character when it's knocked out. A while back he sent me a scene with scripts for that, I'm sure he has it saved somewhere.
     
  48. nicknick_

    nicknick_

    Joined:
    Mar 31, 2017
    Posts:
    11
    Hi Partel,
    thank you for this super awesome asset, I´m having so much fun with it!

    I discovered when testing on lower end devices with overall bad framerates, the puppet loses balance very quickly and reacts totally different than intended. I use my own 3rd character controller and normally PuppetMaster works as intended.
    I´m not sure if it´s related to PuppetMaster or overall physix related, but maybe there are ways to maintain the same behavior regardless of the framerate?
     
  49. OmnifariousStudios

    OmnifariousStudios

    Joined:
    Mar 12, 2018
    Posts:
    48
    Hi Partel,
    It's done by moving the target root.


    I've also tried altering some of BehaviorFall.cs to make sure it doesn't change y position based on the hip muscle and its target.
     
  50. WonkyDonky

    WonkyDonky

    Joined:
    Aug 24, 2014
    Posts:
    65
    I'm getting this warning pretty much every time, what can I do to prevent it?

    Code (CSharp):
    1. Warning: Invalid quaternion rotation. Setting quaternion rotation to identity
    2. UnityEngine.ConfigurableJoint:set_targetRotation (UnityEngine.Quaternion)
    3.  
    4. RootMotion.Dynamics.Muscle:MuscleRotation (single,single,single) (at Assets/Plugins/RootMotion/PuppetMaster/Scripts/Muscle.cs:1146)
    5. RootMotion.Dynamics.Muscle:Update (single,single,single,single,single,single,bool,bool,single) (at Assets/Plugins/RootMotion/PuppetMaster/Scripts/Muscle.cs:951)
    6. RootMotion.Dynamics.PuppetMaster:FixedUpdate () (at Assets/Plugins/RootMotion/PuppetMaster/Scripts/PuppetMaster.cs:1046)
    (also is there a easy way to add puppetmaster functionality to just 1-2 bodyparts
    other than: setting weight to zero on all the other bodyparts? + How to set just one bodypart being kinematic eg. hand, if I just set the rigidbody as kinematic manually it's stuck in place)
     
    Last edited: Oct 3, 2022