コード例 #1
0
    void OnGUI()
    {
        if (guiSkin)
        {
            GUI.skin = guiSkin;
        }

        if (!rtex_equi)
        {
            Debug.LogError("No texture assigned to rtex_equi!");
            return;
        }
        if (showModelOverlay)
        {
            //RenderTexture.active = rtex_equi;
            //GUI.DrawTexture(new Rect(10,10,360,180), rtex_equi, ScaleMode.ScaleToFit, false, 0);
            GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), rtex_equi, ScaleMode.StretchToFill);

            if (bGuiVisible && cubemapToProjectionMaterial)
            {
                selectionGridInt = GUI.SelectionGrid(new Rect(20, 10, 200, 160), selectionGridInt, LensModelNames, 1);

                if (selectionGridInt != prevSelectionGridInt)
                {
                    // select our new lens model
                    mLensmodel.setProjection((LensModel.LENSMODEL)selectionGridInt);
                    cubemapToProjectionMaterial.DisableKeyword("LM_" + LensModel.lensModelNames[prevSelectionGridInt]);
                    cubemapToProjectionMaterial.EnableKeyword("LM_" + LensModel.lensModelNames[selectionGridInt]);

                    // if LM_CYLINDRICAL, we have to update hradpermm uniform
                    cubemapToProjectionMaterial.SetFloat("hradpermm", (float)mLensmodel.getHradPerMm());

                    // save it in system
                    selectedModel   = LensModel.lensModelNames[selectionGridInt];
                    selectedModelID = (LensModel.LENSMODEL)selectionGridInt;

                    prevSelectionGridInt = selectionGridInt;

                    fov = 90;
                    UpdateFOV();
                }

                if (GUI.Button(new Rect(20, 190, 100, 20), "RESET"))
                {
                    Debug.Log("ArcBall Reset");
                    mArcball.reset();
                    this.transform.rotation = mArcball.getRotation();
                }

                GUI.Label(new Rect(Screen.width - 200, 10, 200, 40), selectedModel + "\nFOV: " + fov.ToString());
                GUI.Label(new Rect(Screen.width - 200, 40, 200, 40), "FPS: " + mFps.GetFPS().ToString());
            }
        }
    }
コード例 #2
0
    void Start()
    {
        UpdateCubemap(63);

        selectionGridInt = 0;

        for (int i = 0; i < LensModelNames.Length; ++i)
        {
            // at start select equirectangular mode
            // all others must be disabled
            if (i == (int)LensModel.LENSMODEL.EQUIRECTANGULAR)
            {
                mLensmodel.setProjection(LensModel.LENSMODEL.EQUIRECTANGULAR);
                selectedModel   = LensModelNames [(int)LensModel.LENSMODEL.EQUIRECTANGULAR];
                selectedModelID = LensModel.LENSMODEL.EQUIRECTANGULAR;

                // set FOV to 45deg and corresponding focal_length in shader
                fov = 45;

                // update camera
                Camera c = this.GetComponent <Camera> ();
                c.fieldOfView = fov;

                // update fov
                float fl = mLensmodel.fov2fl(fov);

                if (cubemapToProjectionMaterial)
                {
                    cubemapToProjectionMaterial.EnableKeyword("LM_EQUIRECTANGULAR");
                    cubemapToProjectionMaterial.SetFloat("focal_length", fl);
                }
                continue;
            }
            cubemapToProjectionMaterial.DisableKeyword("LM_" + LensModel.lensModelNames [i]);
        }
    }