【问题标题】:Quaternion, How to rotate object slowly?四元数,如何缓慢旋转物体?
【发布时间】:2016-05-03 06:23:15
【问题描述】:

我使用 Unity 5.3.4 和 Oculus VR 并在 VR 环境中实现应用程序。

我想使用Quaternion 缓慢旋转一个对象。例如,当我将头向右旋转 180 度时,MainCamera 会旋转 90 度。

在 Unity 中,Oculus-VR 的跟踪输入会自动计算并返回到Quaternion 数据。

void Update()
{
    transform.localRotation = UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye);;
}

所以我将使用这个Quaternion 旋转相机。但我不知道如何慢慢旋转。

我试图计算算术运算,例如乘法,除法,到Quaternion。但它不起作用

Quaternion如何计算?

【问题讨论】:

  • 理论上(我的头脑理论)你应该能够通过调整旧旋转和新接收到的四元数之间的四元数,t = 0.5

标签: unity3d rotation quaternions


【解决方案1】:

只需使用:

transform.localRotation =Quaternion.Lerp( transform.localRotation, UnityEngine.VR.InputTracking.GetLocalRotation(UnityEngine.VR.VRNode.CenterEye), Time.deltaTime);

【讨论】:

    【解决方案2】:

    试试这个
    Quaternion euler = new Quaternion(); euler.eulerAngles = new Vector3(0,HeadRotation,0); Camera.main.transform.Rotate(euler.eulerAngles);

    【讨论】:

    • 我认为yes的重点是,如果你直接在Camera.main.transform.rotate中使用vector3,它会更干净。此外,“头部旋转”作为表达式不是有效的 C#。
    • @SamWalls 我也质疑它的效率,从欧拉角创建四元数并将它们取回都涉及计算。
    • 那么谁给了它一个大拇指呢??我不明白它有什么效率低下。@是的,你在哪里提到你已经有了欧拉角。
    • @yes 请注意,计算也涉及将所有计算写在一行中,你所说的没有逻辑。
    • @LumbusterTick idk 这个“所有计算都在一行中”应该是什么意思。从四元数获得欧拉或反之亦然需要大量计算,请在此处阅读en.wikipedia.org/wiki/…
    猜你喜欢
    • 2021-12-13
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多