I am finding I would like to pose say hand positions for a character in a Timeline when using the Sequences package. I am using a 3-level deep sequence timeline (I used Episode / Location / Shot for the 3 levels of hierarchy at the moment).
For example, I have a character, but I want to put their hand on the desk. I don’t want to hand animate every bone one by one - I would much prefer an IK solution.
I have tried Animation Rigging (1.1.1) with Sequences, but hit the following problems
- Its a runtime constraint system - you have to enter “play mode” to see the results. Flipping between edit and play mode with Sequences is painful (slow to change, you have to refocus the current sequence, etc - and if you have the timeline playing when you enter play mode, you have to turn that off).
- I read in forums that “record” mode will also make Animation Rigging work, so you can see the result. This might be true, but has not worked for me with the 2 bone constraint. I can record moving the hints around, but you cannot see the effect in preview mode or record mode.
- When I enter play mode, my character jumps back to 0,0,0 for some bizarre reason (I have “apply scene offsets” on for the track). So I cannot even tell if it will work in Play mode.
- As soon as I exit play mode, I get lots of Console exceptions thrown, I think due to m_RuntimeRigLayers being null.
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.Animations.Rigging.RigBuilder.BuildPreviewGraph (UnityEngine.Playables.PlayableGraph graph, UnityEngine.Playables.Playable inputPlayable) (at Library/PackageCache/com.unity.animation.rigging@1.1.1/Runtime/AnimationRig/RigBuilder.cs:197)
UnityEngine.Timeline.AnimationTrack.CreateMixerPlayableGraph (UnityEngine.Playables.PlayableGraph graph, UnityEngine.GameObject go, UnityEngine.Timeline.IntervalTree`1[T] tree) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/Animation/AnimationTrack.cs:644)
UnityEngine.Timeline.TrackAsset.CreatePlayableGraph (UnityEngine.Playables.PlayableGraph graph, UnityEngine.GameObject go, UnityEngine.Timeline.IntervalTree`1[T] tree, UnityEngine.Playables.Playable timelinePlayable) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/TrackAsset.cs:774)
UnityEngine.Timeline.TimelinePlayable.CreateTrackPlayable (UnityEngine.Playables.PlayableGraph graph, UnityEngine.Playables.Playable timelinePlayable, UnityEngine.Timeline.TrackAsset track, UnityEngine.GameObject go, System.Boolean createOutputs) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/TimelinePlayable.cs:202)
UnityEngine.Timeline.TimelinePlayable.CompileTrackList (UnityEngine.Playables.PlayableGraph graph, UnityEngine.Playables.Playable timelinePlayable, System.Collections.Generic.IEnumerable`1[T] tracks, UnityEngine.GameObject go, System.Boolean createOutputs) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/TimelinePlayable.cs:135)
UnityEngine.Timeline.TimelinePlayable.Compile (UnityEngine.Playables.PlayableGraph graph, UnityEngine.Playables.Playable timelinePlayable, System.Collections.Generic.IEnumerable`1[T] tracks, UnityEngine.GameObject go, System.Boolean autoRebalance, System.Boolean createOutputs) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/TimelinePlayable.cs:115)
UnityEngine.Timeline.TimelinePlayable.Create (UnityEngine.Playables.PlayableGraph graph, System.Collections.Generic.IEnumerable`1[T] tracks, UnityEngine.GameObject go, System.Boolean autoRebalance, System.Boolean createOutputs) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/TimelinePlayable.cs:86)
UnityEngine.Timeline.TimelineAsset.CreatePlayable (UnityEngine.Playables.PlayableGraph graph, UnityEngine.GameObject go) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/TimelineAsset.cs:409)
UnityEngine.Playables.PlayableAsset.Internal_CreatePlayable (UnityEngine.Playables.PlayableAsset asset, UnityEngine.Playables.PlayableGraph graph, UnityEngine.GameObject go, System.IntPtr ptr) (at <034e42dfc48f4911988983b3b27bcd25>:0)
UnityEngine.Timeline.DirectorControlPlayable:ProcessFrame(Playable, FrameData, Object) (at Library/PackageCache/com.unity.timeline@1.6.1/Runtime/Playables/DirectorControlPlayable.cs:123)
Is there a better way to IK pose characters in a Timeline without going into Play mode? Ideally in an Override track. I mean Animation Rigging seems like the right functionality - I just want it to work in Edit / Preview etc so I can use it with Sequences and Timelines and see the results immediately.
Play mode of loses most changes when you exit play mode, so being in play mode when authoring acting etc is not ideal. (Hmm, next hack experiment might be to put [ExecuteEverywhere] on Animation Rigging stuff and see if I can just make it do constraints in Edit mode as well!!!