当前位置: 首页 > 知识库问答 >
问题:

带滑块的360°slerp水平旋转摄像机

鲁向明
2023-03-14

我正在尝试创建一个脚本,允许我通过水平滑块在0°-360°(y轴)范围内旋转相机,带有Slerp效果。相机只沿着一个轴旋转(我在一个房间的中间,我必须使用水平滑块转身)

我制作了两个脚本:第一个应用于参考立方体以获得旋转,第二个应用于腔室以获得Slerp效果,同时跟踪立方体的旋转。

360°立方体旋转脚本:

    public float speed;
    public Vector3 offset;
    public GameObject ObjectToRotate;

    public void SliderChanged(float speed)
    {
        ObjectToRotate.transform.rotation = Quaternion.Euler (speed*offset);
}

具有Slerp效果的摄像机旋转脚本:

    public Transform target;
    public float Speed = 0.1F;


    // Update is called once per frame
    void Update () {
        transform.rotation = Quaternion.Slerp (transform.rotation, target.rotation, Speed);     
    }
}

它可以工作,但有一些问题:如果我从左(0°)到右(359°)滑动太快,Slerp旋转不会继续正确,但似乎只旋转1°,好像它回来了一样。

我该怎么解决?谢谢

共有1个答案

周兴朝
2023-03-14

Slerp总是在方向之间选择最短的路径,所以如果您从0开始,并希望在359结束,那么您将无法通过所有这些值获得良好的旋转,但您将获得您已经看到的内容。

以下是我的解决方法:

>

  • 不要使用Transform数据从UI滑块传递到对象。只使用带有角度值的浮动。从UI获取它并将其作为目标旋转传递给对象。

    要旋转的对象将其上次旋转值存储为float。当你把它设定为新的目标时,它会每帧对这个浮动进行插值。假设你的旋转是0,现在你将目标设置为359,所以我们从0向正方向旋转。如果每帧的速度为10度,则以旋转10结束,并将其存储为最后一次旋转。

    如果旋转已更改,则使用角度值(10)计算新的四元数。

    这样就可以在线性空间中进行插值,其中0-359范围的行为与您预期的一样。然后,在插值之后,引入四元数,将该值用作旋转数据。

    顺便说一句:有了这个技巧,你也可以使用更大的范围,比如0-720,以能够做两个或更多的旋转。你不能用四元数做同样的事情。

  •  类似资料:
    • 我正在尝试旋转一个与这三个元素相关的2D对象(在GTA风格的小地图覆盖中)。js摄像机旋转。我的3D场景中的y值。 问题是相机返回的弧度。旋转y值有点奇怪,从0开始 有人知道如何将这些值转换或翻译成360个坐标吗? 我用的是透视相机和轨道控制。 提前谢谢!

    • 我正在尝试围绕我的模型旋转我的透视相机。模型位于中心(0,0,0)点。这是我的旋转相机方法: 我试着去中心,旋转5度,然后回到同样的距离。然而,旋转似乎不起作用,我不知道为什么,任何帮助都非常感谢。

    • 在我的应用程序中,用户从相机捕获图像或从图库中选择图像,然后将其转换为pdf并上载到服务器,现在我的问题是,从相机捕获的图像在某些设备上旋转,我有代码尝试解决此问题,但它不起作用 任何建议或问题在哪里,没有错误代码或任何东西

    • OpenGL总是围绕(0,0,0)旋转。但是我需要绕着相机旋转。我知道在GL中,没有相机,但是如果我翻译回(0,0,-6.0),它会绕着(0,0,0)旋转,而不是绕着(0,0,-6.0)旋转 所以我的问题是:如何在opengl和c中设置旋转中心 我已经找到了这篇文章:OpenGL围绕一个点旋转相机 显示此解决方案的地方: 旋转函数通常围绕原点旋转。要围绕另一个点P旋转,必须:平移(-P)旋转平移(

    • 我有一些问题添加滑块lightbox到滑块,它没有打开弹出窗口。在remove itemSelector img之后,它打开弹出窗口,但是src未定义。有什么提示吗? JS: HTML

    • 问题是我使用的是Slick Carousel,但每当我将div添加到Slick的脚本中时,我使用的是内容移动到不同的行中。 这就是当我将滚动div添加到Slick脚本时所发生的情况。 我几乎可以肯定这是一个CSS问题,但我已经尝试了很多,但不能使它工作。这是我的密码... 油滑 这是相关的CSS 这里有一个现场演示滚动到底部