我对BufferGeometryUtils.mergeVertices方法有个奇怪的问题
我从一个弹琴中取出一个简单的立方体,并执行了mergeVertices,而mergeVertices似乎并没有像它应该的那样合并所有相同的顶点。请参阅https://jsfiddle.net/tomfree/vpdwmycn/
例如,在indexGeometry中由mergeVertices返回的顶点是
Index 0 = (-1, -1, 1, )
index 1 = (1, -1, 1,)
index 2= (-1, 1, 1, )
index 3= (1, 1, 1,)
index 4= (1, -1, 1)也就是说,位置1和位置4的顶点似乎是相同的,但据我理解,不应该在mergeVertices之后。我很确定我错过了某事物。有人能把我引向正确的方向吗?
干杯汤姆
ps:也作为https://discourse.threejs.org/t/buffergeometryutils-mergevertices-seems-not-to-merge-all-identical-vertices/33890在three.js论坛上发布
发布于 2022-01-21 22:10:16
合并进程正在按预期运行。如果您查看原始geometry的每个属性的计数,您将得到36个,但是如果查看合并的indexedGeo的每个属性的计数,您将得到24个:
console.log(geometry.getAttribute("position").count); // 36
console.log(indexedGeo.getAttribute("position").count); // 24您遇到的问题是,合并方法在合并之前查看所有属性。以你为例,position, normal, uv。一个盒子的角有3个顶点,每个顶点都有自己的正常指向3个方向(例如,一个指向上,一个向右,一个向前)。由于每个顶点包含关于如何呈现其各自表面的唯一normal数据,因此不能合并这些顶点。即使他们的地位是一样的,其他的属性也是不同的。
https://stackoverflow.com/questions/70798874
复制相似问题