将网格的表面指向另一个对象

时间:2012-07-16 16:16:46

标签: three.js

作为以下内容的延续:Point one object to face a distant object

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

以下是正在发生的事情的示例: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)行,看看发生了什么。

1 个答案:

答案 0 :(得分: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/