Example #1
0
    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);
            }
        }
    }
Example #2
0
    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);
    }
Example #3
0
    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");
            }
        }
    }
Example #4
0
    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());
                }
            }
        }
    }
Example #6
0
    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");
            }
        }
    }
Example #7
0
    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);
        }
    }