_canvas.setTitle("Various size imposters - Example");
_canvas.getCanvasRenderer().getCamera().setLocation(new Vector3(0, 60, 80));
_canvas.getCanvasRenderer().getCamera().lookAt(new Vector3(), Vector3.UNIT_Y);
final BasicText keyText = BasicText.createDefaultTextLabel("Text", "[SPACE] Switch imposters off");
keyText.getSceneHints().setRenderBucketType(RenderBucketType.Ortho);
keyText.getSceneHints().setLightCombineMode(LightCombineMode.Off);
keyText.setTranslation(new Vector3(0, 20, 0));
_root.attachChild(keyText);
final Box box = new Box("Box", new Vector3(), 150, 1, 150);
box.setModelBound(new BoundingBox());
box.setTranslation(new Vector3(0, -10, 0));
_root.attachChild(box);
final QuadImposterNode imposter0 = new QuadImposterNode("Imposter1", 256, 256, _settings.getDepthBits(),
_settings.getSamples(), _timer);
imposter0.setRedrawRate(0.0); // No timed update
imposter0.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD);
imposter0.setCameraDistanceThreshold(0.1);
_root.attachChild(imposter0);
final Node scene1 = createModel();
scene1.setTranslation(0, 0, 0);
imposter0.attachChild(scene1);
final QuadImposterNode imposter1 = new QuadImposterNode("Imposter1", 128, 128, _settings.getDepthBits(),
_settings.getSamples(), _timer);
imposter1.setRedrawRate(0.0); // No timed update
imposter1.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD);
imposter1.setCameraDistanceThreshold(0.1);
_root.attachChild(imposter1);
final Node scene2 = createModel();
scene2.setTranslation(-15, 0, -25);
imposter1.attachChild(scene2);
final QuadImposterNode imposter2 = new QuadImposterNode("Imposter2", 64, 64, _settings.getDepthBits(),
_settings.getSamples(), _timer);
imposter2.setRedrawRate(0.0); // No timed update
imposter2.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD);
imposter2.setCameraDistanceThreshold(0.1);
_root.attachChild(imposter2);
final Node scene3 = createModel();
scene3.setTranslation(15, 0, -25);
imposter2.attachChild(scene3);
_logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.SPACE), new TriggerAction() {
public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
showImposter = !showImposter;
if (showImposter) {
_root.detachChild(scene1);
_root.detachChild(scene2);
_root.detachChild(scene3);
imposter0.attachChild(scene1);
imposter1.attachChild(scene2);
imposter2.attachChild(scene3);
_root.attachChild(imposter0);
_root.attachChild(imposter1);
_root.attachChild(imposter2);
keyText.setText("[SPACE] Switch imposters off");
} else {
_root.detachChild(imposter0);
_root.detachChild(imposter1);
_root.detachChild(imposter2);
_root.attachChild(scene1);
_root.attachChild(scene2);
_root.attachChild(scene3);
keyText.setText("[SPACE] Switch imposters on");
}
}
}));
final TextureState ts = new TextureState();