策略:
1.先通过THREE.PlaneGeometry创建一个平面;
2.然后修改这个平面的vertices的z值,z值随机化,这样山峰就高高低低层次错落。
注意:
山地边缘的vertices[i].z值要统一为0,这样边缘才不至于翘起破空。
//随机山地地形生成
AFRAME.registerGeometry('hills', {
init: function () {
var terrainGeometry = new THREE.PlaneGeometry( 100, 100, 9,9 );
//统计顶点总数
var verticesCount=terrainGeometry.vertices.length;
console.log("vertices count:"+verticesCount);
for(var i=0;i<verticesCount;i++){
//地形平面边缘不变形
var iMod10=i%10;
if(iMod10==9||iMod10==0||i<=10||i>=90){
terrainGeometry.vertices[i].z=0;
}else{
terrainGeometry.vertices[i].z=Math.floor(Math.random()*30);
}
}
terrainGeometry.rotateX(-Math.PI/2);
this.geometry=terrainGeometry;
}
});
之后再在<a-scene>中插入: