首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >翻转几何后的翻转法Three.JS

翻转几何后的翻转法Three.JS
EN

Stack Overflow用户
提问于 2014-09-11 19:24:37
回答 3查看 3.4K关注 0票数 3

我遵循了这个堆栈溢出示例:ThreeJS geometry flipping

我成功地反映了我的几何图形。但是现在我的几何图形是黑色的。我能在几何学的同时翻转我的法线来纠正这个问题吗?还是应该从一开始就用不同的方法来反映几何学?

编辑:

尝试将更新添加到此代码中,但仍然具有倒几何图形。

代码语言:javascript
复制
#transformation
mS.elements[5] = -1;
mesh.applyMatrix(mS);

#updates
mesh.geometry.verticesNeedUpdate = true;
mesh.geometry.normalsNeedUpdate = true;
mesh.geometry.computeBoundingSphere();
mesh.geometry.computeFaceNormals();
mesh.geometry.computeVertexNormals();

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-14 14:39:33

代码语言:javascript
复制
mesh.geometry.verticesNeedUpdate = true;
mesh.geometry.normalsNeedUpdate = true;
mesh.geometry.computeBoundingSphere();
mesh.geometry.computeFaceNormals();
mesh.geometry.computeVertexNormals();

https://github.com/mrdoob/three.js/wiki/Updates

票数 3
EN

Stack Overflow用户

发布于 2017-11-03 10:36:24

这是一个老问题,但对于那些仍然迷失的人来说:面正常是通过观察顶点的逆时针顺序来计算的。

因此,如果需要翻转法线,就必须重新排序分配给人脸的顶点。例如:

代码语言:javascript
复制
var tmp;
for(var f = 0; f < geometry.faces.length; f++) {
    tmp = geometry.faces[f].clone();
    geometry.faces[f].a = tmp.c;
    geometry.faces[f].c = tmp.a;
}
票数 4
EN

Stack Overflow用户

发布于 2014-09-17 14:08:14

你可以试试:

代码语言:javascript
复制
mesh.geometry.reverse(computeFaceNormals());
mesh.geometry.reverse(computeVertexNormals());
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25795538

复制
相关文章

相似问题

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