首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ThreeCSG进行减法后,网格变得非常有角。

用ThreeCSG进行减法后,网格变得非常有角。
EN

Stack Overflow用户
提问于 2014-09-21 07:51:19
回答 1查看 831关注 0票数 0

当使用ThreeCSG从其他网格减缩网格时,我遇到了一个问题。我的主要网目是一个戒指,而要做底衬的网格是一个钻石。在处理到场景之前,看起来是这样的:网格很细。,但是减去网格后,环变成了角:网眼断裂。我确实使用了和以前一样的材料/阴影。下面是我使用的代码:

代码语言:javascript
复制
var ring_bsp = new ThreeBSP(ring);
var stone_bsp = new ThreeBSP(stone);
var substract_bsp = ring_bsp.subtract( stone_bsp );
var result = substract_bsp.toMesh( ringMaterial );

result.geometry.computeVertexNormals();

result.material.needsUpdate = true;
result.geometry.buffersNeedUpdate = true;
result.geometry.uvsNeedUpdate = true;

result.scale.x = result.scale.y = result.scale.z = 19;

scene.remove(ring);
scene.add(result);

更新一:如果删除“result.geometry.computeVertexNormals()”,则为;结果看起来甚至更糟:链接

更新二:我创建了一个最小情况的小提琴

更新三:在查看了更多问题和Wilts上一次更新之后,我看到在使用ThreeBSP之后,顶点被搞乱了。您可以在这个小提琴中很好地看到这一点。

更新四:问题似乎在"fromGeometry / toGeometry“函数中,因为如果我完全不执行任何子操作,就会得到相同的破网格。

EN

回答 1

Stack Overflow用户

发布于 2014-09-21 13:29:40

它看起来像是(一些)你的顶点法线在翻译过程中迷路了(把你的几何图形翻译成CSG,然后再翻译回Three.js)。您应该查看源代码,看看哪里出了问题。

更新1:

我查看了ThreeCSG.js的源代码,似乎有第48行的一个错误

它应该是:

代码语言:javascript
复制
vertex = new ThreeBSP.Vertex( vertex.x, vertex.y, vertex.z, face.vertexNormals[1], uvs );

vertexNormals的索引应该是1而不是2。也许这个错误会导致错误的导出结果。

更新2:

在转换到CSG之前,尝试更新几何图形的vertexNormals:

代码语言:javascript
复制
var geometry = ring.geometry;
geometry.computeFaceNormals();
geometry.computeVertexNormals();

备注.,您需要首先调用computeNormals()以获得正确的结果。

更新3:

在人脸从Three.js几何到CSG几何的转换中,ThreeBSP.Polygon.prototype.classifySide方法检查相邻面的顶点是否在正面、背面或共面到当前面。如果点是共面的,CSG面将被定义为一个有四个顶点点的面。由于这个过程,您的一些THREE.Face3被转换成一个四点CSG面。当稍后将其转换回THREE.Face3时,Face vertexNormals将与它们的初始值不同。

顶点被分类为FRONTBACKCOPLANAR,使用一个EPSILON值来比较顶点法线和面法线。如果差值太小,则认为顶点是共面的。通过增加ThreeBSP库中的EPSILON值,您可以控制精度。如果您将EPSILON设置为10,则您的三角形将永远不会被视为共面,并且转换结果将是正确的。

因此,在ThreeBSP库集的第5行:

代码语言:javascript
复制
EPSILON = 10,
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25957050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档