gpt4 book ai didi

javascript - 删除 three.js 中的相邻面

转载 作者:行者123 更新时间:2023-11-29 14:52:28 30 4
gpt4 key购买 nike

我正在尝试优化一个场景,在该场景中,我根据图像的像素数据渲染立方体:

http://jsfiddle.net/majman/4sukB/

代码只是检查图像中的每个像素并相应地创建和定位立方体网格。

但是,正如您在打开线框时看到的那样,存在大量不必要的内部面。

我正在使用 mergeVertices 以及 THREE.GeometryUtils.merge - 所以事情已经部分优化。

我遇到了 this approach比较合并几何体的所有面,但因为每个立方体面现在都是一对三 Angular 形 - 它们很难比较,因为相邻面的两个三 Angular 形将被翻转。

我也看过 minecraft 的例子,但我无法理解这种方法。

最佳答案

好的,在 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;
}

关于javascript - 删除 three.js 中的相邻面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373816/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com