Search in sources :

Example 26 with BoundingBox

use of com.jme3.bounding.BoundingBox in project jmonkeyengine by jMonkeyEngine.

the class TestSpotLightTerrain method makeTerrain.

private void makeTerrain() {
    // TERRAIN TEXTURE material
    matTerrain = new Material(assetManager, "Common/MatDefs/Terrain/TerrainLighting.j3md");
    matTerrain.setBoolean("useTriPlanarMapping", false);
    matTerrain.setBoolean("WardIso", true);
    // ALPHA map (for splat textures)
    matTerrain.setTexture("AlphaMap", assetManager.loadTexture("Textures/Terrain/splat/alpha1.png"));
    matTerrain.setTexture("AlphaMap_1", assetManager.loadTexture("Textures/Terrain/splat/alpha2.png"));
    // HEIGHTMAP image (for the terrain heightmap)
    Texture heightMapImage = assetManager.loadTexture("Textures/Terrain/splat/mountains512.png");
    // GRASS texture
    Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg");
    grass.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap", grass);
    matTerrain.setFloat("DiffuseMap_0_scale", grassScale);
    // DIRT texture
    Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg");
    dirt.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_1", dirt);
    matTerrain.setFloat("DiffuseMap_1_scale", dirtScale);
    // ROCK texture
    Texture rock = assetManager.loadTexture("Textures/Terrain/splat/road.jpg");
    rock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_2", rock);
    matTerrain.setFloat("DiffuseMap_2_scale", rockScale);
    // BRICK texture
    Texture brick = assetManager.loadTexture("Textures/Terrain/BrickWall/BrickWall.jpg");
    brick.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_3", brick);
    matTerrain.setFloat("DiffuseMap_3_scale", rockScale);
    // RIVER ROCK texture
    Texture riverRock = assetManager.loadTexture("Textures/Terrain/Pond/Pond.jpg");
    riverRock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_4", riverRock);
    matTerrain.setFloat("DiffuseMap_4_scale", rockScale);
    Texture normalMap0 = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.jpg");
    normalMap0.setWrap(WrapMode.Repeat);
    Texture normalMap1 = assetManager.loadTexture("Textures/Terrain/splat/dirt_normal.png");
    normalMap1.setWrap(WrapMode.Repeat);
    Texture normalMap2 = assetManager.loadTexture("Textures/Terrain/splat/road_normal.png");
    normalMap2.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("NormalMap", normalMap0);
    matTerrain.setTexture("NormalMap_1", normalMap2);
    matTerrain.setTexture("NormalMap_2", normalMap2);
    matTerrain.setTexture("NormalMap_4", normalMap2);
    // WIREFRAME material
    matWire = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matWire.getAdditionalRenderState().setWireframe(true);
    matWire.setColor("Color", ColorRGBA.Green);
    createSky();
    // CREATE HEIGHTMAP
    AbstractHeightMap heightmap = null;
    try {
        //heightmap = new HillHeightMap(1025, 1000, 50, 100, (byte) 3);
        heightmap = new ImageBasedHeightMap(heightMapImage.getImage(), 1f);
        heightmap.load();
    } catch (Exception e) {
        e.printStackTrace();
    }
    //, new LodPerspectiveCalculatorFactory(getCamera(), 4)); // add this in to see it use entropy for LOD calculations
    terrain = new TerrainQuad("terrain", 65, 513, heightmap.getHeightMap());
    TerrainLodControl control = new TerrainLodControl(terrain, getCamera());
    control.setLodCalculator(new DistanceLodCalculator(65, 2.7f));
    terrain.addControl(control);
    terrain.setMaterial(matTerrain);
    terrain.setModelBound(new BoundingBox());
    terrain.updateModelBound();
    terrain.setLocalTranslation(0, -100, 0);
    terrain.setLocalScale(1f, 1f, 1f);
    rootNode.attachChild(terrain);
}
Also used : AbstractHeightMap(com.jme3.terrain.heightmap.AbstractHeightMap) BoundingBox(com.jme3.bounding.BoundingBox) TerrainLodControl(com.jme3.terrain.geomipmap.TerrainLodControl) Material(com.jme3.material.Material) Texture(com.jme3.texture.Texture) TerrainQuad(com.jme3.terrain.geomipmap.TerrainQuad) DistanceLodCalculator(com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator) ImageBasedHeightMap(com.jme3.terrain.heightmap.ImageBasedHeightMap)

Example 27 with BoundingBox

use of com.jme3.bounding.BoundingBox in project jmonkeyengine by jMonkeyEngine.

the class TerrainGridAlphaMapTest method createAxisMarker.

protected Node createAxisMarker(float arrowSize) {
    Material redMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    redMat.getAdditionalRenderState().setWireframe(true);
    redMat.setColor("Color", ColorRGBA.Red);
    Material greenMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    greenMat.getAdditionalRenderState().setWireframe(true);
    greenMat.setColor("Color", ColorRGBA.Green);
    Material blueMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    blueMat.getAdditionalRenderState().setWireframe(true);
    blueMat.setColor("Color", ColorRGBA.Blue);
    Node axis = new Node();
    // create arrows
    Geometry arrowX = new Geometry("arrowX", new Arrow(new Vector3f(arrowSize, 0, 0)));
    arrowX.setMaterial(redMat);
    Geometry arrowY = new Geometry("arrowY", new Arrow(new Vector3f(0, arrowSize, 0)));
    arrowY.setMaterial(greenMat);
    Geometry arrowZ = new Geometry("arrowZ", new Arrow(new Vector3f(0, 0, arrowSize)));
    arrowZ.setMaterial(blueMat);
    axis.attachChild(arrowX);
    axis.attachChild(arrowY);
    axis.attachChild(arrowZ);
    //axis.setModelBound(new BoundingBox());
    return axis;
}
Also used : Geometry(com.jme3.scene.Geometry) Arrow(com.jme3.scene.debug.Arrow) Node(com.jme3.scene.Node) Vector3f(com.jme3.math.Vector3f) Material(com.jme3.material.Material)

Example 28 with BoundingBox

use of com.jme3.bounding.BoundingBox in project jmonkeyengine by jMonkeyEngine.

the class TestLodGeneration method simpleInitApp.

public void simpleInitApp() {
    DirectionalLight dl = new DirectionalLight();
    dl.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
    rootNode.addLight(dl);
    AmbientLight al = new AmbientLight();
    al.setColor(ColorRGBA.White.mult(0.6f));
    rootNode.addLight(al);
    // model = (Node) assetManager.loadModel("Models/Sinbad/Sinbad.mesh.xml");
    model = (Node) assetManager.loadModel("Models/Jaime/Jaime.j3o");
    BoundingBox b = ((BoundingBox) model.getWorldBound());
    model.setLocalScale(1.2f / (b.getYExtent() * 2));
    //  model.setLocalTranslation(0,-(b.getCenter().y - b.getYExtent())* model.getLocalScale().y, 0);
    for (Spatial spatial : model.getChildren()) {
        if (spatial instanceof Geometry) {
            listGeoms.add((Geometry) spatial);
        }
    }
    ChaseCamera chaseCam = new ChaseCamera(cam, inputManager);
    model.addControl(chaseCam);
    chaseCam.setLookAtOffset(b.getCenter());
    chaseCam.setDefaultDistance(5);
    chaseCam.setMinVerticalRotation(-FastMath.HALF_PI + 0.01f);
    chaseCam.setZoomSensitivity(0.5f);
    //           ch = model.getControl(AnimControl.class).createChannel();
    //          ch.setAnim("Wave");
    SkeletonControl c = model.getControl(SkeletonControl.class);
    if (c != null) {
        c.setEnabled(false);
    }
    reductionvalue = 0.80f;
    lodLevel = 1;
    for (final Geometry geometry : listGeoms) {
        LodGenerator lodGenerator = new LodGenerator(geometry);
        lodGenerator.bakeLods(LodGenerator.TriangleReductionMethod.PROPORTIONAL, reductionvalue);
        geometry.setLodLevel(lodLevel);
    }
    rootNode.attachChild(model);
    flyCam.setEnabled(false);
    guiFont = assetManager.loadFont("Interface/Fonts/Default.fnt");
    hudText = new BitmapText(guiFont, false);
    hudText.setSize(guiFont.getCharSet().getRenderedSize());
    hudText.setText(computeNbTri() + " tris");
    hudText.setLocalTranslation(cam.getWidth() / 2, hudText.getLineHeight(), 0);
    guiNode.attachChild(hudText);
    inputManager.addListener(new ActionListener() {

        public void onAction(String name, boolean isPressed, float tpf) {
            if (isPressed) {
                if (name.equals("plus")) {
                    //                        lodLevel++;
                    //                        for (Geometry geometry : listGeoms) {
                    //                            if (geometry.getMesh().getNumLodLevels() <= lodLevel) {
                    //                                lodLevel = 0;
                    //                            }
                    //                            geometry.setLodLevel(lodLevel);
                    //                        }
                    //                        jaimeText.setText(computeNbTri() + " tris");
                    reductionvalue += 0.05f;
                    updateLod();
                }
                if (name.equals("minus")) {
                    //                        lodLevel--;
                    //                        for (Geometry geometry : listGeoms) {
                    //                            if (lodLevel < 0) {
                    //                                lodLevel = geometry.getMesh().getNumLodLevels() - 1;
                    //                            }
                    //                            geometry.setLodLevel(lodLevel);
                    //                        }
                    //                        jaimeText.setText(computeNbTri() + " tris");
                    reductionvalue -= 0.05f;
                    updateLod();
                }
                if (name.equals("wireFrame")) {
                    wireFrame = !wireFrame;
                    for (Geometry geometry : listGeoms) {
                        geometry.getMaterial().getAdditionalRenderState().setWireframe(wireFrame);
                    }
                }
            }
        }

        private void updateLod() {
            reductionvalue = FastMath.clamp(reductionvalue, 0.0f, 1.0f);
            makeLod(LodGenerator.TriangleReductionMethod.PROPORTIONAL, reductionvalue, 1);
        }
    }, "plus", "minus", "wireFrame");
    inputManager.addMapping("plus", new KeyTrigger(KeyInput.KEY_ADD));
    inputManager.addMapping("minus", new KeyTrigger(KeyInput.KEY_SUBTRACT));
    inputManager.addMapping("wireFrame", new KeyTrigger(KeyInput.KEY_SPACE));
}
Also used : KeyTrigger(com.jme3.input.controls.KeyTrigger) ChaseCamera(com.jme3.input.ChaseCamera) SkeletonControl(com.jme3.animation.SkeletonControl) Geometry(com.jme3.scene.Geometry) LodGenerator(jme3tools.optimize.LodGenerator) BitmapText(com.jme3.font.BitmapText) ActionListener(com.jme3.input.controls.ActionListener) Spatial(com.jme3.scene.Spatial) DirectionalLight(com.jme3.light.DirectionalLight) Vector3f(com.jme3.math.Vector3f) BoundingBox(com.jme3.bounding.BoundingBox) AmbientLight(com.jme3.light.AmbientLight)

Example 29 with BoundingBox

use of com.jme3.bounding.BoundingBox in project jmonkeyengine by jMonkeyEngine.

the class TerrainTestAdvanced method simpleInitApp.

@Override
public void simpleInitApp() {
    setupKeys();
    // First, we load up our textures and the heightmap texture for the terrain
    // TERRAIN TEXTURE material
    matTerrain = new Material(assetManager, "Common/MatDefs/Terrain/TerrainLighting.j3md");
    matTerrain.setBoolean("useTriPlanarMapping", false);
    matTerrain.setFloat("Shininess", 0.0f);
    // ALPHA map (for splat textures)
    matTerrain.setTexture("AlphaMap", assetManager.loadTexture("Textures/Terrain/splat/alpha1.png"));
    matTerrain.setTexture("AlphaMap_1", assetManager.loadTexture("Textures/Terrain/splat/alpha2.png"));
    // this material also supports 'AlphaMap_2', so you can get up to 12 diffuse textures
    // HEIGHTMAP image (for the terrain heightmap)
    TextureKey hmKey = new TextureKey("Textures/Terrain/splat/mountains512.png", false);
    Texture heightMapImage = assetManager.loadTexture(hmKey);
    // DIRT texture, Diffuse textures 0 to 3 use the first AlphaMap
    Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg");
    dirt.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap", dirt);
    matTerrain.setFloat("DiffuseMap_0_scale", dirtScale);
    // DARK ROCK texture
    Texture darkRock = assetManager.loadTexture("Textures/Terrain/Rock2/rock.jpg");
    darkRock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_1", darkRock);
    matTerrain.setFloat("DiffuseMap_1_scale", darkRockScale);
    // PINK ROCK texture
    Texture pinkRock = assetManager.loadTexture("Textures/Terrain/Rock/Rock.PNG");
    pinkRock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_2", pinkRock);
    matTerrain.setFloat("DiffuseMap_2_scale", pinkRockScale);
    // RIVER ROCK texture, this texture will use the next alphaMap: AlphaMap_1
    Texture riverRock = assetManager.loadTexture("Textures/Terrain/Pond/Pond.jpg");
    riverRock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_3", riverRock);
    matTerrain.setFloat("DiffuseMap_3_scale", riverRockScale);
    // GRASS texture
    Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg");
    grass.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_4", grass);
    matTerrain.setFloat("DiffuseMap_4_scale", grassScale);
    // BRICK texture
    Texture brick = assetManager.loadTexture("Textures/Terrain/BrickWall/BrickWall.jpg");
    brick.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_5", brick);
    matTerrain.setFloat("DiffuseMap_5_scale", brickScale);
    // ROAD texture
    Texture road = assetManager.loadTexture("Textures/Terrain/splat/road.jpg");
    road.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_6", road);
    matTerrain.setFloat("DiffuseMap_6_scale", roadScale);
    // diffuse textures 0 to 3 use AlphaMap
    // diffuse textures 4 to 7 use AlphaMap_1
    // diffuse textures 8 to 11 use AlphaMap_2
    // NORMAL MAPS
    Texture normalMapDirt = assetManager.loadTexture("Textures/Terrain/splat/dirt_normal.png");
    normalMapDirt.setWrap(WrapMode.Repeat);
    Texture normalMapPinkRock = assetManager.loadTexture("Textures/Terrain/Rock/Rock_normal.png");
    normalMapPinkRock.setWrap(WrapMode.Repeat);
    Texture normalMapGrass = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.jpg");
    normalMapGrass.setWrap(WrapMode.Repeat);
    Texture normalMapRoad = assetManager.loadTexture("Textures/Terrain/splat/road_normal.png");
    normalMapRoad.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("NormalMap", normalMapDirt);
    matTerrain.setTexture("NormalMap_1", normalMapPinkRock);
    matTerrain.setTexture("NormalMap_2", normalMapPinkRock);
    matTerrain.setTexture("NormalMap_4", normalMapGrass);
    matTerrain.setTexture("NormalMap_6", normalMapRoad);
    // WIREFRAME material (used to debug the terrain, only useful for this test case)
    matWire = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matWire.getAdditionalRenderState().setWireframe(true);
    matWire.setColor("Color", ColorRGBA.Green);
    createSky();
    // CREATE HEIGHTMAP
    AbstractHeightMap heightmap = null;
    try {
        heightmap = new ImageBasedHeightMap(heightMapImage.getImage(), 0.3f);
        heightmap.load();
        heightmap.smooth(0.9f, 1);
    } catch (Exception e) {
        e.printStackTrace();
    }
    /*
         * Here we create the actual terrain. The tiles will be 65x65, and the total size of the
         * terrain will be 513x513. It uses the heightmap we created to generate the height values.
         */
    /**
         * Optimal terrain patch size is 65 (64x64).
         * The total size is up to you. At 1025 it ran fine for me (200+FPS), however at
         * size=2049 it got really slow. But that is a jump from 2 million to 8 million triangles...
         */
    //, new LodPerspectiveCalculatorFactory(getCamera(), 4)); // add this in to see it use entropy for LOD calculations
    terrain = new TerrainQuad("terrain", 65, 513, heightmap.getHeightMap());
    TerrainLodControl control = new TerrainLodControl(terrain, getCamera());
    // patch size, and a multiplier
    control.setLodCalculator(new DistanceLodCalculator(65, 2.7f));
    terrain.addControl(control);
    terrain.setMaterial(matTerrain);
    terrain.setModelBound(new BoundingBox());
    terrain.updateModelBound();
    terrain.setLocalTranslation(0, -100, 0);
    terrain.setLocalScale(1f, 1f, 1f);
    rootNode.attachChild(terrain);
    //Material debugMat = assetManager.loadMaterial("Common/Materials/VertexColor.j3m");
    //terrain.generateDebugTangents(debugMat);
    DirectionalLight light = new DirectionalLight();
    light.setDirection((new Vector3f(-0.1f, -0.1f, -0.1f)).normalize());
    rootNode.addLight(light);
    cam.setLocation(new Vector3f(0, 10, -10));
    cam.lookAtDirection(new Vector3f(0, -1.5f, -1).normalizeLocal(), Vector3f.UNIT_Y);
    flyCam.setMoveSpeed(400);
    rootNode.attachChild(createAxisMarker(20));
}
Also used : TextureKey(com.jme3.asset.TextureKey) AbstractHeightMap(com.jme3.terrain.heightmap.AbstractHeightMap) BoundingBox(com.jme3.bounding.BoundingBox) DirectionalLight(com.jme3.light.DirectionalLight) Vector3f(com.jme3.math.Vector3f) TerrainLodControl(com.jme3.terrain.geomipmap.TerrainLodControl) Material(com.jme3.material.Material) Texture(com.jme3.texture.Texture) TerrainQuad(com.jme3.terrain.geomipmap.TerrainQuad) DistanceLodCalculator(com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator) ImageBasedHeightMap(com.jme3.terrain.heightmap.ImageBasedHeightMap)

Example 30 with BoundingBox

use of com.jme3.bounding.BoundingBox in project jmonkeyengine by jMonkeyEngine.

the class TerrainTestCollision method simpleInitApp.

@Override
public void simpleInitApp() {
    bulletAppState = new BulletAppState();
    bulletAppState.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
    stateManager.attach(bulletAppState);
    setupKeys();
    matRock = new Material(assetManager, "Common/MatDefs/Terrain/Terrain.j3md");
    matRock.setTexture("Alpha", assetManager.loadTexture("Textures/Terrain/splat/alphamap.png"));
    Texture heightMapImage = assetManager.loadTexture("Textures/Terrain/splat/mountains512.png");
    Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg");
    grass.setWrap(WrapMode.Repeat);
    matRock.setTexture("Tex1", grass);
    matRock.setFloat("Tex1Scale", 64f);
    Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg");
    dirt.setWrap(WrapMode.Repeat);
    matRock.setTexture("Tex2", dirt);
    matRock.setFloat("Tex2Scale", 32f);
    Texture rock = assetManager.loadTexture("Textures/Terrain/splat/road.jpg");
    rock.setWrap(WrapMode.Repeat);
    matRock.setTexture("Tex3", rock);
    matRock.setFloat("Tex3Scale", 128f);
    matWire = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matWire.getAdditionalRenderState().setWireframe(true);
    matWire.setColor("Color", ColorRGBA.Green);
    AbstractHeightMap heightmap = null;
    try {
        heightmap = new ImageBasedHeightMap(heightMapImage.getImage(), 0.25f);
        heightmap.load();
    } catch (Exception e) {
    }
    terrain = new TerrainQuad("terrain", 65, 513, heightmap.getHeightMap());
    TerrainLodControl control = new TerrainLodControl(terrain, getCamera());
    // patch size, and a multiplier
    control.setLodCalculator(new DistanceLodCalculator(65, 2.7f));
    terrain.addControl(control);
    terrain.setMaterial(matRock);
    terrain.setLocalScale(new Vector3f(2, 2, 2));
    // unlock it so we can edit the height
    terrain.setLocked(false);
    rootNode.attachChild(terrain);
    /**
         * Create PhysicsRigidBodyControl for collision
         */
    terrain.addControl(new RigidBodyControl(0));
    bulletAppState.getPhysicsSpace().addAll(terrain);
    // let them drop from the sky
    for (int i = 0; i < 5; i++) {
        float r = (float) (8 * Math.random());
        Geometry sphere = new Geometry("cannonball", new Sphere(10, 10, r));
        sphere.setMaterial(matWire);
        // random position
        float x = (float) (20 * Math.random()) - 40;
        // random position
        float y = (float) (20 * Math.random()) - 40;
        // random position
        float z = (float) (20 * Math.random()) - 40;
        sphere.setLocalTranslation(new Vector3f(x, 100 + y, z));
        sphere.addControl(new RigidBodyControl(new SphereCollisionShape(r), 2));
        rootNode.attachChild(sphere);
        bulletAppState.getPhysicsSpace().add(sphere);
    }
    collisionBox = new Geometry("collisionBox", new Box(2, 2, 2));
    collisionBox.setModelBound(new BoundingBox());
    collisionBox.setLocalTranslation(new Vector3f(20, 95, 30));
    collisionBox.setMaterial(matWire);
    rootNode.attachChild(collisionBox);
    selectedCollisionObject = collisionBox;
    DirectionalLight dl = new DirectionalLight();
    dl.setDirection(new Vector3f(1, -0.5f, -0.1f).normalizeLocal());
    dl.setColor(new ColorRGBA(0.50f, 0.40f, 0.50f, 1.0f));
    rootNode.addLight(dl);
    cam.setLocation(new Vector3f(0, 25, -10));
    cam.lookAtDirection(new Vector3f(0, -1, 0).normalizeLocal(), Vector3f.UNIT_Y);
}
Also used : SphereCollisionShape(com.jme3.bullet.collision.shapes.SphereCollisionShape) Material(com.jme3.material.Material) BoundingBox(com.jme3.bounding.BoundingBox) Box(com.jme3.scene.shape.Box) Texture(com.jme3.texture.Texture) DistanceLodCalculator(com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator) RigidBodyControl(com.jme3.bullet.control.RigidBodyControl) ImageBasedHeightMap(com.jme3.terrain.heightmap.ImageBasedHeightMap) Geometry(com.jme3.scene.Geometry) Sphere(com.jme3.scene.shape.Sphere) AbstractHeightMap(com.jme3.terrain.heightmap.AbstractHeightMap) ColorRGBA(com.jme3.math.ColorRGBA) BulletAppState(com.jme3.bullet.BulletAppState) Vector3f(com.jme3.math.Vector3f) BoundingBox(com.jme3.bounding.BoundingBox) DirectionalLight(com.jme3.light.DirectionalLight) TerrainLodControl(com.jme3.terrain.geomipmap.TerrainLodControl) TerrainQuad(com.jme3.terrain.geomipmap.TerrainQuad)

Aggregations

BoundingBox (com.jme3.bounding.BoundingBox)42 Vector3f (com.jme3.math.Vector3f)35 Geometry (com.jme3.scene.Geometry)14 TempVars (com.jme3.util.TempVars)14 BoundingVolume (com.jme3.bounding.BoundingVolume)10 BoundingSphere (com.jme3.bounding.BoundingSphere)8 Material (com.jme3.material.Material)7 Vector2f (com.jme3.math.Vector2f)4 Texture (com.jme3.texture.Texture)4 Test (org.junit.Test)4 DirectionalLight (com.jme3.light.DirectionalLight)3 Matrix4f (com.jme3.math.Matrix4f)3 Ray (com.jme3.math.Ray)3 Node (com.jme3.scene.Node)3 Spatial (com.jme3.scene.Spatial)3 TerrainLodControl (com.jme3.terrain.geomipmap.TerrainLodControl)3 TerrainQuad (com.jme3.terrain.geomipmap.TerrainQuad)3 DistanceLodCalculator (com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator)3 AbstractHeightMap (com.jme3.terrain.heightmap.AbstractHeightMap)3 ImageBasedHeightMap (com.jme3.terrain.heightmap.ImageBasedHeightMap)3