首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用插值的OpenGL ArcBall旋转和动画?

使用插值的OpenGL ArcBall旋转和动画?
EN

Stack Overflow用户
提问于 2012-01-04 15:53:16
回答 2查看 2K关注 0票数 2

在我的OpenGL应用程序中,我需要使用ArcBall旋转来使用鼠标旋转对象。

读完这篇文章后,我意识到我必须使用四元数-- http://www.gamedev.net/page/resources/_/technical/math-and-physics/quaternion-powers-r1095

我在这里找到了一个易于使用的实现-- http://www.codeproject.com/KB/openGL/virtualtrackball.aspx

但我的问题是,我还需要在保存的两个状态之间为我的对象设置动画。那就是-

状态(1)=(位置X1,位置Y1,位置Z1,旋转1);

状态(2)=(位置X2,位置Y2,位置Z2,旋转2);

*这些“旋转”是旋转矩阵

并且动画在n个步骤中完成。

类似视频中所示的内容- http://www.youtube.com/watch?v=rrUCBOlJdt4

如果我使用三个轴(滚动,俯仰,偏航)的三个独立的角度,我可以很容易地插值这些角度。但是,由于ArcBall使用旋转矩阵,我如何在状态1和State2之间插入旋转?

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-04 16:18:23

在内部使用矩阵或四元数进行旋转表示。使用滚转/俯仰/偏航,理论上你可以插入角度,但这并不是每次都有效-请阅读Gimbal lock

使用四元数旋转插值很容易-只需插值单个坐标(就像使用r/p/y角度一样),在必要时进行归一化。然后你必须调整你的渲染函数来使用四元数(但我假设你已经这样做了,因为你自己也提到了四元数)。

对于矩阵,插值并不是很好,几年前我一直在努力,我所能记得的就是我最终决定使用四元数。所以我不能给你这个建议,抱歉。

票数 2
EN

Stack Overflow用户

发布于 2012-01-04 16:43:24

使用四元数(SLERP)。旋转矩阵和欧拉角都不适合插值。

参见45:05 here (David Sachs, Google Tech Talk)

另请参阅Interpolating between rotation matrices

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8723642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档