10-13-2019 12:40 AM
10-15-2019 02:06 PM
10-15-2019 03:36 PM
10-15-2019 03:57 PM
using UnityEngine;
public class HandTracker : MonoBehaviour
{
[SerializeField]
OVRCameraRig cameraRig;
[SerializeField]
Transform leftHandTransform;
[SerializeField]
Transform rightHandTransform;
void Start()
{
cameraRig.UpdatedAnchors += OnUpdatedAnchors;
}
private void OnDestroy()
{
cameraRig.UpdatedAnchors -= OnUpdatedAnchors;
}
private void OnUpdatedAnchors(OVRCameraRig rig)
{
leftHandTransform.SetPositionAndRotation(rig.leftHandAnchor.position, rig.leftHandAnchor.rotation);
rightHandTransform.SetPositionAndRotation(rig.rightHandAnchor.position, rig.rightHandAnchor.rotation);
}
}
10-15-2019 03:59 PM
10-15-2019 05:42 PM
10-15-2019 06:34 PM
// Add this
if (rig == null)
{
rig = OVRManager.instance.GetComponent<OVRCameraRig>();
}
// End add this
protected virtual void Awake()
{
m_anchorOffsetPosition = transform.localPosition;
m_anchorOffsetRotation = transform.localRotation;
// If we are being used with an OVRCameraRig, let it drive input updates, which may come from Update or FixedUpdate.
// FIXME: HEY OCULUS THIS IS A DUMB AND HACKY WAY TO FIND THE OVRCameraRig!!!!!!!
OVRCameraRig rig = null;
if (transform.parent != null && transform.parent.parent != null)
rig = transform.parent.parent.GetComponent<OVRCameraRig>();
// Add this
if (rig == null)
{
Debug.Log("Trying one last time to find the OVRCameraRig.");
rig = OVRManager.instance.GetComponent<OVRCameraRig>();
}
// End add this
if (rig != null)
{
Debug.Log("Success! Found the OVRCameraRig");
rig.UpdatedAnchors += (r) => { OnUpdatedAnchors(); };
operatingWithoutOVRCameraRig = false;
}
else
{
Debug.LogWarning("Couldn't find the OVRCameraRig. There will be hand jitter.");
}
}
10-16-2019 05:25 AM
02-18-2020 08:40 PM
02-25-2020 04:13 AM