Skip to main content

Changelog

[1.6.3] - 16.03.2024

Changed

  • Reverting Entities dependency to version 1.0.16 with appropriate changes. No functionality was affected.

[1.6.2] - 14.03.2024

Fixed

  • Animation events edge cases (start and end animation).
  • Correcting events for looped animations.
  • Exception during renderers bounding box recalculation if skinned mesh renderer root bone property is null.

[1.6.1] - 9.03.2024

Fixed

  • DebugDrawer incorrect line renderer in Unity versions newer than 2022.3.17f1.
  • Authoring object copy for animation sampling is not created if avatar is missing on animator.

[1.6.0] - 7.03.2024

Fixed

  • User curves incorrect multiple layers blending.
  • IK targets incorrect world pose calculation if the animated entity is not a hierarchy root.

Added

Changed

  • Updated Entities dependency to version 1.2.0-pre.6
  • Making DebugDrawer a client only system.

[1.5.1] - 10.02.2024

Fixed

  • Removed empty DebugDrawer draw calls in case of no primitive submitted.
  • Server world missed the animation injection system group.
  • Some memory leaks during baking.

Added

  • Duplicated bone names checker during baking.

Changed

  • AnimationStream bone hierarchy recalculation rework. There is no need for RebuildOutdatedBonePoses explicit calls anymore. All dependent bones will be recalculated automatically during Get calls. AnimationStream is derived from an IDisposable interface now, and disposal is required after its usage.

[1.5.0] - 01.02.2024

Fixed

  • The BoneTransform.Inverse function worked incorrectly with respect to scale.
  • User curves were parsed incorrectly in humanoid animation clips.

Added

  • Animation modification injection point represented by RukhankaAnimationInjectionSystemGroup.
  • AnimationStream structure to simplify working with animation data.
  • Several inverse kinematics algorithms:
    • Aim.
    • Override transform.
    • Forward And Backward Reaching Inverse Kinematics (FABRIK).
    • Two Bone.
  • Animation events.
  • Animator controller events.
  • The debug bone renderer was extended to be able to draw various primitive geometry (lines, triangles, cones, cubes, etc.) and moved to separate DebugDrawer assembly. It is independent from other Rukhanka assemblies and can be used as a standalone library.
  • Two new samples: Events and IK.

Changed

  • The package's internal name has been changed to com.rukhanka.animation.
  • Bone stripping functionality has an additional Automatic mode now.
  • The RukhankaDebugConfiguration new options to log all animation and animator controller events.
  • Multiple bone visualization systems can run. This is useful to display skeletons in multiple worlds (particularly when using NetCode).

[1.4.2] - 15.12.2023

Fixed

  • The last syncpoint of AnimationProcessSystem job has been removed by moving all frame initialization code into a separate job.
  • Fixed incorrect excessive internal hash map capacity setting.
  • Fixed memory leaks during blob creation in several baking systems.
  • Internal perfect hash tables gain better validation. This change fixes rare creation errors from valid data.
  • Correct handling of inexistent conditions during state machine baking.
  • Fixed enter transition->exit transition sequence that appeared in one frame.
  • Fixed warning of implicit usage of ToNativeArray() call.
  • The transition offset were measured in normalized time. It is correctly in seconds now.

Added

  • Sub-state machine transitions was implemented.

Changed

  • Animator parameter usage documentation has been changed to emphasize AnimatorParametersAspect as the preferred runtime interface to parameters data.

[1.4.1] - 06.10.2023

Changed

  • All runtime systems TempJob allocations was changed to WorldUpdateAllocator.
  • Code cleanup with more extensive SystemAPI usage.
  • Moving shared utility code into separate Rukhanka.Toolbox assembly.

Fixed

  • Incorrect root bone indexing for humanoid rigs.
  • Incorrect non-root motion of humanoid rig hips.

[1.4.0] - 28.09.2023

Fixed

  • Several memory leaks during baking and runtime.
  • Incorrect additive animation calculation for humanoid animations.

Added

  • Two new sample scenes: Ragdoll and Simple Physics.
  • Animation keyframe binary search was implemented.
  • Rukhanka can now work with unparented bone entities. This allows to properly handle physics body bone attachments.
  • Unneeded bone entity stripping functionality. Refer to documentation for the detailed description.
  • Internal bone animation data is now exposed as a RuntimeAnimationData singleton.
  • Full root motion support for Humanoid and Generic rigs. All root motion animation configuration parameters are supported.
  • Rukhanka now requires UNITY_BURST_EXPERIMENTAL_ATOMIC_INTRINSICS script compilation symbol. It will be added to project scripting define symbols automatically if not present.

Changed

  • Updated Entities dependency to version 1.0.16.
  • Removed synchronization point related to AnimationToProcess buffer filling.
  • Removed synchronization point related to root motion delta states processing.
  • The animation process system is split into two distinct parts: animation calculation and animation application. This allows to injection of animation results post-processing and modifications (for example IK) functionality.
  • Runtime created bone-name-to-index hash map was removed. It has been replaced with a blob perfect hash map created during baking time.
  • Samples were moved to the samples tab of package properties. There are shared HDRP/URP sample scenes now. Materials and scene properties will adapt to the current renderer pipeline automatically.
  • Animation controller layer weight is a runtime property of AnimatorControllerLayerComponent now.

[1.3.1] - 11.08.2023

Fixed

  • Fixed compilation errors during standalone builds creation.

[1.3.0] - 10.08.2023

Added

  • Humanoid-type support for models and animations.
  • Humanoid avatar mask support.
  • Humanoid avatars and animations sample scene.

Changed

  • The rig definition authoring script now contains zero configuration fields. The avatar mask used for rig definition is not needed anymore. All required information Rukhanka reads from Unity Avatar. This is a breaking change. Please carefully read the upgrade process.

Fixed

  • AnimatorControllerParameterComponent buffer did not replicate with NetCode.

[1.2.1] - 20.06.2023

Fixed

  • Fixed compilation errors during standalone builds creation.

[1.2.0] - 14.06.2023

Added

  • Compute deformation node for Amplify Shader Editor. Now it is possible to make Entities.Graphics deformation-compatible shaders with this tool.
  • Trigger set API for AnimatorParametersAspect.
  • The animator parameter access performance tests.
  • Own entity command buffer system for optimizing ECB usage after AnimationControllerSystem.
  • AnimatorStateQuery aspect for access to runtime animator data.

Changed

  • Animator parameter internal hash code representation was moved from Hash128 to uint. This leads to a smaller AnimatorControllerParameterComponent size and better chunk utilization.

Fixed

  • The state machine states without an assigned motion field had incorrect weight calculations.
  • Exit and enter transition events that happened in the same frame lead to one incorrectly processed frame. This was clearly observable with transitions from/to "no-motion" states.
  • Trigger parameters were reset even if the transition cumulative condition (all conditions must be true) is not met.
  • Entering through the sub-state machine's Enter state was handled incorrectly.
  • Exiting from nested sub-state machines using the Exit state was handled incorrectly.
  • Multiple transitions from the Enter state machine state were handled incorrectly.

[1.1.0] - 30.05.2023

Added

  • Unity Netcode for Entities package support. Animations and controllers can be synchronized using interpolated and predicted modes.
  • New Netcode Demo sample with Rukhanka and Netcode for Entities collaboration showcase.
  • Animator parameter aspect to simplify animator controller parameter data manipulation.

Changed

  • Minimum Entities and Entities.Graphics packages version is 1.0.10.

Fixed

  • State machine transitions with exit time 0 were handled incorrectly.
  • Transitions with exit time 1 are looped contrary to Unity documentation. Rukhanka behavior changed to match Mecanim in this aspect.
  • Various deprecated API usage warnings.

[1.0.3] - 06.05.2023

Added

  • Adding authoring Unity.Animator and all used Unity.Animation in the baker dependency list.
  • Extended animator controller logging with RUKHANKA_DEBUG_INFO which displays all states parameters and transitions of baked state machines.

Fixed

  • Incorrect handling of very small transition exit time during state loops.
  • Preventing NANs (division by zero) when transition duration is zero.
  • Memory allocation error in PerfectHash tests.
  • Controller parameters order in authoring animator does not coincide with generated AnimatorControllerParameter buffer.
  • Empty animations to process buffer were handled incorrectly.
  • Exit states of state machines are now handled properly.
  • Animator state Cycle Offset treated as animation normalized time offset as in Unity.Animator.

[1.0.2] - 28.03.2023

Fixed

  • Entities 1.0.0-pre.65 and Entities.Graphics 1.0.0-pre.65 support.

[1.0.1] - 19.02.2023

Added

  • IEnableableComponent interface for AnimatorControllerLayerComponent and RigDefinitionComponent.
  • Decsription of main Rukhanka entity components.

Changed

  • Crowd and Stress Test samples now have control for skeleton visualization enabling (with RUKHANKA_DEBUG_INFO defined).
  • Crowd and Stress Test samples now show total number of animated bones in scene.

Fixed

  • Incorrect handling handling of uniform scale in animations.

[1.0.0] - 10.02.2023