Three.js法线更新对象旋转

时间:2015-02-26 11:56:57

标签: object rotation three.js mesh normals

我使用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是容器内一个网格的几何形状。

我只想检查每张脸是否都在“看着”相机。当我使用鼠标控件旋转容器但没有上面的旋转时,它工作正常。当我查看网格几何时,看起来当我进行容器旋转时,面的法线不会被更新。

我试过了:

        mesh[value].geometry.computeFaceNormals();
        mesh[value].geometry.computeVertexNormals();
容器旋转后在每个网格上

,但没有结果。

有人知道该怎么办吗?

1 个答案:

答案 0 :(得分:0)

必须更改相机位置,但不能更改网格容器,一切都很好