Click or drag to resize
3.0.0f1

Version 3.0.0f1 was released on 2015-12-24.

Upgrading from 3.0.0b5

The minimum Unity version is now 5.2.2. 5.3.0 or greater is recommended.

Delete the RagdollDefineSymbols.cs script.

All FloatRange properties for describing forces to use at different strength values are now domain-normalized AnimationCurves, so you will need to re-tune these values if you had previously configured them on either a TetrapodCharacterizationTemplate or on a Ragdoll or individual RagdollParts. Note that you can also use the controls in the Ragdoll inspector to set these profile curves on all parts in the hierarchy.

3.0.0f1 has also fixed some bugs in the mass distribution code. To update your characters, simply select their Ragdoll component, set a new Mass value in the Hierarchy group, and then type in the old mass value.

New Features
  • Increased CPU performance of RagdollAnimator approximately 3x in test cases.
  • Added button to TetrapodRagdoll/HumanoidRagdoll inspector to convert to a lightweight ragdoll setup. This setup saves an additional approximately 20-30% CPU use on average in RagdollAnimator and eliminates CPU use from internal Physics calls from the Ragdoll hierarchy (e.g., Physics.FetchResults, Physics.UpdateBodies, Physics.Interpolation. Use it on performance-critical platforms for characters that only need to go from animation to ragdoll and/or back to animation and do not need individual body part colliders while animated.
  • Major performance improvements in all inspectors. RagdollPart inspector is now several orders of magnitude faster when selecting and editing properties on all parts in the hierarchy at once.
  • Added properties to TetrapodRagdoll to ignore collisions between parts that can commonly produce undesirable results, particularly for non-humanoid tetrapods.
  • Added ArbitraryRagdoll/ArbitraryRagdollAnimator classes.
  • RagdollParts can now specify a maximum strength value if they should never return to a strength of 1. This allows you to effectively ensure some parts will never return to kinematic animation.
  • RagdollStates now allow you to specify a strength value to indicate how much strength the character should apply to match the animated input pose. The default value of 0 retains the existing behavior. This allows you to mark specific animation states as physical with a specified strength.
  • Added support for automatic reactions to environmental impacts and manual impulses. In order to collide with static colliders or colliders with kinematic rigidbodies, the specified part may not be kinematic, and therefore must have a strength of less than 1 (e.g., 0.9999999 will do). See the Environmental Impacts group in the Physics group of the RagdollPart inspector to adjust settings and get tooltips on their effects. Default tuning for these properties has not yet been finalized.
  • Added ability to specify parts which, if contacting a collider on a ground layer and falling below a certain strength, will cause the full hierarchy to enter a ragdoll state. This feature allows you to e.g., make a character become a ragdoll by hitting its foot with a projectile when the foot is grounded.
  • Added new scene view handle for RagdollParts to specify impact transmission through the hierarchy.
  • Scene view handles for hierarchy nodes now support shift-click to add to the current selection.
  • Added increased fidelity for specifying body orientation parameters. In addition to the default supine parameter, you can now specify parameters to indicate if a character is on its right or left side (especially helpful for many quadrupeds), as well as arbitrary parameters to get information about the upper and lower body independently (for e.g., characters that are bent over at the waist) if your animator controller can discriminate from among these postures.
  • Added full support for breakable parts. See RagdollAnimator.SetBodyShouldAnimateWhenDisconnected() and RagdollAnimator.IsPartDisconnected().
  • FlexibleCollider/RagdollPart and TetrapodCharacterizationTemplate now support mesh collider types. You must still assign the actual mesh to the collider component yourself.
  • Automatic part detection should now properly locate skinned bones if a Human IK control rig is found in the hierarchy.
  • Added preference menu item to disable custom editors for built-in joint types.
Changes
  • Minimum Unity version is now 5.2.2.
  • Removed RagdollDefineSymbols.cs; please delete it.
  • Run-Time Behavior
    • RagdollAnimator no longer enforces AnimatorCullingMode.AlwaysAnimate or AnimatorUpdateMode.AnimatePhysics.
    • RagdollAnimator no longer emits a warning message about assigning a new runtimeAnimatorController to the Animator if it is an AnimatorOverrideController with the same base runtimeAnimatorController as that assigned at Start time.
    • Your renderers can now be in either the Ragdoll hierarchy or the RagdollAnimator hierarchy. If using Cloth, your renderers must be in the Ragdoll hierarchy to ensure proper inheritance of momentum. See inspector and console messages for details.
    • Axial skeleton parts (pelvis, spine, neck, head) by default do not collide with each other for tetrapod (and hence humanoid) ragdolls. The same goes for collisions between proximal limbs (e.g., upper legs and upper arms) with nearby axial skeleton parts.
    • Colliders in the ragdoll and animator hierarchies will now automatically ignore one another.
    • Procedural helper joints that are purely cosmetic (for e.g., animating twist deformation) should subscribe to RagdollAnimator.OnPostprocessAnimatedHierarchy.
  • Editor and Setup
    • RagdollAnimators that are not updating in the physics timestep allow you to use the Animator controller window as normal; RagdollAnimators that are updating in the physics timestep (recommended for correct results in most cases) still cannot use the live link setting.
    • The automated setup procedure for Prepare for Physical Animation now defaults to using the renderers in the RagdollAnimator hierarchy.
    • Improved positioning and orientation of terminal colliders on non-humanoids during characterization. This change affects terminal tail colliders as well as pes colliders where no pedal phalanx is present (e.g., simple theropod rigs).
    • Phalanx mass is now preferentially assigned to its corresponding manus or pes before being redistributed throughout the rest of the hierarchy.
    • Added Definition foldout to tetrapod inspectors to collapse tab groups when no longer in use.
    • Adding a character controller via the automated setup procedure now automatically registers events to disable/re-enable it when entering/exiting full-hierarchy ragdoll.
    • Removed collision matrix warnings from inspector.
  • API
    • RagdollAnimator.OnEnterFullHierarchyRagdoll now only fires when the entire hierarchy first has 0 strength.
    • RagdollAnimator.OnEnterFullHierarchyRagdoll now only fires when at least one part has strength > 0.
    • RagdollAnimator.OnEnterRagdollState and RagdollAnimator.OnExitRagdollState now only fire when a part enters or exits 0 strength, respectively.
    • RagdollAnimator.OnEnterRagdollState and RagdollAnimator.OnExitRagdollState are now raw C# events rather than serialized UnityEvents. You will lose any persistent calls you may have serialized, and now may only subscribe with delegates of the appropriate signature (type is RagdollAnimator.RagdollPartEvent).
    • TetrapodRagdollAnimator.SupineParam is obsolete and has been replaced with RagdollAnimator.GetOrientationParameters() and RagdollAnimator.SetOrientationParameters(). To create a parameter that works like the previous supine parameter, use new OrientationParameter(parameterId, Vector3.forward).
    • The following FloatRange properties on RagdollPart have been replaced with the corresponding methods to describe the profile of forces to be used at different strength values. You will need to re-tune these properties on your prefabs.
      • AngularDamperRange -> GetAngularDampingProfile()/SetAngularDampingProfile()
      • AngularPositionForceRange -> GetAngularPositionForceProfile()/SetAngularPositionForceProfile()
      • AngularVelocityForceRange -> GetAngularVelocityForceProfile()/SetAngularVelocityForceProfile()
      • LinearDamperRange -> GetLinearDampingProfile()/SetLinearDampingProfile()
      • LinearPositionForceRange -> GetLinearPositionForceProfile()/SetLinearPositionForceProfile()
      • LinearVelocityForceRange -> GetLinearVelocityForceProfile()/SetLinearVelocityForceProfile()
    • The following methods on RagdollPart have been removed and replaced with a single property, RagdollPart.Strength:
      • RagdollPart.BlendJointAngularLimits()
      • RagdollPart.SetJointAngularForceProperties()
      • RagdollPart.SetJointLinearForceProperties()
    • The following methods on Ragdoll have been replaced with the corresponding methods:
      • SetHierarchyAngularDamperScalar -> SetHierarchyAngularDampingProfile()
      • SetHierarchyAngularPositionForceScalar -> SetHierarchyAngularPositionForceProfile()
      • SetHierarchyAngularVelocityForceScalar -> SetHierarchyAngularVelocityForceProfile()
      • SetHierarchyLinearDamperScalar -> SetHierarchyLinearDampingProfile()
      • SetHierarchyLinearPositionForceScalar -> SetHierarchyLinearPositionForceProfile()
      • SetHierarchyLinearVelocityForceScalar -> SetHierarchyLinearVelocityForceProfile()
    • The class hierarchy for RagdollAnimator has been cleaned up. Derived classes now implement IRagdollBinder interface.
    • ITetrapodX.DefinesArbitraryChain() is now IArbitraryChainX.DefinesArbitraryChain().
    • Removed Ragdoll.SetHierarchyAngularDriveMode() and Ragdoll.SetHierarchyLinearDriveMode() as they are no longer necessary.
    • Removed RagdollPart.BackupJoint as it is no longer necessary for breakable joints.
  • Library updates.
Bug Fixes
  • Fixed bug causing wrong center of mass to get set on some parts for characters with non-identity scale.
  • Toggling center of mass as explicit or implicit from the inspector for a PhysicalBody or RagdollPart now pushes the change to its corresponding part.
  • PhysicalBody.CenterOfMass now returns the expected value for parts that are not using explicit center of mass at edit-time.
  • Fix possible null exception in RagdollPartChain.GetBodies() and TransformChain.GetBodies() when list parameter passed in is null and chain contains no bodies.
  • Fixed some inspector status tooltips not displaying.
  • Fixed bug preventing renaming characterization template from inspector.
  • Fixed null exception when undoing adding a FlexibleCollider-derived component to a game object.
  • Fixed hard crash in Unity editor when multi-selecting characterization templates with a different number of chains defined.
  • Fixed bug where some inspectors did not update when resetting properties to prefab values.
  • Fixed exception when using Clean Up button on RagdollPart inspector.
  • Fixed bug causing collider to be incorrectly resized when changing direction of a symmetry-mapped capsule on a RagdollPart.
  • Fixed bug causing collider size to revert to wrong value when undoing a change to a sphere shape.
  • Fixed bug preventing undoing an off-identity rotation of a collider shape.
  • Fixed bug that could cause collider rotation handle to stop responding when rotating back through identity.
  • Fixed bug that could causing console to get spammed with warning messages if Animator has no controller assigned.
  • ITetrapodX<TPart, TChain>.MatchParts<TPart2, TChain2, TDictValue>() method now correctly clears map; this fixes a bug that could cause TetrapodRagdollAnimator/HumanoidRagdollAnimator inspectors to display the wrong status icon for the Ragdoll field and Body Parts tab.
  • RagdollAnimator.FullHierarchyBlendTime can no longer be set to less than 0.
  • Fixed some possible divide by zero exceptions when RagdollAnimator.FullHierarchyBlendTime is 0.
  • Fix parts with no parent body (e.g., root/pelvis) not applying correct target rotation to joint.
  • Fixed bug causing mass to be distributed incorrectly.
  • Fixed bug causing handles for shape colliders to be positioned incorrectly for scaled objects.
  • Fixed bug causing harmless error messages when setting axial contour curves in the characterization template inspector.
  • Fixed bug causing wrong target rotation on ragdoll parts with no parents (e.g., root/pelvis).
See Also