/** Called once per frame, before {@link #onDrawEyeView(int, float)}. */ void onDrawFrame() { GVRPerspectiveCamera centerCamera = mMainScene.getMainCameraRig().getCenterCamera(); cull( mMainScene.getNative(), centerCamera.getNative(), mRenderBundle.getMaterialShaderManager().getNative()); if (mCurrentEye == 1) { mActivity.setCamera(mMainScene.getMainCameraRig().getLeftCamera()); } else { mActivity.setCamera(mMainScene.getMainCameraRig().getRightCamera()); } }
private void renderSixCamerasAndReadback(final GVRCameraRig mainCameraRig, byte[][] byteArrays) { if (byteArrays.length != 6) { throw new IllegalArgumentException("byteArrays length is not 6."); } else { // temporarily create a center camera GVRPerspectiveCamera centerCamera = new GVRPerspectiveCamera(this); centerCamera.setFovY(90.0f); centerCamera.setRenderMask(GVRRenderMaskBit.Left | GVRRenderMaskBit.Right); GVRSceneObject centerCameraObject = new GVRSceneObject(this); centerCameraObject.attachCamera(centerCamera); mainCameraRig.getOwnerObject().addChildObject(centerCameraObject); GVRTransform centerCameraTransform = centerCameraObject.getTransform(); int index = 0; // render +x face centerCameraTransform.rotateByAxis(-90, 0, 1, 0); renderOneCameraAndAddToList(centerCamera, byteArrays, index++); // render -x face centerCameraTransform.rotateByAxis(180, 0, 1, 0); renderOneCameraAndAddToList(centerCamera, byteArrays, index++); // render +y face centerCameraTransform.rotateByAxis(-90, 0, 1, 0); centerCameraTransform.rotateByAxis(90, 1, 0, 0); renderOneCameraAndAddToList(centerCamera, byteArrays, index++); // render -y face centerCameraTransform.rotateByAxis(180, 1, 0, 0); renderOneCameraAndAddToList(centerCamera, byteArrays, index++); // render +z face centerCameraTransform.rotateByAxis(90, 1, 0, 0); centerCameraTransform.rotateByAxis(180, 0, 1, 0); renderOneCameraAndAddToList(centerCamera, byteArrays, index++); // render -z face centerCameraTransform.rotateByAxis(180, 0, 1, 0); renderOneCameraAndAddToList(centerCamera, byteArrays, index++); centerCameraObject.detachCamera(); mainCameraRig.getOwnerObject().removeChildObject(centerCameraObject); } }
/** * Constructs GVRViewManager object with GVRScript which controls GL activities * * @param gvrActivity Current activity object * @param gvrScript {@link GVRScript} which describes * @param distortionDataFileName distortion filename under assets folder */ GVRViewManager(GVRActivity gvrActivity, GVRScript gvrScript, GVRXMLParser xmlParser) { super(gvrActivity); // Clear singletons and per-run data structures resetOnRestart(); GVRAsynchronousResourceLoader.setup(this); /* * Links with the script. */ mScript = gvrScript; mActivity = gvrActivity; /* * Starts listening to the sensor. */ mRotationSensor = new RotationSensor(gvrActivity, this); /* * Sets things with the numbers in the xml. */ DisplayMetrics metrics = new DisplayMetrics(); gvrActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); final float INCH_TO_METERS = 0.0254f; int screenWidthPixels = metrics.widthPixels; int screenHeightPixels = metrics.heightPixels; float screenWidthMeters = (float) screenWidthPixels / metrics.xdpi * INCH_TO_METERS; float screenHeightMeters = (float) screenHeightPixels / metrics.ydpi * INCH_TO_METERS; mLensInfo = new GVRLensInfo( screenWidthPixels, screenHeightPixels, screenWidthMeters, screenHeightMeters, gvrActivity.getAppSettings()); GVRPerspectiveCamera.setDefaultFovY(gvrActivity.getAppSettings().getEyeBufferParms().getFovY()); // Different width/height aspect ratio makes the rendered screen warped // when the screen rotates // GVRPerspectiveCamera.setDefaultAspectRatio(mLensInfo // .getRealScreenWidthMeters() // / mLensInfo.getRealScreenHeightMeters()); mInputManager = new GVRInputManagerImpl(this); mEventManager = new GVREventManager(this); mScriptManager = new GVRScriptManager(this); }