private void init(final Renderer renderer) { _tRenderer = renderer.createTextureRenderer(_twidth, _theight, _depth, _samples); _tRenderer.setBackgroundColor(new ColorRGBA(0, 0, 0, 0)); resetTexture(); }
@Override protected void updateChildren(final double time) { _imposterQuad.updateGeometricState(time, false); if (_doUpdate && (!_haveDrawn || shouldDoUpdate(_cam))) { _targetScene.updateGeometricState(time, false); } }
@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); }
public QuadImposterNode(final String name, final int twidth, final int theight, final int depth, final int samples, final Timer timer) { super(name); _twidth = twidth; _theight = theight; _depth = depth; _samples = samples; _timer = timer; _texture = new Texture2D(); _imposterQuad = new Quad("ImposterQuad"); _imposterQuad.resize(1, 1); _imposterQuad.setModelBound(new BoundingBox()); _imposterQuad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); _imposterQuad.getSceneHints().setLightCombineMode(LightCombineMode.Off); super.attachChild(_imposterQuad); getSceneHints().setRenderBucketType(RenderBucketType.Transparent); _targetScene = new Node(); super.attachChild(_targetScene); for (int i = 0; i < _corners.length; i++) { _corners[i] = new Vector3(); } if (timer != null) { _redrawRate = _elapsed = 0.05; // 20x per sec } else { setCameraAngleThreshold(10.0); setCameraDistanceThreshold(0.2); } _haveDrawn = false; }
@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); }
public QuadImposterNode(final String name, final int twidth, final int theight, final int depth, final int samples, final Timer timer) { super(name); _twidth = twidth; _theight = theight; _depth = depth; _samples = samples; _timer = timer; _texture = new Texture2D(); _imposterQuad = new Quad("ImposterQuad"); _imposterQuad.resize(1, 1); _imposterQuad.setModelBound(new BoundingBox()); _imposterQuad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); _imposterQuad.getSceneHints().setLightCombineMode(LightCombineMode.Off); super.attachChild(_imposterQuad); getSceneHints().setRenderBucketType(RenderBucketType.Transparent); _targetScene = new Node(); super.attachChild(_targetScene); for (int i = 0; i < _corners.length; i++) { _corners[i] = new Vector3(); } if (timer != null) { _redrawRate = _elapsed = 0.05; // 20x per sec } else { setCameraAngleThreshold(10.0); setCameraDistanceThreshold(0.2); } _haveDrawn = false; }
@Override protected void updateChildren(final double time) { _imposterQuad.updateGeometricState(time, false); if (_doUpdate && (!_haveDrawn || shouldDoUpdate(_cam))) { _targetScene.updateGeometricState(time, false); } }
private void init(final Renderer renderer) { _tRenderer = TextureRendererFactory.INSTANCE.createTextureRenderer(_twidth, _theight, _depth, _samples, renderer, ContextManager.getCurrentContext().getCapabilities()); _tRenderer.setBackgroundColor(new ColorRGBA(0, 0, 0, 0)); resetTexture(); }