jme地图terrain的学习

在jmokey里面,所有的东西都是trimesh,terrain也是有三角形拼接的. 有两个类TerrainBlock 和TerrainPage

 以TerrainBlock为例:

        TerrainBlock tb=new TerrainBlock("block",4,//大小  4X4
                new Vector3f(3,3,3),    //各个轴方向的放大倍数
                map,                             //各个点的高度,个数必须是平方数
                new Vector3f(0,0,0),    //位置
                false);                           //这里还不太懂

 

map是个数组.代表地图上每个点的高度,复杂的地图不可能人去写.一般这样生成.

        MidPointHeightMap mph=new MidPointHeightMap(64,1.7f);
                                                                           //64是大小,(64X64)
                                                                           //1.7f是平滑程度,越大越平滑,如果是零,将是棱角构成的地形
        //建立地形时,这样做.
                TerrainBlock tb=new TerrainBlock("midpoint block",mph.getSize(),
                new Vector3f(1,.11f,1),
                mph.getHeightMap(),
                new Vector3f(0,-25,0),false);
          //接着给地形贴纹理图,就比较像个地形了.

 

在创建地形时还可以根据图像的灰度设置,越亮的地方越高,越暗的地方越低.

URL grayScale=HelloTerrain.class.getClassLoader().getResource("jmetest/data/texture/bubble.jpg");

 
   这是bubble

 

        ImageBasedHeightMap ib=new ImageBasedHeightMap(
                new ImageIcon(grayScale).getImage()
        );
        // Create a terrain block from the image's grey scale
        TerrainBlock tb=new TerrainBlock("image icon",ib.getSize(),
                new Vector3f(.5f,.05f,.5f),ib.getHeightMap(),
                new Vector3f(0,0,0),false);

 这是通过bubble的灰度分布产生的地形

 

 

 

 

 

 

 

你可能感兴趣的:(idea)