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