com.unity.animation 0.3.0-preview.9

com.unity.animation

Notes: processedReleased March 27, 2020

Browse versions

PreviousNext

Unity Compatibility

Minimum Unity: 2019.3 (0f1)

Features

  • Added `SkinnedMeshRendererConversion` system that automatically convert any `SkinnedMeshRenderer` component if a `RigComponent` exists on this GameObject or on any of his parents up to the root GameObject.
  • Added `NotSupportedTransformHandle` for animation systems that do not support reading from or writing to exposed transforms like the default `PreAnimationGraphSystem`
  • Added a `BindingHashDelegate` to override hashing strategy of bindings when converting clips and rig definitions. Notably the following functions have changed signature:
  • - `Unity.Animation.ClipBuilder.AnimationClipToDenseClip(AnimationClip sourceClip, BindingHashDelegate bindingHash = null)`
  • - `Unity.Animation.Hybrid.RigGenerator.ExtractSkeletonNodesFromTransforms(Transform root, Transform[] transforms, BindingHashDelegate bindingHash = null)`
  • - `Unity.Animation.Hybrid.RigGenerator.ExtractSkeletonNodesFromGameObject(GameObject root, BindingHashDelegate bindingHash = null)`
  • - `Unity.Animation.Hybrid.RigGenerator.ExtractSkeletonNodesFromRigComponent(RigComponent rigComponent, BindingHashDelegate bindingHash = null)`
  • - `Unity.Animation.Hybrid.RigGenerator.ExtractAnimationChannelFromRigComponent(RigComponent rigComponent, BindingHashDelegate bindingHash = null)`
  • - When no `BindingHashDelegate` is specified, the `Unity.Animation.BindingHashUtils.DefaultBindingHash` is used. The `Unity.Animation.BindingHashUtils.DefaultBindingHash` defaults to `Unity.Animation.BindingHashUtils.HashFullPath`. If your pipeline wants to create bindings based on names rather than the full path, `Unity.Animation.BindingHashUtils.HashName` could be employed.
  • Added support for LocalToRoot space remapping and two new helpers to streamline the process of creating a `RigRemapTable`:
  • - `Unity.Animation.RigRemapUtils.CreateRemapTable(BlobAssetReference src, BlobAssetReference dst, OffsetOverrides offsetOverides = null)`: Given a source and destination `RigDefinition` this function creates a remap table based on matching bindings. By default all matches are mapped in LocalToParent space but this can be overriden using the `Unity.Animation.RigRemapUtils.OffsetOverrides`.
  • - `Unity.Animation.Hybrid.RigRemapUtils.CreateRemapTable(RigComponent src, RigComponent dst, OffsetOverrides offsetOverrides = null, BindingHashDelegate bindingHash = null)`: Given a source and destination `RigComponent` this function creates a remap table based on matching ids. A `BindingHashDelegate` can be specified in order to match using either the transform path [`BindingHashUtils.HashFullPath`], the transform name [`BindingHashUtils.HashName`] or a custom delegate. When no binding hash deletegate is specified, the system wide `BindingHashUtils.DefaultBindingHash` is used. By default, LocalToParent mapping is performed, however `Unity.Animation.RigRemapUtils.OffsetOverrides` can be specified to remap in LocalToRoot space and/or add translation/rotation offsets.
  • - Note that remapping in LocalToRoot space has a performance cost and should be used with care.
  • - LocalToRoot space in the `RigRemapTable` changes format. **All previous `RigRemapTable` BlobAssetReferences or usage of these in SubScenes need to be regenerated**.

📈 Improvements

  • Removed `PreAnimationGraphWriteTransformHandle` MonoBehaviour since default system definition does not support this operation.
  • Upgraded com.unity.dataflowgraph to 0.13.0-preview.2

🔧 Bug Fixes

  • Undeprecated `RigComputeMatricesSystem`, it's still necessary for pipelines to have a well defined sync point in order for all rig buffers to be up-to-date.
  • Fixed AnimationSystemBase to be reactive to component data instead of previous `AnimationSystemOperation` flags. The `WriteTransformComponentJob` computes `AnimatedLocalToWorld` only for the required rig.
  • Fixed NullReferenceException when using Menu option `Animation/Rig/Setup Rig Transforms` for the first setup.
  • ### Deprecated
  • Deprecated `SkinnedMesh` and `SkinnedMeshConversion` system to reduce setup complexity. You no longer need to add the `SkinnedMesh` component on the same GameObject than your `SkinnedMeshRenderer` to convert it. see `SkinnedMeshRendererConversion`