예제 #1
0
        public void init()
        {
            IntrinsicsParameters parameters = load();

            if (applyIntrinsics(parameters))
            {
                this.state = ServiceStatus.WORKING;
            }
            else
            {
                this.state = ServiceStatus.CONNECTED;
            }
        }
예제 #2
0
        public bool applyIntrinsics(IntrinsicsParameters intrinsics)
        {
            if (intrinsics == null)
            {
                return(false);
            }
            float near = targetCamera.nearClipPlane;
            float far  = targetCamera.farClipPlane;

            Matrix4x4 projectionMatrix = new Matrix4x4();
            Vector4   row0             = new Vector4((2f * intrinsics.fx / intrinsics.width), 0f, -((float)intrinsics.cx / (float)intrinsics.width * 2f - 1f), 0f);
            Vector4   row1             = new Vector4(0f, 2f * intrinsics.fy / intrinsics.height, -((float)intrinsics.cy / (float)intrinsics.height * 2f - 1f), 0f);
            Vector4   row2             = new Vector4(0, 0, -(far + near) / (far - near), -near * (1 + (far + near) / (far - near)));
            Vector4   row3             = new Vector4(0, 0, -1, 0);

            projectionMatrix.SetRow(0, row0);
            projectionMatrix.SetRow(1, row1);
            projectionMatrix.SetRow(2, row2);
            projectionMatrix.SetRow(3, row3);
            targetCamera.projectionMatrix = projectionMatrix;

            return(true);
        }