public Camera clone() { Camera cam = new Camera(); cam.setFarPlane(mFarPlane); cam.setFieldOfView(mFieldOfView); cam.setGraphNode(mGraphNode, mInsideGraph); cam.setLookAt(mLookAt.clone()); cam.setNearPlane(mNearPlane); cam.setOrientation(mOrientation.clone()); cam.setPosition(mPosition.clone()); cam.setProjectionMatrix(mLastWidth, mLastHeight); return cam; } }
@Override public void render(Camera camera, final Matrix4 vpMatrix, final Matrix4 projMatrix, final Matrix4 vMatrix, final Matrix4 parentMatrix, Material sceneMaterial) { setLookAt(camera.getPosition()); super.render(camera, vpMatrix, projMatrix, vMatrix, parentMatrix, sceneMaterial); } }
@Override public void initScene() { mCameraLeft = new Camera(); mCameraLeft.setNearPlane(.01f); mCameraLeft.setFieldOfView(getCurrentCamera().getFieldOfView()); mCameraLeft.setNearPlane(getCurrentCamera().getNearPlane()); mCameraLeft.setFarPlane(getCurrentCamera().getFarPlane()); mCameraRight = new Camera(); mCameraRight.setNearPlane(.01f); mCameraRight.setFieldOfView(getCurrentCamera().getFieldOfView()); mCameraRight.setNearPlane(getCurrentCamera().getNearPlane()); mCameraRight.setFarPlane(getCurrentCamera().getFarPlane()); mRightRenderTarget.setFullscreen(false); mCameraLeft.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight); mCameraRight.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight);
public Scene(Renderer renderer) { mRenderer = renderer; mAlpha = 0; mAnimations = Collections.synchronizedList(new CopyOnWriteArrayList<Animation>()); mPreCallbacks = Collections.synchronizedList(new CopyOnWriteArrayList<ASceneFrameCallback>()); mPreDrawCallbacks = Collections.synchronizedList(new CopyOnWriteArrayList<ASceneFrameCallback>()); mPostCallbacks = Collections.synchronizedList(new CopyOnWriteArrayList<ASceneFrameCallback>()); mChildren = Collections.synchronizedList(new CopyOnWriteArrayList<Object3D>()); mPlugins = Collections.synchronizedList(new CopyOnWriteArrayList<IRendererPlugin>()); mCameras = Collections.synchronizedList(new CopyOnWriteArrayList<Camera>()); mLights = Collections.synchronizedList(new CopyOnWriteArrayList<ALight>()); mFrameTaskQueue = new LinkedList<>(); mCamera = new Camera(); mCamera.setZ(mEyeZ); mCameras.add(mCamera); mAntiAliasingConfig = ISurface.ANTI_ALIASING_CONFIG.NONE; // Default to none }
@Override protected void doTask() { // ensure all cameras can see the far side of the skybox float out_radius = (float)skybox.getGeometry().getBoundingSphere().getRadius(); float in_radius = out_radius/(float)Math.sqrt(3); float median_diagonal = in_radius + out_radius; for (int i = 0, j = mCameras.size(); i < j; ++i) if(mCameras.get(i).getFarPlane() < median_diagonal) { mCameras.get(i).setFarPlane(median_diagonal); } } };
cam.setPosition(camera.position); cam.setX(mRenderer.getCurrentCamera().getX() * -1); cam.setRotation(camera.properties.lclRotation); Vector3 lookAt = camera.lookAt; cam.setLookAt(lookAt); cam.setNearPlane(camera.properties.nearPlane); cam.setFarPlane(camera.properties.farPlane); cam.setFieldOfView(camera.properties.fieldOfView);
@Override public void onDrawEye(Eye eye) { getCurrentCamera().updatePerspective( eye.getFov().getLeft(), eye.getFov().getRight(), eye.getFov().getBottom(), eye.getFov().getTop()); mCurrentEyeMatrix.setAll(eye.getEyeView()); mCurrentEyeOrientation.fromMatrix(mCurrentEyeMatrix); getCurrentCamera().setOrientation(mCurrentEyeOrientation); getCurrentCamera().setPosition(mCameraPosition); getCurrentCamera().getPosition().add(mCurrentEyeMatrix.getTranslation().inverse()); super.onRenderFrame(null); }
double screenPositionPixels_x, screenPositionPixels_y; Camera camera = mRenderer.getCurrentScene().getCamera(); Matrix4 viewMatrix = camera.getViewMatrix().clone(), projMatrix = camera.getProjectionMatrix().clone(); Vector3 cameraPosition = camera.getPosition().clone(); Vector3 cameraLookAt = camera.getLookAt() != null ? camera.getLookAt().clone() : new Vector3(0, 0, 1); Vector3 cameraDirection = cameraLookAt.clone().subtract(cameraPosition); cameraDirection.normalize();
@Override protected void initScene() { InputStream fis = null; try { FileInputStream fiss = new FileInputStream(Environment.getExternalStorageDirectory() + File.separator + "ss.jpg"); fis = new BufferedInputStream(fiss); } catch (Exception e) { Log.d("bis", "my render image e=" + e.getLocalizedMessage()); } Bitmap bitmap = BitmapFactory.decodeStream(fis); // Bitmap bitmap = BitmapFactory.decodeResource(contextWrapper.getResources(), R.raw.ss); Log.d("bis", "my render image bitmap" + bitmap.toString()); Sphere sphere = createPhotoSphereWithTexture(new Texture("photo", bitmap)); /////////////////////////////////////////////////////////////////////////// getCurrentScene().addChild(sphere); getCurrentCamera().setPosition(Vector3.ZERO); getCurrentCamera().setFieldOfView(75); } }
@Override protected void onRender(final long elapsedTime, final double deltaTime) { mUserScene = getCurrentScene(); setRenderTarget(mLeftRenderTarget); getCurrentScene().switchCamera(mCameraLeft); GLES20.glViewport(0, 0, mViewportWidthHalf, mDefaultViewportHeight); mCameraLeft.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight); mCameraLeft.setOrientation(mCameraOrientation); render(elapsedTime, deltaTime); setRenderTarget(mRightRenderTarget); getCurrentScene().switchCamera(mCameraRight); mCameraRight.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight); mCameraRight.setOrientation(mCameraOrientation); render(elapsedTime, deltaTime); switchSceneDirect(mSideBySideScene); GLES20.glViewport(0, 0, mDefaultViewportWidth, mDefaultViewportHeight); setRenderTarget(null); render(elapsedTime, deltaTime); switchSceneDirect(mUserScene); }
public void updateFrustum() { mCamera.setProjectionMatrix(mRenderer.getOverrideViewportWidth(), mRenderer.getOverrideViewportHeight()); if (mPoints == null) { if (!mCamera.isInitialized()) { return; mCamera.getFrustumCorners(mFrustumCornersTransformed, true, true);
public void getFrustumCorners(Vector3[] points) { getFrustumCorners(points, false); }
public void setFieldOfView(double fieldOfView) { synchronized (mFrustumLock) { mStartFOV = fieldOfView; super.setFieldOfView(fieldOfView); } }
@Override public void onDrawEye(Eye eye) { // Apply the eye transformation to the camera eyeMatrix.setAll(eye.getEyeView()); eyeQuaternion.fromMatrix(eyeMatrix); getCurrentCamera().setOrientation(eyeQuaternion); render(ellapsedRealtime, deltaTime); }
if (mFrustumTest && mGeometry.hasBoundingBox()) { BoundingBox bbox = getBoundingBox(); if (!camera.getFrustum().boundsInFrustum(bbox)) { mIsInFrustum = false;
@Override public void render(Scene scene, Renderer renderer, ScreenQuad screenQuad, RenderTarget writeTarget, RenderTarget readTarget, long elapsedTime, double deltaTime) { GLES20.glClearColor(0, 0, 0, 1); mDepthPlugin.setFarPlane((float)mCamera.getFarPlane()); mOldCamera = mScene.getCamera(); mScene.switchCamera(mCamera); mScene.render(elapsedTime, deltaTime, writeTarget, mMaterial); mScene.switchCamera(mOldCamera); } }
cam.setPosition(camera.position); cam.setX(mRenderer.getCurrentCamera().getX() * -1); cam.setRotation(camera.properties.lclRotation); Vector3 lookAt = camera.lookAt; cam.setLookAt(lookAt); cam.setNearPlane(camera.properties.nearPlane); cam.setFarPlane(camera.properties.farPlane); cam.setFieldOfView(camera.properties.fieldOfView);
double screenPositionPixels_x, screenPositionPixels_y; Camera camera = mRenderer.getCurrentScene().getCamera(); Matrix4 viewMatrix = camera.getViewMatrix().clone(), projMatrix = camera.getProjectionMatrix().clone(); Vector3 cameraPosition = camera.getPosition().clone(); Vector3 cameraLookAt = camera.getLookAt() != null ? camera.getLookAt().clone() : new Vector3(0, 0, 1); Vector3 cameraDirection = cameraLookAt.clone().subtract(cameraPosition); cameraDirection.normalize();
getCurrentCamera().setPosition(Vector3.ZERO); getCurrentCamera().setFieldOfView(75);
@Override protected void onRender(final long ellapsedTime, final double deltaTime) { mUserScene = getCurrentScene(); setRenderTarget(mLeftRenderTarget); getCurrentScene().switchCamera(mCameraLeft); GLES20.glViewport(0, 0, mViewportWidthHalf, mDefaultViewportHeight); mCameraLeft.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight); mCameraLeft.setOrientation(mCameraOrientation); render(ellapsedTime, deltaTime); setRenderTarget(mRightRenderTarget); getCurrentScene().switchCamera(mCameraRight); mCameraRight.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight); mCameraRight.setOrientation(mCameraOrientation); render(ellapsedTime, deltaTime); switchSceneDirect(mSideBySideScene); GLES20.glViewport(0, 0, mDefaultViewportWidth, mDefaultViewportHeight); setRenderTarget(null); render(ellapsedTime, deltaTime); switchSceneDirect(mUserScene); }