在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的灰度分布产生的地形