所以我有一个运行良好的高度图系统,但是由于 THREE.js 已更新到 r60,它删除了 Face4 对象,所以我遇到了问题。
我的代码是这样的:
this.buildGeometry = function(){
var geo, len, i, f, y;
geo = new THREE.PlaneGeometry(3000, 3000, 128, 128);
geo.dynamic = true;
geo.applyMatrix(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
this.getHeightData('heightmap.png', function (data) {
len = geo.faces.length;
for(i=0;i<len;i++){
f = geo.faces[i];
if( f ){
y = (data[i].r + data[i].g + data[i].b) / 2;
geo.vertices[f.a].y = y;
geo.vertices[f.b].y = y;
geo.vertices[f.c].y = y;
geo.vertices[f.d].y = y;
}
}
geo.computeFaceNormals();
geo.computeCentroids();
mesh = new THREE.Mesh(geo, new THREE.MeshBasicMaterial({color:0xff0000}) );
scene.add(mesh);
});
};
这很好用,因为一个像素代表每张脸。既然所有的脸都是三角剖分的,那么这是怎么做到的呢?
同样,我也使用图像映射来进行模型定位。每个像素都与各自的 Face4 匹配,并且所需的网格被放置在其质心处。现在怎么能做到这一点?
我真的很怀念能够更新库并且不想再被困在 r59 =[