private void makeNewScreens() { var displayMgr = MiddleVR.VRDisplayMgr; // For each vrCameraStereo, make a new screen for the right eye for (uint i = 0, iEnd = displayMgr.GetCamerasNb(); i < iEnd; ++i) { vrCamera cam = displayMgr.GetCameraByIndex(i); if (cam.IsA("CameraStereo")) { vrCameraStereo stereoCam = displayMgr.GetCameraStereoById(cam.GetId()); vrScreen leftScreen = stereoCam.GetCameraLeft().GetScreen(); vrScreen rightScreen = displayMgr.CreateScreen(leftScreen.GetName() + "right"); leftScreen.SetName(leftScreen.GetName() + "left"); rightScreen.SetParent(leftScreen.GetParent()); rightScreen.SetHeight(leftScreen.GetHeight()); rightScreen.SetWidth(leftScreen.GetWidth()); rightScreen.SetFiltered(leftScreen.IsFiltered()); rightScreen.SetTracker(leftScreen.GetTracker()); rightScreen.SetPositionWorld(leftScreen.GetPositionWorld()); rightScreen.SetOrientationWorld(leftScreen.GetOrientationWorld()); stereoCam.GetCameraRight().SetScreen(rightScreen); } } }
void OnPostRender() { MiddleVR.VRLog(3, "[ ] PostRender : " + name); vrCamera cam = MiddleVR.VRDisplayMgr.GetCamera(name); int id = -1; if (cam != null) { id = (int)cam.GetId(); } GL.IssuePluginEvent(id); }
void TestDisplay() { // 3D nodes vrNode3D node = null; vrCamera camera = null; vrCameraStereo scam = null; vrScreen screen = null; vrViewport vp = null; if (MiddleVR.VRDisplayMgr != null) { node = MiddleVR.VRDisplayMgr.GetNode("HeadNode"); if (node != null) { MiddleVRTools.Log("Found HeadNode"); } camera = MiddleVR.VRDisplayMgr.GetCamera("Camera0"); if (camera != null) { MiddleVRTools.Log("Found Camera0"); } scam = MiddleVR.VRDisplayMgr.GetCameraStereo("CameraStereo0"); if (scam != null) { MiddleVRTools.Log("Found CameraStereo0"); } screen = MiddleVR.VRDisplayMgr.GetScreen("Screen0"); if (screen != null) { MiddleVRTools.Log("Found Screen0"); } vp = MiddleVR.VRDisplayMgr.GetViewport("Viewport0"); if (vp != null) { MiddleVRTools.Log("Found Viewport0"); } } }
void Update() { vrKeyboard keyb = MiddleVR.VRDeviceMgr.GetKeyboard(); // Invert eye if (keyb != null && keyb.IsKeyToggled(MiddleVR.VRK_I) && (keyb.IsKeyPressed(MiddleVR.VRK_LSHIFT) || keyb.IsKeyPressed(MiddleVR.VRK_RSHIFT))) { // For each vrCameraStereo, invert inter eye distance uint camNb = MiddleVR.VRDisplayMgr.GetCamerasNb(); for (uint i = 0; i < camNb; ++i) { vrCamera cam = MiddleVR.VRDisplayMgr.GetCameraByIndex(i); if (cam.IsA("CameraStereo")) { vrCameraStereo stereoCam = MiddleVR.VRDisplayMgr.GetCameraStereo(cam.GetName()); stereoCam.SetInterEyeDistance(-stereoCam.GetInterEyeDistance()); } } } }
protected void Update() { vrKeyboard keyboard = MiddleVR.VRDeviceMgr.GetKeyboard(); // Invert eyes. if (keyboard != null && keyboard.IsKeyToggled(MiddleVR.VRK_I) && (keyboard.IsKeyPressed(MiddleVR.VRK_LSHIFT) || keyboard.IsKeyPressed(MiddleVR.VRK_RSHIFT))) { var displayMgr = MiddleVR.VRDisplayMgr; // For each vrCameraStereo, invert inter eye distance. for (uint i = 0, iEnd = displayMgr.GetCamerasNb(); i < iEnd; ++i) { vrCamera cam = displayMgr.GetCameraByIndex(i); if (cam.IsA("CameraStereo")) { vrCameraStereo stereoCam = displayMgr.GetCameraStereoById(cam.GetId()); stereoCam.SetInterEyeDistance(-stereoCam.GetInterEyeDistance()); } } } }
private void TestDisplay() { var displayMgr = MiddleVR.VRDisplayMgr; if (displayMgr != null) { vrNode3D node = displayMgr.GetNode("HeadNode"); if (node != null) { MVRTools.Log("Found HeadNode"); } vrCamera cam = displayMgr.GetCamera("Camera0"); if (cam != null) { MVRTools.Log("Found Camera0"); } vrCameraStereo sCam = displayMgr.GetCameraStereo("CameraStereo0"); if (sCam != null) { MVRTools.Log("Found CameraStereo0"); } vrScreen screen = displayMgr.GetScreen("Screen0"); if (screen != null) { MVRTools.Log("Found Screen0"); } vrViewport vp = displayMgr.GetViewport("Viewport0"); if (vp != null) { MVRTools.Log("Found Viewport0"); } } }
private void applyOffset() { var displayMgr = MiddleVR.VRDisplayMgr; // For each vrCameraStereo, apply the new transform matrix to right cameras screen for (uint i = 0, iEnd = displayMgr.GetCamerasNb(); i < iEnd; ++i) { vrCamera cam = displayMgr.GetCameraByIndex(i); if (cam.IsA("CameraStereo")) { vrCameraStereo stereoCam = displayMgr.GetCameraStereoById(cam.GetId()); vrVec3 pos = stereoCam.GetCameraRight().GetScreen().GetPositionLocal(); pos.SetX(pos.x() + xDist); pos.SetY(pos.y() + yDist); stereoCam.GetCameraRight().GetScreen().SetPositionLocal(pos); /* * stereoCam.GetCameraRight().SetPositionLocal(new vrVec3(xDist, yDist, 0)); * stereoCam.GetCameraRight().SetRollLocal(roll); * stereoCam.GetCameraRight().SetYawLocal(yaw); * if ((frameCounter / 4) > 20) * { * quat = stereoCam.GetCameraRight().GetOrientationLocal(); * frameCounter = 0; * } * else * frameCounter++; * GetComponent<TextMesh>().text = quat.x() + ", " + quat.y() + ", " + quat.z() + ", " + quat.w(); * quat.SetY(roll); * quat.SetZ(yaw); * stereoCam.GetCameraRight().SetOrientationLocal(quat); */ } } }
protected void Start() { // Check if we are running MiddleVR if (MiddleVR.VRKernel == null) { Debug.Log("[X] VRManager is missing from the scene !"); enabled = false; return; } if (SystemInfo.graphicsDeviceID == 0) { Debug.Log("[~] Running in batchmode - disabling VRWebView script"); enabled = false; return; } m_VirtualMousePosition = new Vector2(0, 0); if (Application.isEditor) { // Get the vrCameras corresponding Cameras m_Cameras = new List <Camera>(); uint camerasNb = MiddleVR.VRDisplayMgr.GetCamerasNb(); for (uint i = 0; i < camerasNb; ++i) { vrCamera vrcamera = MiddleVR.VRDisplayMgr.GetCameraByIndex(i); GameObject cameraObj = GameObject.Find(vrcamera.GetName()); Camera camera = cameraObj.GetComponent <Camera>(); if (camera != null) { m_Cameras.Add(camera); } } } m_Texture = new Texture2D(m_Width, m_Height, TextureFormat.ARGB32, false); m_Texture.wrapMode = TextureWrapMode.Clamp; // Create vrImage and Texture2D #if VRWEBVIEW_UNITY_FREE // Texture2D.SetPixels takes RGBA. m_Image = new vrImage("", (uint)m_Width, (uint)m_Height, VRImagePixelFormat.VRImagePixelFormat_RGBA); m_Pixels = m_Texture.GetPixels32(0); m_PixelsHandle = GCHandle.Alloc(m_Pixels, GCHandleType.Pinned); #else // OpenGL and Direct3D 9: Memory order for texture upload is BGRA (little-endian representation of ARGB32) // Direct3D 11: Unity seems to ignore TextureFormat.ARGB32 and always creates an RGBA texture. // We let vrImage do the pixel format conversion because this operation is done in another thread. if (SystemInfo.graphicsDeviceVersion.Contains("Direct3D 11")) { m_Image = new vrImage("", (uint)m_Width, (uint)m_Height, VRImagePixelFormat.VRImagePixelFormat_RGBA); } else { m_Image = new vrImage("", (uint)m_Width, (uint)m_Height, VRImagePixelFormat.VRImagePixelFormat_BGRA); } #endif // Fill texture Color32[] colors = new Color32[(m_Width * m_Height)]; for (int i = 0; i < (m_Width * m_Height); i++) { colors[i].r = 0; colors[i].g = 0; colors[i].b = 0; colors[i].a = 0; } m_Texture.SetPixels32(colors); m_Texture.Apply(false, false); #if !VRWEBVIEW_UNITY_FREE m_NativeTexturePtr = m_Texture.GetNativeTexturePtr(); #endif // Attach texture if (gameObject != null && gameObject.GetComponent <GUITexture>() == null && gameObject.GetComponent <Renderer>() != null) { var renderer = gameObject.GetComponent <Renderer>(); // Assign the material/shader to the object attached renderer.material = Resources.Load("VRWebViewMaterial", typeof(Material)) as Material; renderer.material.mainTexture = this.m_Texture; } else if (gameObject != null && gameObject.GetComponent <GUITexture>() != null) { gameObject.GetComponent <GUITexture>().texture = this.m_Texture; } else { MiddleVR.VRLog(2, "VRWebView must be attached to a GameObject with a renderer or a GUITexture !"); enabled = false; return; } // Handle Cluster if (MiddleVR.VRClusterMgr.IsServer() && !MiddleVR.VRKernel.GetEditorMode()) { MiddleVR.VRClusterMgr.AddSynchronizedObject(m_Image); } if (!MiddleVR.VRClusterMgr.IsClient()) { if (m_DirectoryProviders.Length == 0 && m_ArchiveProviders.Length == 0) { m_WebView = new vrWebView("", GetAbsoluteURL(m_URL), (uint)m_Width, (uint)m_Height, m_Image); } else { m_WebView = new vrWebView("", "", (uint)m_Width, (uint)m_Height, m_Image); int order = 0; foreach (VRWebViewDirectoryProvider directoryProvider in m_DirectoryProviders) { m_WebView.AddDirectoryProvider(directoryProvider.m_URL, Application.dataPath + System.IO.Path.DirectorySeparatorChar + directoryProvider.m_DirectoryPath, order, "VRWebViewProvider" + order); order++; } foreach (VRWebViewArchiveProvider archiveProvider in m_ArchiveProviders) { m_WebView.AddArchiveProvider(archiveProvider.m_URL, Application.dataPath + System.IO.Path.DirectorySeparatorChar + archiveProvider.m_ArchivePath, archiveProvider.m_Password, order, "VRWebViewProvider" + order); order++; } m_WebView.SetURL(GetAbsoluteURL(m_URL)); } m_WebView.SetZoom(m_Zoom); } }