1

作为以下内容的延续:将 一个物体指向远处的物体

我试图让网格的表面指向另一个对象。每当远处的物体移动时,我希望一个远处的物体指向一个近处的物体。

这是正在发生的事情的示例:http: //jsfiddle.net/UsVUv/

1)我创建了 2 个网格对象。2)由于远网格面朝上,我旋转它以便从相机可以看到它。-> farMesh.rotation = new THREE.Vector3(Math.PI/2, 0, 0); 3)当远网格移动时,我调用以下命令使其继续查看近网格。远网格的面不会看近网格,但其平面的边缘会看。-> farMesh.lookAt(nearMesh.position); 4)然后我尝试将网格向后旋转,使其再次面向相机,但这会消除lookAt所做的旋转。-> farMesh.rotation = new THREE.Vector3(Math.PI/2, 0, 0);

您可以注释掉示例中的 1)、2) 和 3) 行以查看发生了什么。

4

1 回答 1

2

是的,farMesh.lookAt()farMesh.rotation正在相互竞争。

相反,您需要做的farMesh是在创建平面几何图形后立即旋转它,applyMatrix()如下所示:

    farMesh.geometry.applyMatrix( new THREE.Matrix4().makeRotationX( Math.PI / 2 ) );

总而言之,applyMatrix()转换对象的几何形状,并lookAt()设置对象的rotation矢量。

这是一个更新的小提琴:http: //jsfiddle.net/UsVUv/1/

于 2012-07-16T16:57:51.350 回答