com.jme3.terrain.geomipmap.TerrainLodControl Java Examples
The following examples show how to use
com.jme3.terrain.geomipmap.TerrainLodControl.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JmeTerrainLodControl.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 6 votes |
@Override protected Sheet createSheet() { Sheet sheet = super.createSheet(); Sheet.Set set = Sheet.createPropertiesSet(); set.setDisplayName("TerrainLodControl"); set.setName(TerrainLodControl.class.getName()); TerrainLodControl obj = terrainLodControl; if (obj == null) { return sheet; } set.put(makeProperty(obj, boolean.class, "isEnabled", "setEnabled", "Enabled")); sheet.put(set); return sheet; }
Example #2
Source File: TerrainUtils.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 5 votes |
/** * Re-attach the camera to the LOD control. * Called when the scene is opened and will only * update the control if there is already a terrain present in * the scene. */ public static void enableLodControl(Camera camera, Node rootNode) { Terrain terrain = (Terrain) findTerrain(rootNode); if (terrain == null) return; TerrainLodControl control = ((Spatial)terrain).getControl(TerrainLodControl.class); if (control != null) { control.setCamera(camera); } }
Example #3
Source File: JmeTerrainLodControl.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 5 votes |
public JmeTerrainLodControl(TerrainLodControl control, Children children) { super(children); getLookupContents().add(control); getLookupContents().add(this); this.terrainLodControl = control; setName("TerrainLodControl"); }
Example #4
Source File: JmeTerrainLodControl.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 5 votes |
@Override public org.openide.nodes.Node[] createNodes(Object key, DataObject key2, boolean cookie) { TerrainLodControlChildren children = new TerrainLodControlChildren((TerrainLodControl) key); children.setReadOnly(cookie); children.setDataObject(key2); return new org.openide.nodes.Node[]{new JmeTerrainLodControl((TerrainLodControl) key, children).setReadOnly(cookie)}; }
Example #5
Source File: JmeDistanceLodCalculator.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 5 votes |
public JmeDistanceLodCalculator(TerrainLodControl lodControl, DistanceLodCalculator lodCalculator, DataObject dataObject) { super(Children.LEAF); this.lodControl=lodControl; this.lodCalculator = lodCalculator; this.dataObject = dataObject; getLookupContents().add(lodCalculator); getLookupContents().add(this); setName("DistanceLodCalculator"); }
Example #6
Source File: TerrainFractalGridTest.java From jmonkeyengine with BSD 3-Clause "New" or "Revised" License | 4 votes |
@Override public void simpleInitApp() { this.flyCam.setMoveSpeed(100f); ScreenshotAppState state = new ScreenshotAppState(); this.stateManager.attach(state); // TERRAIN TEXTURE material this.mat_terrain = new Material(this.assetManager, "Common/MatDefs/Terrain/HeightBasedTerrain.j3md"); // Parameters to material: // regionXColorMap: X = 1..4 the texture that should be appliad to state X // regionX: a Vector3f containing the following information: // regionX.x: the start height of the region // regionX.y: the end height of the region // regionX.z: the texture scale for the region // it might not be the most elegant way for storing these 3 values, but it packs the data nicely :) // slopeColorMap: the texture to be used for cliffs, and steep mountain sites // slopeTileFactor: the texture scale for slopes // terrainSize: the total size of the terrain (used for scaling the texture) // GRASS texture Texture grass = this.assetManager.loadTexture("Textures/Terrain/splat/grass.jpg"); grass.setWrap(WrapMode.Repeat); this.mat_terrain.setTexture("region1ColorMap", grass); this.mat_terrain.setVector3("region1", new Vector3f(15, 200, this.grassScale)); // DIRT texture Texture dirt = this.assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg"); dirt.setWrap(WrapMode.Repeat); this.mat_terrain.setTexture("region2ColorMap", dirt); this.mat_terrain.setVector3("region2", new Vector3f(0, 20, this.dirtScale)); // ROCK texture Texture rock = this.assetManager.loadTexture("Textures/Terrain/Rock2/rock.jpg"); rock.setWrap(WrapMode.Repeat); this.mat_terrain.setTexture("region3ColorMap", rock); this.mat_terrain.setVector3("region3", new Vector3f(198, 260, this.rockScale)); this.mat_terrain.setTexture("region4ColorMap", rock); this.mat_terrain.setVector3("region4", new Vector3f(198, 260, this.rockScale)); this.mat_terrain.setTexture("slopeColorMap", rock); this.mat_terrain.setFloat("slopeTileFactor", 32); this.mat_terrain.setFloat("terrainSize", 513); this.base = new FractalSum(); this.base.setRoughness(0.7f); this.base.setFrequency(1.0f); this.base.setAmplitude(1.0f); this.base.setLacunarity(2.12f); this.base.setOctaves(8); this.base.setScale(0.02125f); this.base.addModulator(new NoiseModulator() { @Override public float value(float... in) { return ShaderUtils.clamp(in[0] * 0.5f + 0.5f, 0, 1); } }); FilteredBasis ground = new FilteredBasis(this.base); this.perturb = new PerturbFilter(); this.perturb.setMagnitude(0.119f); this.therm = new OptimizedErode(); this.therm.setRadius(5); this.therm.setTalus(0.011f); this.smooth = new SmoothFilter(); this.smooth.setRadius(1); this.smooth.setEffect(0.7f); this.iterate = new IterativeFilter(); this.iterate.addPreFilter(this.perturb); this.iterate.addPostFilter(this.smooth); this.iterate.setFilter(this.therm); this.iterate.setIterations(1); ground.addPreFilter(this.iterate); this.terrain = new TerrainGrid("terrain", 33, 129, new FractalTileLoader(ground, 256f)); this.terrain.setMaterial(this.mat_terrain); this.terrain.setLocalTranslation(0, 0, 0); this.terrain.setLocalScale(2f, 1f, 2f); this.rootNode.attachChild(this.terrain); TerrainLodControl control = new TerrainGridLodControl(this.terrain, this.getCamera()); control.setLodCalculator(new DistanceLodCalculator(33, 2.7f)); // patch size, and a multiplier this.terrain.addControl(control); this.getCamera().setLocation(new Vector3f(0, 300, 0)); cam.setRotation(new Quaternion(0.51176f, -0.14f, 0.085f, 0.84336f)); this.viewPort.setBackgroundColor(new ColorRGBA(0.7f, 0.8f, 1f, 1f)); }
Example #7
Source File: TerrainTestModifyHeight.java From jmonkeyengine with BSD 3-Clause "New" or "Revised" License | 4 votes |
private void createTerrainGrid() { // TERRAIN TEXTURE material matTerrain = new Material(this.assetManager, "Common/MatDefs/Terrain/HeightBasedTerrain.j3md"); // Parameters to material: // regionXColorMap: X = 1..4 the texture that should be appliad to state X // regionX: a Vector3f containing the following information: // regionX.x: the start height of the region // regionX.y: the end height of the region // regionX.z: the texture scale for the region // it might not be the most elegant way for storing these 3 values, but it packs the data nicely :) // slopeColorMap: the texture to be used for cliffs, and steep mountain sites // slopeTileFactor: the texture scale for slopes // terrainSize: the total size of the terrain (used for scaling the texture) // GRASS texture Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg"); grass.setWrap(WrapMode.Repeat); matTerrain.setTexture("region1ColorMap", grass); matTerrain.setVector3("region1", new Vector3f(88, 200, this.grassScale)); // DIRT texture Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg"); dirt.setWrap(WrapMode.Repeat); matTerrain.setTexture("region2ColorMap", dirt); matTerrain.setVector3("region2", new Vector3f(0, 90, this.dirtScale)); // ROCK texture Texture rock = assetManager.loadTexture("Textures/Terrain/Rock2/rock.jpg"); rock.setWrap(WrapMode.Repeat); matTerrain.setTexture("region3ColorMap", rock); matTerrain.setVector3("region3", new Vector3f(198, 260, this.rockScale)); matTerrain.setTexture("region4ColorMap", rock); matTerrain.setVector3("region4", new Vector3f(198, 260, this.rockScale)); matTerrain.setTexture("slopeColorMap", rock); matTerrain.setFloat("slopeTileFactor", 32); matTerrain.setFloat("terrainSize", 513); FractalSum base = new FractalSum(); base.setRoughness(0.7f); base.setFrequency(1.0f); base.setAmplitude(1.0f); base.setLacunarity(2.12f); base.setOctaves(8); base.setScale(0.02125f); base.addModulator(new NoiseModulator() { @Override public float value(float... in) { return ShaderUtils.clamp(in[0] * 0.5f + 0.5f, 0, 1); } }); FilteredBasis ground = new FilteredBasis(base); PerturbFilter perturb = new PerturbFilter(); perturb.setMagnitude(0.119f); OptimizedErode therm = new OptimizedErode(); therm.setRadius(5); therm.setTalus(0.011f); SmoothFilter smooth = new SmoothFilter(); smooth.setRadius(1); smooth.setEffect(0.7f); IterativeFilter iterate = new IterativeFilter(); iterate.addPreFilter(perturb); iterate.addPostFilter(smooth); iterate.setFilter(therm); iterate.setIterations(1); ground.addPreFilter(iterate); this.terrain = new TerrainGrid("terrain", 65, 257, new FractalTileLoader(ground, 256f)); terrain.setMaterial(matTerrain); terrain.setLocalTranslation(0, 0, 0); terrain.setLocalScale(2f, 1f, 2f); rootNode.attachChild(this.terrain); TerrainLodControl control = new TerrainLodControl(this.terrain, getCamera()); this.terrain.addControl(control); }
Example #8
Source File: TerrainFractalGridTest.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 4 votes |
@Override public void simpleInitApp() { this.flyCam.setMoveSpeed(100f); ScreenshotAppState state = new ScreenshotAppState(); this.stateManager.attach(state); // TERRAIN TEXTURE material this.mat_terrain = new Material(this.assetManager, "Common/MatDefs/Terrain/HeightBasedTerrain.j3md"); // Parameters to material: // regionXColorMap: X = 1..4 the texture that should be appliad to state X // regionX: a Vector3f containing the following information: // regionX.x: the start height of the region // regionX.y: the end height of the region // regionX.z: the texture scale for the region // it might not be the most elegant way for storing these 3 values, but it packs the data nicely :) // slopeColorMap: the texture to be used for cliffs, and steep mountain sites // slopeTileFactor: the texture scale for slopes // terrainSize: the total size of the terrain (used for scaling the texture) // GRASS texture Texture grass = this.assetManager.loadTexture("Textures/Terrain/splat/grass.jpg"); grass.setWrap(WrapMode.Repeat); this.mat_terrain.setTexture("region1ColorMap", grass); this.mat_terrain.setVector3("region1", new Vector3f(15, 200, this.grassScale)); // DIRT texture Texture dirt = this.assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg"); dirt.setWrap(WrapMode.Repeat); this.mat_terrain.setTexture("region2ColorMap", dirt); this.mat_terrain.setVector3("region2", new Vector3f(0, 20, this.dirtScale)); // ROCK texture Texture rock = this.assetManager.loadTexture("Textures/Terrain/Rock2/rock.jpg"); rock.setWrap(WrapMode.Repeat); this.mat_terrain.setTexture("region3ColorMap", rock); this.mat_terrain.setVector3("region3", new Vector3f(198, 260, this.rockScale)); this.mat_terrain.setTexture("region4ColorMap", rock); this.mat_terrain.setVector3("region4", new Vector3f(198, 260, this.rockScale)); this.mat_terrain.setTexture("slopeColorMap", rock); this.mat_terrain.setFloat("slopeTileFactor", 32); this.mat_terrain.setFloat("terrainSize", 513); this.base = new FractalSum(); this.base.setRoughness(0.7f); this.base.setFrequency(1.0f); this.base.setAmplitude(1.0f); this.base.setLacunarity(2.12f); this.base.setOctaves(8); this.base.setScale(0.02125f); this.base.addModulator(new NoiseModulator() { @Override public float value(float... in) { return ShaderUtils.clamp(in[0] * 0.5f + 0.5f, 0, 1); } }); FilteredBasis ground = new FilteredBasis(this.base); this.perturb = new PerturbFilter(); this.perturb.setMagnitude(0.119f); this.therm = new OptimizedErode(); this.therm.setRadius(5); this.therm.setTalus(0.011f); this.smooth = new SmoothFilter(); this.smooth.setRadius(1); this.smooth.setEffect(0.7f); this.iterate = new IterativeFilter(); this.iterate.addPreFilter(this.perturb); this.iterate.addPostFilter(this.smooth); this.iterate.setFilter(this.therm); this.iterate.setIterations(1); ground.addPreFilter(this.iterate); this.terrain = new TerrainGrid("terrain", 33, 129, new FractalTileLoader(ground, 256f)); this.terrain.setMaterial(this.mat_terrain); this.terrain.setLocalTranslation(0, 0, 0); this.terrain.setLocalScale(2f, 1f, 2f); this.rootNode.attachChild(this.terrain); TerrainLodControl control = new TerrainGridLodControl(this.terrain, this.getCamera()); control.setLodCalculator(new DistanceLodCalculator(33, 2.7f)); // patch size, and a multiplier this.terrain.addControl(control); this.getCamera().setLocation(new Vector3f(0, 300, 0)); this.viewPort.setBackgroundColor(new ColorRGBA(0.7f, 0.8f, 1f, 1f)); }
Example #9
Source File: TerrainTestModifyHeight.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 4 votes |
private void createTerrainGrid() { // TERRAIN TEXTURE material matTerrain = new Material(this.assetManager, "Common/MatDefs/Terrain/HeightBasedTerrain.j3md"); // Parameters to material: // regionXColorMap: X = 1..4 the texture that should be appliad to state X // regionX: a Vector3f containing the following information: // regionX.x: the start height of the region // regionX.y: the end height of the region // regionX.z: the texture scale for the region // it might not be the most elegant way for storing these 3 values, but it packs the data nicely :) // slopeColorMap: the texture to be used for cliffs, and steep mountain sites // slopeTileFactor: the texture scale for slopes // terrainSize: the total size of the terrain (used for scaling the texture) // GRASS texture Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg"); grass.setWrap(WrapMode.Repeat); matTerrain.setTexture("region1ColorMap", grass); matTerrain.setVector3("region1", new Vector3f(88, 200, this.grassScale)); // DIRT texture Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg"); dirt.setWrap(WrapMode.Repeat); matTerrain.setTexture("region2ColorMap", dirt); matTerrain.setVector3("region2", new Vector3f(0, 90, this.dirtScale)); // ROCK texture Texture rock = assetManager.loadTexture("Textures/Terrain/Rock2/rock.jpg"); rock.setWrap(WrapMode.Repeat); matTerrain.setTexture("region3ColorMap", rock); matTerrain.setVector3("region3", new Vector3f(198, 260, this.rockScale)); matTerrain.setTexture("region4ColorMap", rock); matTerrain.setVector3("region4", new Vector3f(198, 260, this.rockScale)); matTerrain.setTexture("slopeColorMap", rock); matTerrain.setFloat("slopeTileFactor", 32); matTerrain.setFloat("terrainSize", 513); FractalSum base = new FractalSum(); base.setRoughness(0.7f); base.setFrequency(1.0f); base.setAmplitude(1.0f); base.setLacunarity(2.12f); base.setOctaves(8); base.setScale(0.02125f); base.addModulator(new NoiseModulator() { @Override public float value(float... in) { return ShaderUtils.clamp(in[0] * 0.5f + 0.5f, 0, 1); } }); FilteredBasis ground = new FilteredBasis(base); PerturbFilter perturb = new PerturbFilter(); perturb.setMagnitude(0.119f); OptimizedErode therm = new OptimizedErode(); therm.setRadius(5); therm.setTalus(0.011f); SmoothFilter smooth = new SmoothFilter(); smooth.setRadius(1); smooth.setEffect(0.7f); IterativeFilter iterate = new IterativeFilter(); iterate.addPreFilter(perturb); iterate.addPostFilter(smooth); iterate.setFilter(therm); iterate.setIterations(1); ground.addPreFilter(iterate); this.terrain = new TerrainGrid("terrain", 65, 257, new FractalTileLoader(ground, 256f)); terrain.setMaterial(matTerrain); terrain.setLocalTranslation(0, 0, 0); terrain.setLocalScale(2f, 1f, 2f); rootNode.attachChild(this.terrain); TerrainLodControl control = new TerrainLodControl(this.terrain, getCamera()); this.terrain.addControl(control); }
Example #10
Source File: AddTerrainAction.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 4 votes |
protected Spatial doCreateTerrain(Node parent, int totalSize, int patchSize, int alphaTextureSize, float[] heightmapData, String sceneName, org.openide.nodes.Node selectedNode) throws IOException { final ProjectAssetManager manager = selectedNode.getLookup().lookup(ProjectAssetManager.class); Terrain terrain = new TerrainQuad("terrain-"+sceneName, patchSize, totalSize, heightmapData); //TODO make this pluggable for different Terrain implementations com.jme3.material.Material mat = new com.jme3.material.Material(manager, "Common/MatDefs/Terrain/TerrainLighting.j3md"); String assetFolder = ""; if (manager != null && manager instanceof ProjectAssetManager) assetFolder = ((ProjectAssetManager)manager).getAssetFolderName(); // write out 3 alpha blend images for (int i=0; i<TerrainEditorController.NUM_ALPHA_TEXTURES; i++) { BufferedImage alphaBlend = new BufferedImage(alphaTextureSize, alphaTextureSize, BufferedImage.TYPE_INT_ARGB); if (i == 0) { // the first alpha level should be opaque so we see the first texture over the whole terrain for (int h=0; h<alphaTextureSize; h++) for (int w=0; w<alphaTextureSize; w++) alphaBlend.setRGB(w, h, 0x00FF0000);//argb } File alphaFolder = new File(assetFolder+"/Textures/terrain-alpha/"); if (!alphaFolder.exists()) alphaFolder.mkdir(); String alphaBlendFileName = "/Textures/terrain-alpha/"+sceneName+"-"+((Node)terrain).getName()+"-alphablend"+i+".png"; File alphaImageFile = new File(assetFolder+alphaBlendFileName); ImageIO.write(alphaBlend, "png", alphaImageFile); Texture tex = manager.loadAsset(new TextureKey(alphaBlendFileName, false)); if (i == 0) mat.setTexture("AlphaMap", tex); else if (i == 1) mat.setTexture("AlphaMap_1", tex); else if (i == 2) mat.setTexture("AlphaMap_2", tex); } Texture defaultTexture = manager.loadTexture(TerrainEditorController.DEFAULT_TERRAIN_TEXTURE); // copy the default texture to the assets folder if it doesn't exist there yet String dirtTextureName = "/Textures/dirt.jpg"; File dirtTextureFile = new File(assetFolder+dirtTextureName); if (!dirtTextureFile.exists()) { BufferedImage bi = ImageToAwt.convert(defaultTexture.getImage(), false, true, 0); ImageIO.write(bi, "jpg", dirtTextureFile); } // give the first layer default texture Texture dirtTexture = manager.loadTexture(dirtTextureName); dirtTexture.setWrap(WrapMode.Repeat); mat.setTexture("DiffuseMap", dirtTexture); mat.setFloat("DiffuseMap_0_scale", TerrainEditorController.DEFAULT_TEXTURE_SCALE); mat.setBoolean("WardIso", true); ((Node)terrain).setMaterial(mat); ((Node)terrain).setModelBound(new BoundingBox()); ((Node)terrain).updateModelBound(); ((Node)terrain).setLocalTranslation(0, 0, 0); ((Node)terrain).setLocalScale(1f, 1f, 1f); // add the lod control TerrainLodControl control = new TerrainLodControl(terrain, SceneApplication.getApplication().getCamera()); control.setLodCalculator(new DistanceLodCalculator(patchSize, 2.7f)); ((Node)terrain).addControl(control); parent.attachChild((Node)terrain); //setNeedsSave(true); //addSpatialUndo(parent, (Node)terrain, jmeNodeParent); return (Spatial)terrain; }
Example #11
Source File: JmeTerrainLodControl.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 4 votes |
public Class getExplorerObjectClass() { return TerrainLodControl.class; }
Example #12
Source File: JmeTerrainLodControl.java From MikuMikuStudio with BSD 2-Clause "Simplified" License | 4 votes |
public TerrainLodControlChildren(TerrainLodControl control) { this.control = control; }