I'm using a trick for copying transforms in local space using Unity's constraints. (It is a part of VirtualLens2.)
The trick is not working with auto-conversion by the current beta.
Avatar: avtr_8b1b20d1-e94a-44ab-84c6-a8ef0fbd98c5
How the trick works
Its hierarchical structure is as follows:
+ WorldOrigin: Root object.
It is fixed to world space by a constraint.
+ Controller: Input pose. It is near the head in the demo.
+ Joint0
+ Leaf0
+ Joint1
+ Leaf1
+ SourceOrigin: Origin of input space.
It will be fixed to world space by "Lock Source".
+ TargetOrigin: Origin of output space.
It will be fixed to world space by "Lock Target".
+ Object: will be moved by this system.
It works by toggling between two states for every frame.
For (2n+0)-th frames:
  • Joint0: Copy transform of the SourceOrigin in world space by its Parent Constraint.
  • Joint0/Leaf0: Copy transform of the Controller in world space by its Parent Constraint.
For (2n+1)-th frames:
  • Joint0: Copy transform of the TargetOrigin in world space by its Position/Rotation Constraints.
  • Joint0/Leaf0: Keep local transform from the previous frame by disabling its constraints.
  • Object: Copy transform of Joint0/Leaf0 in world space.
We can use another Joint/Leaf pair (Joint1/Leaf1) for pipelining. Then, we can copy transform in local space with a single-frame delay.
Expected behavior
It works similarly to the live version (
w_2024.2.3p2-cd3e635c6e
).
Actual Behavior
The pose of
Object
is unstable. It seems that the processing order of the constraints is different from expectation.