12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
-
- namespace NRKernal.Experimental
- {
- using System;
- using UnityEngine;
- using System.Runtime.InteropServices;
-
- public static class NativeHeadTrackingExtension
- {
-
-
-
-
-
- public static NativeResult GetEyePose(this NativeHeadTracking headTracking, ref Pose outLeftEyePose, ref Pose outRightEyePose)
- {
- NativeMat4f lefteyepos = new NativeMat4f(Matrix4x4.identity);
- NativeMat4f righteyepos = new NativeMat4f(Matrix4x4.identity);
- NativeResult result = NativeApi.NRHeadTrackingGetEyePose(headTracking.TrackingHandle, headTracking.HeadTrackingHandle, ref lefteyepos, ref righteyepos);
- if (result == NativeResult.Success)
- {
- ConversionUtility.ApiPoseToUnityPose(lefteyepos, out outLeftEyePose);
- ConversionUtility.ApiPoseToUnityPose(righteyepos, out outRightEyePose);
- }
- NRDebugger.Info("[NativeHeadTracking] GetEyePose :" + result);
- return result;
- }
-
-
-
-
-
- public static bool GetProjectionMatrix(this NativeHeadTracking headTracking, ref Matrix4x4 outLeftProjectionMatrix, ref Matrix4x4 outRightProjectionMatrix)
- {
- NativeMat4f projectmatrix = new NativeMat4f(Matrix4x4.identity);
- NativeResult result_left = NativeApi.NRInternalGetProjectionMatrix((int)NativeDevice.LEFT_DISPLAY, ref projectmatrix);
- outLeftProjectionMatrix = projectmatrix.ToUnityMat4f();
- NativeResult result_right = NativeApi.NRInternalGetProjectionMatrix((int)NativeDevice.RIGHT_DISPLAY, ref projectmatrix);
- outRightProjectionMatrix = projectmatrix.ToUnityMat4f();
- return (result_left == NativeResult.Success && result_right == NativeResult.Success);
- }
-
- private struct NativeApi
- {
-
-
-
-
-
-
- [DllImport(NativeConstants.NRNativeLibrary)]
- public static extern NativeResult NRHeadTrackingGetEyePose(UInt64 session_handle, UInt64 head_tracking_handle, ref NativeMat4f left_eye, ref NativeMat4f right_eye);
-
-
-
-
- [DllImport(NativeConstants.NRNativeLibrary)]
- public static extern NativeResult NRInternalGetProjectionMatrix(int index, ref NativeMat4f eye);
- };
- }
- }
|