Home | History | Annotate | Download | only in heightmap
      1 /*
      2  * To change this template, choose Tools | Templates
      3  * and open the template in the editor.
      4  */
      5 package com.jme3.terrain.heightmap;
      6 
      7 import com.jme3.asset.AssetManager;
      8 import com.jme3.asset.AssetNotFoundException;
      9 import com.jme3.asset.TextureKey;
     10 import com.jme3.math.Vector3f;
     11 import com.jme3.texture.Texture;
     12 import java.util.logging.Level;
     13 import java.util.logging.Logger;
     14 
     15 /**
     16  * Loads Terrain grid tiles with image heightmaps.
     17  * By default it expects a 16-bit grayscale image as the heightmap, but
     18  * you can also call setImageType(BufferedImage.TYPE_) to set it to be a different
     19  * image type. If you do this, you must also set a custom ImageHeightmap that will
     20  * understand and be able to parse the image. By default if you pass in an image of type
     21  * BufferedImage.TYPE_3BYTE_BGR, it will use the ImageBasedHeightMap for you.
     22  *
     23  * @author Anthyon, Brent Owens
     24  */
     25 @Deprecated
     26 /**
     27  * @Deprecated in favor of ImageTileLoader
     28  */
     29 public class ImageBasedHeightMapGrid implements HeightMapGrid {
     30 
     31     private static final Logger logger = Logger.getLogger(ImageBasedHeightMapGrid.class.getName());
     32     private final AssetManager assetManager;
     33     private final Namer namer;
     34     private int size;
     35 
     36 
     37     public ImageBasedHeightMapGrid(final String textureBase, final String textureExt, AssetManager assetManager) {
     38         this(assetManager, new Namer() {
     39 
     40             public String getName(int x, int y) {
     41                 return textureBase + "_" + x + "_" + y + "." + textureExt;
     42             }
     43         });
     44     }
     45 
     46     public ImageBasedHeightMapGrid(AssetManager assetManager, Namer namer) {
     47         this.assetManager = assetManager;
     48         this.namer = namer;
     49     }
     50 
     51     public HeightMap getHeightMapAt(Vector3f location) {
     52         // HEIGHTMAP image (for the terrain heightmap)
     53         int x = (int) location.x;
     54         int z = (int) location.z;
     55 
     56         AbstractHeightMap heightmap = null;
     57         //BufferedImage im = null;
     58 
     59         try {
     60             String name = namer.getName(x, z);
     61             logger.log(Level.INFO, "Loading heightmap from file: {0}", name);
     62             final Texture texture = assetManager.loadTexture(new TextureKey(name));
     63 
     64             // CREATE HEIGHTMAP
     65             heightmap = new ImageBasedHeightMap(texture.getImage());
     66 
     67             heightmap.setHeightScale(1);
     68             heightmap.load();
     69 
     70         } catch (AssetNotFoundException e) {
     71             logger.log(Level.SEVERE, "Asset Not found! ", e);
     72         }
     73         return heightmap;
     74     }
     75 
     76     public void setSize(int size) {
     77         this.size = size - 1;
     78     }
     79 }
     80