我试图优化一个场景,我根据图像的像素数据渲染立方体:
http://jsfiddle.net/majman/4sukB/
代码只是检查图像中的每个像素并创建&相应地定位立方体网格。
但是,正如您可以看到的那样,如果您打开线框,则会有大量不必要的内部面。
我正在使用mergeVertices
以及THREE.GeometryUtils.merge
- 所以事情已部分优化。
我跑过this approach比较合并几何体的所有面,但由于每个立方体面现在都是一对三面体 - 它们很难比较,因为相邻面的两个三角形将是翻转。
我也看过了我的世界的例子,但是我已经能够绕过那个方法。
答案 0 :(得分:2)
好的,在WestLangley的帮助下 - 我能够到达那里。
http://jsfiddle.net/majman/4sukB/2/
采取一些摆弄来弄清楚在buildPlane中调整哪些面。之后,比较质心相对简单:
function removeDuplicateFaces(geometry){
for(var i=0; i<geometry.faces.length; i++){
var centroid = geometry.faces[i].centroid;
for(var j=0; j < i; j++){
var f2 = geometry.faces[j];
if( f2 !== undefined ){
var centroid2 = f2.centroid;
if(centroid.equals(centroid2)){
delete geometry.faces[i];
delete geometry.faces[j];
}
}
}
}
geometry.faces = geometry.faces.filter( function(a){ return a!== undefined });
return geometry;
}