首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferGeometryUtils.mergeVertices -似乎没有合并three.js中所有相同的顶点。

BufferGeometryUtils.mergeVertices -似乎没有合并three.js中所有相同的顶点。
EN

Stack Overflow用户
提问于 2022-01-21 09:14:26
回答 1查看 579关注 0票数 2

我对BufferGeometryUtils.mergeVertices方法有个奇怪的问题

我从一个弹琴中取出一个简单的立方体,并执行了mergeVertices,而mergeVertices似乎并没有像它应该的那样合并所有相同的顶点。请参阅https://jsfiddle.net/tomfree/vpdwmycn/

例如,在indexGeometry中由mergeVertices返回的顶点是

代码语言:javascript
复制
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论坛上发布

EN

Stack Overflow用户

回答已采纳

发布于 2022-01-21 22:10:16

合并进程正在按预期运行。如果您查看原始geometry的每个属性的计数,您将得到36个,但是如果查看合并的indexedGeo的每个属性的计数,您将得到24个:

代码语言:javascript
复制
console.log(geometry.getAttribute("position").count);    // 36
console.log(indexedGeo.getAttribute("position").count);  // 24

您遇到的问题是,合并方法在合并之前查看所有属性。以你为例,position, normal, uv。一个盒子的角有3个顶点,每个顶点都有自己的正常指向3个方向(例如,一个指向上,一个向右,一个向前)。由于每个顶点包含关于如何呈现其各自表面的唯一normal数据,因此不能合并这些顶点。即使他们的地位是一样的,其他的属性也是不同的。

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70798874

复制
相关文章

相似问题

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