【问题标题】:three js getting coordinates of mesh.lookAt(object);三个js获取mesh.lookAt(object)的坐标;
【发布时间】:2015-09-14 18:57:24
【问题描述】:

我有scene,meshes 和目标object

当我设置时

mesh.lookAt(对象)

mesh正确面对对象

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

如何获取第一个网格的旋转坐标?

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

更新: 唯一可能的解决方案是创建新的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(渲染器每帧更新所有值)。

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    您可以将其他网格的局部旋转设置为朝向正确方向的机甲的局部旋转。

    anyOtherMesh.rotation = mesh.rotation;
    

    【讨论】:

    • 嗨,谢谢,但是如果我没有旋转该对象,我如何访问该值。我想知道并获取旋转值并应用于第二个网格,但我不想旋转第一个网格。
    • 真实情况:我有船,在开始飞行之前我需要将船旋转到目标。我正在使用 (object.lookAt(myWayTarget) 但这会跳到旅行位置,这看起来很难看) 我需要为该旋转设置动画。这就是为什么我需要一个坐标之前的原因是船完全旋转,以动画平滑移动到这个旋转。制作另一个对象,旋转它并使用 AnotherObject.rotation 作为动画的完成坐标并不聪明,但我找不到其他方法。
    【解决方案2】:

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

    【讨论】:

    • 这解决了三个问题中的哪一个?
    • 用最知名的解决方案更新了问题。
    • @paul 表示每个旋转对象上的每一帧都有新的 vector3。我认为这是一个微不足道的动作,应该更节省成本。在这种情况下,当您从第一个对象完成并准备好结果时,您需要始终创建新向量并使用 lookAt 函数重新计算矩阵旋转...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2016-12-24
    • 2017-11-13
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多