Three.js 对象旋转的法线更新
Three.js normals update on object rotation
我使用 3D 对象作为几个网格的容器。我正在使用正交相机。我像这样垂直旋转容器 90°:
meshContainer.rotation.x = 0;
meshContainer.rotation.y = - 90 * Math.PI / 180;
meshContainer.rotation.z = 0;
camera.updateProjectionMatrix();
我必须根据它们相对于相机的方向对容器内的网格进行操作。所以,我做了这个测试:
var vector = new THREE.Vector3( 0, 0, -1 );
vector.applyQuaternion(camera.quaternion);
if (vector.dot(geom.faces[i].normal) < 0) { ... }
goem 是容器内一个网格的几何形状。
我只想检查每张脸是否都是 'looking at' 相机。当我用鼠标控制旋转容器但不是像上面那样旋转时,它工作正常。当我查看网格几何体时,似乎在我进行容器旋转时面的法线没有更新。
我试过了:
mesh[value].geometry.computeFaceNormals();
mesh[value].geometry.computeVertexNormals();
在容器旋转后的每个网格上,但没有结果。
有人知道该怎么做吗?
必须更改相机位置但不更改网格容器,一切正常
我使用 3D 对象作为几个网格的容器。我正在使用正交相机。我像这样垂直旋转容器 90°:
meshContainer.rotation.x = 0;
meshContainer.rotation.y = - 90 * Math.PI / 180;
meshContainer.rotation.z = 0;
camera.updateProjectionMatrix();
我必须根据它们相对于相机的方向对容器内的网格进行操作。所以,我做了这个测试:
var vector = new THREE.Vector3( 0, 0, -1 );
vector.applyQuaternion(camera.quaternion);
if (vector.dot(geom.faces[i].normal) < 0) { ... }
goem 是容器内一个网格的几何形状。
我只想检查每张脸是否都是 'looking at' 相机。当我用鼠标控制旋转容器但不是像上面那样旋转时,它工作正常。当我查看网格几何体时,似乎在我进行容器旋转时面的法线没有更新。
我试过了:
mesh[value].geometry.computeFaceNormals();
mesh[value].geometry.computeVertexNormals();
在容器旋转后的每个网格上,但没有结果。
有人知道该怎么做吗?
必须更改相机位置但不更改网格容器,一切正常