// // Build scene // public Group buildScene() { // Get the current color Color3f color = (Color3f) colors[currentColor].value; float front = ((Float) fronts[currentFront].value).floatValue(); float back = ((Float) backs[currentBack].value).floatValue(); // Turn off the example headlight setHeadlightEnable(false); // Default to walk navigation setNavigationType(Walk); // Create the scene group Group scene = new Group(); // BEGIN EXAMPLE TOPIC // Create influencing bounds BoundingSphere worldBounds = new BoundingSphere( new Point3d(0.0, 0.0, 0.0), // Center 1000.0); // Extent // Set the fog color, front & back distances, and // its influencing bounds fog = new LinearFog(); fog.setColor(color); fog.setFrontDistance(front); fog.setBackDistance(back); fog.setCapability(Fog.ALLOW_COLOR_WRITE); fog.setCapability(LinearFog.ALLOW_DISTANCE_WRITE); fog.setInfluencingBounds(worldBounds); scene.addChild(fog); // END EXAMPLE TOPIC // Set the background color and its application bounds // Usually, the background color should match the fog color // or the results look odd. background = new Background(); background.setColor(color); background.setApplicationBounds(worldBounds); background.setCapability(Background.ALLOW_COLOR_WRITE); scene.addChild(background); // Build foreground geometry scene.addChild(new ColumnScene(this)); return scene; }
// // Handle checkboxes and menu choices // public void checkboxChanged(CheckboxMenu menu, int check) { if (menu == backgroundColorMenu) { // Change the background color currentBackgroundColor = check; Color3f color = (Color3f) colors[check].value; background.setColor(color); return; } if (menu == colorMenu) { // Change the fog color currentColor = check; Color3f color = (Color3f) colors[check].value; fog.setColor(color); // If background is coupled, set the background color if (coupledBackgroundOnOff) { currentBackgroundColor = currentColor; backgroundColorMenu.setCurrent(check); background.setColor(color); } return; } if (menu == frontMenu) { // Change the fog front distance currentFront = check; float front = ((Float) fronts[currentFront].value).floatValue(); fog.setFrontDistance(front); return; } if (menu == backMenu) { // Change the fog back distance currentBack = check; float back = ((Float) backs[currentBack].value).floatValue(); fog.setBackDistance(back); return; } // Handle all other checkboxes super.checkboxChanged(menu, check); }