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()); } } }
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]); } }