Forum Discussion
paperli
5 years agoHonored Guest
Skeleton physical colliders pose not updated during hand tracking
I run the HandsInteractionTrainScene in Quest with Unity, and find that the skeleton physical colliders are not updated with hand tracking pose. I only turn on the Render Physics Capsules and allow Hand Tracking Support in OVRCameraRig. Does anyone know what's going on?
You can see the footage in the attached zip file.
You can see the footage in the attached zip file.
- I found a fix. Change below lines in OVRSkeleton.cs,
to this:if (capsuleGO.activeSelf)
{
capsule.CapsuleRigidbody.MovePosition(bone.position);
capsule.CapsuleRigidbody.MovePosition(bone.rotation);
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.position = bone.position;
capsule.CapsuleRigidbody.rotation = bone.rotation;}
Looks like assigning position and rotation to the rigid body doesn’t work at all.if (capsuleGO.activeSelf)
{
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
}
Since the OVRSkeleton is the part of sdk, it will be better if Oculus fixes it in its Oculus Integration package.
7 Replies
Replies have been turned off for this discussion
- raytsang1120ExplorerI have a better solution, please feel free to try it
if (capsuleGO.activeSelf)
{capsuleGO.SetActive(false); //Raymond Tsang debug @ 2020-02-14capsuleGO.SetActive(true); //Raymond Tsang debug @ 2020-02-14capsule.CapsuleRigidbody.MovePosition(bone.position);
capsule.CapsuleRigidbody.MovePosition(bone.rotation);
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
} - raytsang1120Explorer
paperli said:
I found a fix. Change below lines in OVRSkeleton.cs,
to this:if (capsuleGO.activeSelf)
{
capsule.CapsuleRigidbody.MovePosition(bone.position);
capsule.CapsuleRigidbody.MovePosition(bone.rotation);
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.position = bone.position;
capsule.CapsuleRigidbody.rotation = bone.rotation;}
Looks like assigning position and rotation to the rigid body doesn’t work at all.if (capsuleGO.activeSelf)
{
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
}
Since the OVRSkeleton is the part of sdk, it will be better if Oculus fixes it in its Oculus Integration package.I have a better solution here, please feel free to tryif (capsuleGO.activeSelf)
{capsuleGO.SetActive(false); //Raymond Tsang debug @ 2020-02-14capsuleGO.SetActive(true); //Raymond Tsang debug @ 2020-02-14capsule.CapsuleRigidbody.MovePosition(bone.position);
capsule.CapsuleRigidbody.MovePosition(bone.rotation);
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
} - AnonymousThis fixes a similar problem I was having, thank you!!In my situation I created a spaceship with a control touchscreen console for navigation. Those buttons would then add a force to the spaceships rigidbody. This was causing the capsule colliders on the skeleton to move off of the hand. I've been trying to fix this for awhile. Thanks again!!
- paperliHonored GuestI found a fix. Change below lines in OVRSkeleton.cs,
to this:if (capsuleGO.activeSelf)
{
capsule.CapsuleRigidbody.MovePosition(bone.position);
capsule.CapsuleRigidbody.MovePosition(bone.rotation);
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.position = bone.position;
capsule.CapsuleRigidbody.rotation = bone.rotation;}
Looks like assigning position and rotation to the rigid body doesn’t work at all.if (capsuleGO.activeSelf)
{
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
}
else
{
capsuleGO.SetActive(true);
capsule.CapsuleRigidbody.gameObject.transform.position = bone.position;
capsule.CapsuleRigidbody.gameObject.transform.rotation = bone.rotation;
}
Since the OVRSkeleton is the part of sdk, it will be better if Oculus fixes it in its Oculus Integration package.- Hassan_KProtege
We're also exploring a built-in solution in case that helps anyone looking in the future: https://communityforums.atmeta.com/t5/Quest-Development/Hand-physics-Capsules-not-following-the-fingers/td-p/814918/page/2
- ComisarulSefHonored Guest
Thanks a lot, this was a big help 😁
- lesh6Honored Guest
OMG you saved me countless hours of debugging, thank you!!!
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 10 months ago
- 11 months ago
- 4 years ago