コード例 #1
0
        public MouseBasedFaceTracker()
        {
            _facePose = SRDFaceTracker.CreateDefaultFacePose();
            _focus    = Utils.SRDSettings.DeviceInfo.BodyBounds.Center;

            var dispCenterPose = new Pose(Utils.SRDSettings.DeviceInfo.BodyBounds.Center, Quaternion.Euler(-45f, 180f, 0f));

            _posTrackCoordTdispCenerCoord = SRDHelper.PoseToMatrix(dispCenterPose);
            _dispCenerCoordTposTrackCoord = SRDHelper.PoseToMatrix(SRDHelper.InvPose(dispCenterPose));
        }
コード例 #2
0
        public static FacePose CreateDefaultFacePose()
        {
            var facePose = new FacePose();

            facePose.HeadPose.position = new Vector3(0f, 0.2f, -0.3f);

            var dispCenter = Utils.SRDSettings.DeviceInfo.BodyBounds.Center;
            var forward    = dispCenter - facePose.HeadPose.position;
            var up         = Vector3.Cross(Vector3.right, forward);

            facePose.HeadPose.rotation = Quaternion.LookRotation(forward, up);

            facePose.UpdateWithNewHeadPose(facePose.HeadPose, dispCenter);
            return(facePose);
        }
コード例 #3
0
        public SrdXrResult GetCurrentFacePose(out FacePose facePose)
        {
            facePose = (_prevFacePose != null) ? _prevFacePose : SRDFaceTracker.CreateDefaultFacePose().GetTransformedBy(_currentOrigin);

            var headPose = facePose.HeadPose;
            var eyePoseL = facePose.EyePoseL;
            var eyePoseR = facePose.EyePoseR;
            var xrResult = SRDCorePlugin.GetFacePose(SRDSessionHandler.SessionHandle,
                                                     out headPose, out eyePoseL, out eyePoseR);

            facePose = (new FacePose(headPose, eyePoseL, eyePoseR)).GetTransformedBy(_currentOrigin);
            if (xrResult == SrdXrResult.ERROR_HANDLE_INVALID || xrResult == SrdXrResult.ERROR_SESSION_NOT_RUNNING)
            {
                facePose = SRDFaceTracker.CreateDefaultFacePose().GetTransformedBy(_currentOrigin);
            }
            _prevFacePose = facePose;
            return(xrResult);
        }
コード例 #4
0
        public SRDEyeViewRenderer()
        {
            _eyeTransform = new Dictionary <EyeType, Transform>();
            _eyeCamera    = new Dictionary <EyeType, Camera>();
            //_eyeCamRenderTexture = new Dictionary<EyeType, RenderTexture>();
            _eyeCamRenderTextureCache = new Dictionary <EyeType, RenderTexture>();
            _eyeCamMaterial           = new Dictionary <EyeType, Material>();

            _eyeTypes = new List <EyeType>()
            {
                EyeType.Left, EyeType.Right
            };
            _isSRPUsed = (GraphicsSettings.renderPipelineAsset != null);

            _currentFacePose     = SRDFaceTracker.CreateDefaultFacePose();
            _currentProjMatrices = SRDFaceTracker.CreateDefaultProjMatrices();

            var width  = SRDSettings.DeviceInfo.ScreenRect.Width;
            var height = SRDSettings.DeviceInfo.ScreenRect.Height;

            foreach (var type in _eyeTypes)
            {
                // RenderTarget
                //var outrt = new RenderTexture(width, height, RenderTextureDepth, RenderTextureFormat.ARGB32);
                //outrt.name = SRDHelper.SRDConstants.EyeCamRenderTexDefaultName + SRDHelper.EyeSideName[type] + "_Temp";
                //outrt.Create();
                //_eyeCamRenderTexture.Add(type, outrt);
                var camrt = new RenderTexture(width, height, RenderTextureDepth, RenderTextureFormat.ARGB32,
                                              (QualitySettings.desiredColorSpace == ColorSpace.Linear) ? RenderTextureReadWrite.Linear : RenderTextureReadWrite.Default);
                camrt.name = SRDHelper.SRDConstants.EyeCamRenderTexDefaultName + SRDHelper.EyeSideName[type];
                camrt.Create();
                _eyeCamRenderTextureCache.Add(type, camrt);

                var homographyMaterial = new Material(Shader.Find("uHomography/Homography"));
                homographyMaterial.hideFlags = HideFlags.HideAndDontSave;
                _eyeCamMaterial[type]        = homographyMaterial;
            }
        }
コード例 #5
0
 public SrdXrResult GetCurrentFacePose(out FacePose facePose)
 {
     facePose = _facePose.GetTransformedBy(_currentOrigin);
     return(SrdXrResult.SUCCESS);
 }