public void init() { IntrinsicsParameters parameters = load(); if (applyIntrinsics(parameters)) { this.state = ServiceStatus.WORKING; } else { this.state = ServiceStatus.CONNECTED; } }
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); }