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