Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
139 stars 2 forks source link

FingerPoseLerp used with a FingerPoseStreamManager is breaking the HandPoser causing an exception. #2964

Closed ModernBalloonie closed 1 month ago

ModernBalloonie commented 1 month ago

Describe the bug?

I was trying to lerp between a FingerPoseStreamManager and a FingerPosePreset, and for some reason it was disabling the HandPoser, so I tried to enable the HandPoser, but it then disables the FingerPoseLerp.

To Reproduce

Lerp between a FingerPoseStreamManager and a FingerPosePreset. You will see that it can cause both components to disable.

Expected behavior

For the components to not disable.

Screenshots

https://github.com/user-attachments/assets/6452181e-5489-4256-8b37-288918c3564a

Resonite Version Number

Beta 2024.9.13.672

What Platforms does this occur on?

Windows

What headset if any do you use?

Desktop,Quest Pro

Log Files

DESKTOP-QBGCSAQ - 2024.9.13.672 - 2024-09-15 15_51_13.log

Additional Context

I think Froox encountered this same bug in the resonite recap stream that happened recently too.

Reporters

ModernBalloonie

ModernBalloonie commented 1 month ago

image It also happens with FingerPoseModifier too. It seems it has to do with the FingerPoseStreamManager breaking things.

ModernBalloonie commented 1 month ago

Here's a resonite package that can be used to reproduce the bug by the way, Finger Pose Bug.zip

shiftyscales commented 1 month ago

Had a peek into the provided log file- it seems there are a few potentially relevant exceptions starting from line 3536.

3:56:27 PM.945 (165 FPS)    Exception updating poses on Element: ID4861C00, Type: FrooxEngine.FingerPoseLerp, World: ModernBalloonie World, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: True
Element: ID937C00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.Foot - Child, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID937100, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.Foot, T: [1.03543E-10; 0.3229896; -1.779125E-08], R: [-0.5511008; 0.004731944; 0.001974137; 0.8344231], S: [1; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: ID934500, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.LowerLegHuman, T: [-1.103448E-09; 0.2323251; 1.417723E-09], R: [9.067791E-08; -7.655935E-08; -3.72286E-08; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID932F00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.UpperLeg, T: [-0.06269258; -0.0564165; 0.002032051], R: [0.9993753; -0.0001646175; 8.384018E-08; -0.03534255], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID931900, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Hips, T: [0.001134971; -0.03785735; 0.6472608], R: [0.7067231; 0.00390761; 0.003284561; 0.7074718], S: [0.9999999; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: ID930E00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Armature, T: [0; 0; 0], R: [-0.7071068; 0; 0; 0.7071068], S: [100; 100; 100], ActiveSelf: True, IsDestroyed: False
Element: ID930300, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: RootNode, T: [-1.587412E-05; -4.226277E-08; -0.01788814], R: [0; -1.136951E-15; 0; 1], S: [1.8; 1.8; 1.8], ActiveSelf: True, IsDestroyed: False
Element: ID92ED00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: CenteredRoot, T: [-19.73297; 0; -2.589543], R: [-3.907297E-07; -0.580942; -3.653384E-06; -0.8139451], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID904200, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: ModernFYinglet.fbx, T: [0; 0; 0], R: [0; 0; 0; 1], S: [0.00873769; 0.00873769; 0.00873769], ActiveSelf: True, IsDestroyed: False
Element: ID76400, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: User <noparse=15>ModernBalloonie (ID2E00), T: [0.3687985; -0.06334376; 0.4330697], R: [0; 0.01157486; 0; 0.9999331], S: [0.6; 0.6; 0.6], ActiveSelf: True, IsDestroyed: False
Element: ID2300, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: ModernBalloonie World, IsRemoved: False

System.ArgumentException: Invalid number of poses. Positions: 0, Rotations: 24, Expected: 24
  at FrooxEngine.FingerPoseHelper.CheckArguments (System.Collections.Generic.List`1[T] positions, System.Collections.Generic.List`1[T] rotations) [0x0003b] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.FingerPoseHelper.TransformPosesToHierarchy (System.Collections.Generic.List`1[T] positions, System.Collections.Generic.List`1[T] rotations) [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.FingerPoseLerp.ComputeData (FrooxEngine.Chirality side, FrooxEngine.IFingerPoseSource a, FrooxEngine.IFingerPoseSource b, System.Collections.Generic.List`1[T] aPositions, System.Collections.Generic.List`1[T] aRotations, System.Collections.Generic.List`1[T] bPositions, System.Collections.Generic.List`1[T] bRotations) [0x0003b] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.FingerPoseLerp.UpdatePoses () [0x0009f] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.FingerPoseProcessor.EnsureUpdatedData () [0x00025] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 

  at System.Environment.get_StackTrace () [0x00000] in <9577ac7a62ef43179789031239ba8798>:0 
  at Elements.Core.UniLog.Error (System.String message, System.Boolean stackTrace) [0x00000] in <9555aed94d8841e38fa1f2f558b95641>:0 
  at FrooxEngine.FingerPoseProcessor.EnsureUpdatedData () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.FingerPoseProcessor.AreFingersTracking (FrooxEngine.Chirality chirality) [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.HandPoser.OnCommonUpdate () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.ComponentBase`1[C].InternalRunUpdate () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.UpdateManager.RunUpdates () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.World.RefreshStep () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.World.Refresh () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.WorldManager.UpdateStep () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.WorldManager.RunUpdateLoop () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.Engine.UpdateStep () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.Engine.RunUpdateLoop () [0x00000] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at UnityFrooxEngineRunner.FrooxEngineRunner.UpdateFrooxEngine () [0x00000] in <579215a9836c4145b540c27cc1b63d27>:0 
  at UnityFrooxEngineRunner.FrooxEngineRunner.Update () [0x00000] in <579215a9836c4145b540c27cc1b63d27>:0 

and

3:56:27 PM.948 (165 FPS)    Exception when Updating object: Element: ID93B400, Type: FrooxEngine.HandPoser, World: ModernBalloonie World, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: True
Element: ID937C00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.Foot - Child, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID937100, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.Foot, T: [1.03543E-10; 0.3229896; -1.779125E-08], R: [-0.5511008; 0.004731944; 0.001974137; 0.8344231], S: [1; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: ID934500, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.LowerLegHuman, T: [-1.103448E-09; 0.2323251; 1.417723E-09], R: [9.067791E-08; -7.655935E-08; -3.72286E-08; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID932F00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.UpperLeg, T: [-0.06269258; -0.0564165; 0.002032051], R: [0.9993753; -0.0001646175; 8.384018E-08; -0.03534255], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID931900, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Hips, T: [0.001134971; -0.03785735; 0.6472608], R: [0.7067231; 0.00390761; 0.003284561; 0.7074718], S: [0.9999999; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: ID930E00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Armature, T: [0; 0; 0], R: [-0.7071068; 0; 0; 0.7071068], S: [100; 100; 100], ActiveSelf: True, IsDestroyed: False
Element: ID930300, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: RootNode, T: [-1.587412E-05; -4.226277E-08; -0.01788814], R: [0; -1.136951E-15; 0; 1], S: [1.8; 1.8; 1.8], ActiveSelf: True, IsDestroyed: False
Element: ID92ED00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: CenteredRoot, T: [-19.73297; 0; -2.589543], R: [-3.907297E-07; -0.580942; -3.653384E-06; -0.8139451], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID904200, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: ModernFYinglet.fbx, T: [0; 0; 0], R: [0; 0; 0; 1], S: [0.00873769; 0.00873769; 0.00873769], ActiveSelf: True, IsDestroyed: False
Element: ID76400, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: User <noparse=15>ModernBalloonie (ID2E00), T: [0.3687985; -0.06334376; 0.4330697], R: [0; 0.01157486; 0; 0.9999331], S: [0.6; 0.6; 0.6], ActiveSelf: True, IsDestroyed: False
Element: ID2300, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: ModernBalloonie World, IsRemoved: False

Exception:
System.Exception: Finger data has invalid number of elements for Left. Positions: 0, Rotations: 0, Expected: 24
LeftTracking: True, RightTracking: True, Metacarpals: False
On: Element: ID4861C00, Type: FrooxEngine.FingerPoseLerp, World: ModernBalloonie World, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: False
Element: ID937C00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.Foot - Child, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID937100, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.Foot, T: [1.03543E-10; 0.3229896; -1.779125E-08], R: [-0.5511008; 0.004731944; 0.001974137; 0.8344231], S: [1; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: ID934500, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.LowerLegHuman, T: [-1.103448E-09; 0.2323251; 1.417723E-09], R: [9.067791E-08; -7.655935E-08; -3.72286E-08; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID932F00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: L.UpperLeg, T: [-0.06269258; -0.0564165; 0.002032051], R: [0.9993753; -0.0001646175; 8.384018E-08; -0.03534255], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID931900, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Hips, T: [0.001134971; -0.03785735; 0.6472608], R: [0.7067231; 0.00390761; 0.003284561; 0.7074718], S: [0.9999999; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: ID930E00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Armature, T: [0; 0; 0], R: [-0.7071068; 0; 0; 0.7071068], S: [100; 100; 100], ActiveSelf: True, IsDestroyed: False
Element: ID930300, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: RootNode, T: [-1.587412E-05; -4.226277E-08; -0.01788814], R: [0; -1.136951E-15; 0; 1], S: [1.8; 1.8; 1.8], ActiveSelf: True, IsDestroyed: False
Element: ID92ED00, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: CenteredRoot, T: [-19.73297; 0; -2.589543], R: [-3.907297E-07; -0.580942; -3.653384E-06; -0.8139451], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID904200, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: ModernFYinglet.fbx, T: [0; 0; 0], R: [0; 0; 0; 1], S: [0.00873769; 0.00873769; 0.00873769], ActiveSelf: True, IsDestroyed: False
Element: ID76400, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: User <noparse=15>ModernBalloonie (ID2E00), T: [0.3687985; -0.06334376; 0.4330697], R: [0; 0.01157486; 0; 0.9999331], S: [0.6; 0.6; 0.6], ActiveSelf: True, IsDestroyed: False
Element: ID2300, Type: FrooxEngine.Slot, World: ModernBalloonie World, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: ModernBalloonie World, IsRemoved: False

  at FrooxEngine.FingerPoseProcessor.GetFingerData (FrooxEngine.Chirality chirality, System.Collections.Generic.List`1[T] positions, System.Collections.Generic.List`1[T] rotations) [0x00097] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.HandPoser.OnCommonUpdate () [0x00131] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.ComponentBase`1[C].InternalRunUpdate () [0x0001f] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 
  at FrooxEngine.UpdateManager.RunUpdates () [0x0007c] in <1eebf8ac462f4f8b977491e1d195d0e7>:0 

Seeking input from @Frooxius.

Frooxius commented 1 month ago

Should be fixed in 2024.10.4.923, thanks for report!