【问题标题】:THREE Js Rotate Mesh on Y axis to face specific vector position三个 Js 在 Y 轴上旋转网格以面对特定的矢量位置
【发布时间】:2016-08-17 18:51:02
【问题描述】:

我大部分时间都在尝试在 Y 轴上旋转网格以面对特定的网格位置。

找到了一些方法,但没有一个对我有帮助。

这就是我所拥有的。

   var vector = new THREE.Vector3(0,0,5);
   var axis = new THREE.Vector3(0, 1, 0);
   turret.quaternion.setFromUnitVectors(axis, vector.clone().normalize());

所以我不确定我是否理解为什么炮塔不会旋转以面对特定的vector 位置。我还使用vec1.angleTo(vec2) 尝试使用欧拉旋转并将炮塔旋转到指定方向但没有成功。

如果有人能解释这应该如何工作以及如果我错了背后的逻辑是什么,我会非常高兴

【问题讨论】:

    标签: javascript three.js rotation


    【解决方案1】:

    这是THREE.Vector3 构造函数(Docs)

    Vector3( x, y, z )
    
    x -- Float the vector's x value 
    y -- Float the vector's y value 
    z -- Float the vector's z value
    

    您想在 Y 轴上旋转网格,但实际上是在 Z 轴上旋转,所以不是:

    var vector = new THREE.Vector3( 0, 0, 5);
    

    尝试:

    var vector = new THREE.Vector3( 0, 5, 0);
    

    【讨论】:

    • 也试过了,没有任何结果:(
    • 奇怪,这对我有用。你有什么错误吗?
    • 没有错误......看起来网格在它的 Y 轴上根本不会旋转
    • 由于某种原因,只要向量变量中有一个0,就不会发生旋转
    • 默认情况下,网格面向 Y 轴,因此即使您设置矢量 (0, 100, 0),您也不会看到任何旋转,因为它已经面向该方向。要查看它是否有效,请尝试 (5,5,0)。您应该会看到一些变化
    猜你喜欢
    • 2013-06-16
    • 1970-01-01
    • 2021-08-27
    • 2015-11-04
    • 2012-01-06
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2015-09-10
    相关资源
    最近更新 更多