private void DisplayRightEyeVideo(ImmersifyPlayer player) { if (player.StereoMode == StereoVideoMode.TOP_BOTTOM) { // TilingY = 0.5 (half height) and OffsetY = 0.5 => Top Half of the video. ApplyTextureTransformation(player, 1f, 0.5f, 0f, 0.5f); } else if (player.StereoMode == StereoVideoMode.LEFT_RIGHT) { // TilingX = 0.5 (half width) and OffsetX = 0.5 => Right Half of the video. ApplyTextureTransformation(player, 0.5f, 1.0f, 0.5f, 0f); } }
private void Start() { foreach (ImmersifyMeshVideo meshVideo in _immersifyMeshVideoList) { ImmersifyPlayer player = new ImmersifyPlayer(meshVideo); _immersifyPlayerList.Add(player); if (player.StereoMode == StereoVideoMode.MONO) { DisplayMonoVideo(player); } else { // Just setup the first frame: // If the video is stereo, but the viewer is mono, just the left video is displayed. DisplayLeftEyeVideo(player); } } }
private void ApplyTextureTransformation(ImmersifyPlayer player, float tilingX, float tilingY, float offsetX, float offsetY) { //Vector4 textureTrans = new Vector4(tilingX, tilingY, offsetX, offsetY); Vector2 textureOffset = new Vector2(offsetX, offsetY); Vector2 textureScale = new Vector2(tilingX, tilingY); if (player.VideoIsUpsideDown == true) { //textureTrans.y *= -1f; textureScale.y *= -1f; } //_videoPlaneMaterial.SetVector(_textureTransID, textureTrans); player.VideoPlaneMaterial.SetTextureOffset(_textureIdY, textureOffset); player.VideoPlaneMaterial.SetTextureOffset(_textureIdU, textureOffset); player.VideoPlaneMaterial.SetTextureOffset(_textureIdV, textureOffset); player.VideoPlaneMaterial.SetTextureScale(_textureIdY, textureScale); player.VideoPlaneMaterial.SetTextureScale(_textureIdU, textureScale); player.VideoPlaneMaterial.SetTextureScale(_textureIdV, textureScale); }
private void DisplayMonoVideo(ImmersifyPlayer player) { ApplyTextureTransformation(player, 1f, 1f, 0f, 0f); }