@Override public void draw(final Renderer r) { if (_timer != null && _redrawRate > 0) { _elapsed += _timer.getTimePerFrame(); } if (_tRenderer == null) { init(r); } if (_cam == null) { _cam = Camera.getCurrentCamera(); _tRenderer.getCamera().setFrustum(_cam.getFrustumNear(), _cam.getFrustumFar(), _cam.getFrustumLeft(), _cam.getFrustumRight(), _cam.getFrustumTop(), _cam.getFrustumBottom()); _tRenderer.getCamera().setFrame(_cam.getLocation(), _cam.getLeft(), _cam.getUp(), _cam.getDirection()); } if (_doUpdate && (!_haveDrawn || shouldDoUpdate(_cam)) && _targetScene.getWorldBound() != null) { final BoundingVolume b = _targetScene.getWorldBound(); _center.set(b.getCenter()); updateCameraLookat(); calculateImposter(); updateCameraLookat(); updateCameraFrustum(); renderImposter(); _haveDrawn = true; } _imposterQuad.draw(r); }
_width = source.getWidth(); _height = source.getHeight(); _location.set(source.getLocation()); _left.set(source.getLeft()); _up.set(source.getUp()); _direction.set(source.getDirection()); _fovY = source.getFovY(); _depthRangeNear = source.getDepthRangeNear(); _depthRangeFar = source.getDepthRangeFar(); _depthRangeDirty = true; _frustumNear = source.getFrustumNear(); _frustumFar = source.getFrustumFar(); _frustumLeft = source.getFrustumLeft(); _frustumRight = source.getFrustumRight(); _frustumTop = source.getFrustumTop(); _frustumBottom = source.getFrustumBottom(); _viewPortLeft = source.getViewPortLeft(); _viewPortRight = source.getViewPortRight(); _viewPortTop = source.getViewPortTop(); _viewPortBottom = source.getViewPortBottom(); _projectionMode = source.getProjectionMode(); onFrustumChange(); onViewPortChange();
protected void switchCameraIn(final int clear) { // grab non-rtt settings _oldCamera = Camera.getCurrentCamera(); // swap to rtt settings _parentRenderer.getQueue().pushBuckets(); // clear the scene if (clear != 0) { clearBuffers(clear); } getCamera().update(); getCamera().apply(_parentRenderer); }
public int getWidth() { final Camera cam = Camera.getCurrentCamera(); if (cam != null) { return cam.getWidth(); } else { return 1; } }
public int getHeight() { final Camera cam = Camera.getCurrentCamera(); if (cam != null) { return cam.getHeight(); } else { return 1; } }
final Camera camera = Camera.getCurrentCamera(); final int state = camera.getPlaneState(); _frustumIntersects = camera.contains(_worldBound); draw(r); camera.setPlaneState(state);
cam.getWidth() / renderScale, // width cam.getHeight() / renderScale, // height 24, // Depth bits... TODO: Make configurable? 0); // Samples... TODO: Make configurable? tRenderer.getCamera().setFrustum(cam.getFrustumNear(), cam.getFrustumFar(), cam.getFrustumLeft(), cam.getFrustumRight(), cam.getFrustumTop(), cam.getFrustumBottom());
public synchronized static void exportCurrentScreen(final Renderer renderer, final ScreenExportable exportable) { final ImageDataFormat format = exportable.getFormat(); final Camera camera = Camera.getCurrentCamera(); final int width = camera.getWidth(), height = camera.getHeight(); // prepare our data buffer final int size = renderer.getExpectedBufferSizeToGrabScreenContents(format, PixelDataType.UnsignedByte, width, height); if (_scratch.capacity() < size) { _scratch = BufferUtils.createByteBuffer(size); } else { _scratch.limit(size); _scratch.rewind(); } // Ask the renderer for the current scene to be stored in the buffer renderer.grabScreenContents(_scratch, format, 0, 0, width, height); // send the buffer to the exportable object for processing. exportable.export(_scratch, width, height); } }
_camera = new Camera(settings.getWidth(), settings.getHeight()); _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1, 1000); _camera.setProjectionMode(ProjectionMode.Perspective); final Vector3 dir = new Vector3(0.0f, 0f, -1.0f); _camera.setFrame(loc, left, up, dir); } else { _camera.setFrustumPerspective(_camera.getFovY(), (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(), _camera.getFrustumFar());
public void setOrtho() { if (_inOrthoMode) { throw new Ardor3dException("Already in Orthographic mode."); } // set up ortho mode final RendererRecord matRecord = ContextManager.getCurrentContext().getRendererRecord(); LwjglRendererUtil.switchMode(matRecord, GL11.GL_PROJECTION); GL11.glPushMatrix(); GL11.glLoadIdentity(); final Camera camera = Camera.getCurrentCamera(); final double viewportWidth = camera.getWidth() * (camera.getViewPortRight() - camera.getViewPortLeft()); final double viewportHeight = camera.getHeight() * (camera.getViewPortTop() - camera.getViewPortBottom()); GL11.glOrtho(0, viewportWidth, 0, viewportHeight, -1, 1); LwjglRendererUtil.switchMode(matRecord, GL11.GL_MODELVIEW); GL11.glPushMatrix(); GL11.glLoadIdentity(); _inOrthoMode = true; }
_look.set(cam.getLocation()); _look.negateLocal().addLocal(_worldTransform.getTranslation()); final double zDepth = cam.getDirection().dot(_look); if (zDepth > cam.getFrustumFar() || zDepth < cam.getFrustumNear()) { if (cam.getProjectionMode() == ProjectionMode.Parallel) { heightAtZ = cam.getFrustumTop(); } else { heightAtZ = zDepth * cam.getFrustumTop() / cam.getFrustumNear(); final double screenHeight = cam.getHeight(); final double pixelRatio = heightAtZ / screenHeight;
/** * Sets the axes and location of the camera using those of a given source camera * * @param source * a source camera. */ public void setFrame(final Camera source) { _left.set(source.getLeft()); _up.set(source.getUp()); _direction.set(source.getDirection()); _location.set(source.getLocation()); onFrameChange(); }
final Camera current = Camera.getCurrentCamera(); if (SkeletalDebugger.orthoCam.getWidth() != current.getWidth() || SkeletalDebugger.orthoCam.getHeight() != current.getHeight()) { SkeletalDebugger.orthoCam.resize(current.getWidth(), current.getHeight()); SkeletalDebugger.orthoCam.setFrustumRight(current.getWidth()); SkeletalDebugger.orthoCam.setFrustumTop(current.getHeight()); SkeletalDebugger.orthoCam.apply(renderer); final Transform store = Transform.fetchTempInstance(); final Vector3 point = Vector3.fetchTempInstance(); SkeletalDebugger.jointText.setTranslation(current.getScreenCoordinates(t.applyForward(point))); Vector3.releaseTempInstance(point); renderer.renderBuckets(); current.apply(renderer);
final int state = clipmapTestFrustum.getPlaneState(); final boolean isVisible = clipmapTestFrustum.contains(frustumCheckBounds) != FrustumIntersect.Outside; clipmapTestFrustum.setPlaneState(state);
/** * Sets the frustum plane values of this camera using those of a given source camera * * @param source * a source camera. */ public void setFrustum(final Camera source) { _frustumNear = source.getFrustumNear(); _frustumFar = source.getFrustumFar(); _frustumLeft = source.getFrustumLeft(); _frustumRight = source.getFrustumRight(); _frustumTop = source.getFrustumTop(); _frustumBottom = source.getFrustumBottom(); onFrustumChange(); }
public void updateCamera() { if (isSupported()) { tRenderer.getCamera().setFrustum(cam.getFrustumNear(), cam.getFrustumFar(), cam.getFrustumLeft(), cam.getFrustumRight(), cam.getFrustumTop(), cam.getFrustumBottom()); } }
final int dispWidth = Camera.getCurrentCamera().getWidth(); final int dispHeight = Camera.getCurrentCamera().getHeight(); getHud().getHudCamera().apply(renderer); getHud().getCanvas().getCanvasRenderer().getCamera().apply(renderer); getHud().getHudCamera().apply(renderer);
/** * Rotate the billboard so it points directly opposite the direction the camera's facing */ private void rotateScreenAligned() { final Camera camera = Camera.getCurrentCamera(); _look.set(camera.getDirection()).negateLocal(); _left.set(camera.getLeft()).negateLocal(); _orient.fromAxes(_left, camera.getUp(), _look); if(_localRot != null) _orient.multiplyLocal(_localRot); _worldTransform.setRotation(_orient); }
/** * Construct a new camera, using the given source camera's values. * * @param source */ public Camera(final Camera source) { _coeffLeft = new double[2]; _coeffRight = new double[2]; _coeffBottom = new double[2]; _coeffTop = new double[2]; _worldPlane = new Plane[MAX_WORLD_PLANES]; for (int i = 0; i < MAX_WORLD_PLANES; i++) { _worldPlane[i] = new Plane(); } set(source); _logger.fine("Camera created. W: " + getWidth() + " H: " + getHeight()); }