public void OnTangoServiceConnected()
{
// Set up the size of ARScreen based on camera intrinsics.
TangoCameraIntrinsics intrinsics = new TangoCameraIntrinsics();
VideoOverlayProvider.GetIntrinsics(TangoEnums.TangoCameraId.TANGO_CAMERA_COLOR, intrinsics);
if (intrinsics.width != 0 && intrinsics.height != 0)
{
Camera camera = GetComponent<Camera>();
if (camera != null)
{
// If this script is attached to a camera, then the camera is an Augmented Reality camera. The color
// camera image then must fill the viewport. That means we must clip the color camera image to make
// its ratio the same as the Unity camera. If we don't do this the color camera image will be
// stretched non-uniformly, making a circle into an ellipse.
float widthRatio = (float)camera.pixelWidth / (float)intrinsics.width;
float heightRatio = (float)camera.pixelHeight / (float)intrinsics.height;
if (widthRatio >= heightRatio)
{
m_uOffset = 0;
m_vOffset = (1 - (heightRatio / widthRatio)) / 2;
}
else
{
m_uOffset = (1 - (widthRatio / heightRatio)) / 2;
m_vOffset = 0;
}
m_arCameraPostProcess.SetupIntrinsic(intrinsics);
_MeshUpdateForIntrinsics(GetComponent<MeshFilter>().mesh, m_uOffset, m_vOffset);
_CameraUpdateForIntrinsics(camera, intrinsics, m_uOffset, m_vOffset);
}
}
else
{
m_uOffset = 0;
m_vOffset = 0;
m_arCameraPostProcess.enabled = false;
}
}