three.js - 在球体上的three.js中翻转法线

标签 three.js flip normals

我一直在四处寻找,但还没有找到我的问题的任何真正好的答案..
问题是我有这个球体..只是一个基本的球体,我想翻转法线
球体获得一种“空心/雕刻效果”,然后将我的纹理应用到球体的“内部”。关于如何翻转法线的任何想法?

另外..如果在three.js中不可能做到这一点..是否可以导入一个法线已经翻转的模型并获得我正在寻找的效果?

最佳答案

您可以通过反转面的缠绕顺序来翻转几何体中的法线。然后,您必须修复 UV。

for ( var i = 0; i < geometry.faces.length; i ++ ) {

    var face = geometry.faces[ i ];
    var temp = face.a;
    face.a = face.c;
    face.c = temp;

}

geometry.computeFaceNormals();
geometry.computeVertexNormals();

var faceVertexUvs = geometry.faceVertexUvs[ 0 ];
for ( var i = 0; i < faceVertexUvs.length; i ++ ) {

    var temp = faceVertexUvs[ i ][ 0 ];
    faceVertexUvs[ i ][ 0 ] = faceVertexUvs[ i ][ 2 ];
    faceVertexUvs[ i ][ 2 ] = temp;

}

但是,您只需设置 Material.side = THREE.BackSide 即可获得相同的效果。 , 或 Material.side = THREE.DoubleSide .

在任何一种情况下,您的纹理都将被翻转。你可以预先翻转你的纹理,或者在three.js之外构建一个模型并导入它。

三.js r.65

关于three.js - 在球体上的three.js中翻转法线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462851/

相关文章:

raspberry-pi - 树莓派。当我使用 GPU 播放视频时,gstreamer-1.0 会翻转视频。 Videoflip 出现错误

ios - 多个翻转动画不起作用

c++ - 如何统一法线方向

javascript - Three.js - 获取鼠标点击的X、Y、Z坐标

javascript - 网格相对于其父级的定位

html - 使用GWT和CSS,如何垂直翻转输入元素中偶数位置的所有字母?

opengl - 如何为VBO生成法线?

javascript - 如何使用 3.JS 和 Leap Motion 制作心跳?

three.js - 将相机位置移动限制到特定 3D 对象的区域

math - 在 3D 空间中任意变换的等边三角形的法线