作为以下内容的延续: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)行,看看发生了什么。
答案 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/