コード例 #1
0
ファイル: HmdDevice.cs プロジェクト: oggy83/OculusWalkerDemo
        public Matrix GetHeadMatrix()
        {
            LibOVR.ovrPosef eyePose = m_tmpEyePoses[0];

            // Posef is a right-hand system, so we convert to left-hand system
            var q = new Quaternion(eyePose.Orientation.x, eyePose.Orientation.y, -eyePose.Orientation.z, eyePose.Orientation.w);
            var M = Matrix.RotationQuaternion(q);

            return(M);
        }
コード例 #2
0
ファイル: HmdDevice.cs プロジェクト: oggy83/OculusWalkerDemo
        public DrawSystem.CameraData[] GetEyePoses()
        {
            var result = new DrawSystem.CameraData[2];

            for (int eyeIndex = 0; eyeIndex < 2; ++eyeIndex)
            {
                LibOVR.ovrPosef eyePose = m_tmpEyePoses[eyeIndex];

                // Posef is a right-hand system, so we convert to left-hand system
                var q = new Quaternion(-eyePose.Orientation.x, -eyePose.Orientation.y, eyePose.Orientation.z, eyePose.Orientation.w);
                var v = new Vector3(eyePose.Position.x, eyePose.Position.y, -eyePose.Position.z);

                var forward = Vector3.Transform(Vector3.ForwardLH, q);
                var up      = Vector3.Transform(Vector3.Up, q);

                result[eyeIndex] = new DrawSystem.CameraData(v, v + forward, up);
            }

            return(result);
        }