2014-09-12 71 views
1

我有scenemeshes和目标object三个js获取mesh.lookAt(object)的坐标;

当我建立

mesh.lookAt(对象)

啮合正确地面向对象的。

如何在另一个网格上重复此网格的旋转以强制另一个网格面向相同的方向(不是同一个对象,但与第一个网格具有相同的方向)?

我怎样才能获得第一个的旋转坐标网格

我怎样才能得到这个坐标,而不需要创建网格和订单mesh.lookAt(object)。这意味着只需要计算这个坐标而不需要在某个对象上使用它?

UPDATE: 唯一可能的解决方案是创建新的THREE.Object3D()和使用object.lookAt(target)。然后对所有后来加载的对象重复旋转,如:new_object.rotation.set(object.rotation.x,object.rotation.y,object.rotation.z) 您将只创建一个对象,而不是大量无用的Vector3-s。

不要使用new_object.rotation = object.rotation它是功能性解决方案,但变量保持连接。更改object轮换,也会更新new_object.rotation(渲染器正在更新每帧的所有值)。

回答

1

您可以将其他网格物体的局部旋转设置为正确方向的机械装置的局部旋转。

anyOtherMesh.rotation = mesh.rotation; 
+0

嗨,THX,但我怎样才能访问如果我没有这个对象的旋转值,我的东西,我想知道,并获得旋转的值,并适用于第二个网格,但我不想旋转第一个网格 – Martin 2014-09-14 17:25:04

+0

真实情况:我有船,在开始之前我使用(object.lookAt(myWayTarget),但会跳到旅行的位置,这看起来很丑)我需要动画旋转。这就是为什么我需要一个坐标之前是船只旋转到动态平稳地移动到这个旋转。 制作另一个对象,旋转它并使用AnotherObject.rotation作为动画的完成坐标不会很明智,但我找不到另一种方法。 – Martin 2014-09-14 17:31:50

0

怎么样一个 的lookAt(新THREE.Vector3(target.position.x,target.position.y,target.position.z) ?

+0

这三个问题中的哪一个会提供这个地址? – 2015-09-10 00:17:59

+0

更新的问题与最知名的解决方案。 – Martin 2015-09-14 10:58:32

+0

@paul它意味着每个旋转对象上的每个帧都有一个新的vector3。我认为这是一个微不足道的行动,应该更节约成本。在这种情况下,您需要总是创建新的Vector,并使用lookAt函数重新计算矩阵旋转,当您的结果已经完成并从第一个对象准备就绪时... – Martin 2015-09-14 11:02:01