opengl - 实时图形中的骨骼动画插值

标签 opengl math graphics direct3d glm-math

骨骼动画关键帧之间的插值是否有标准的插值方法?现在我正在使用 glm::slerp()

除了slerp和lerp之外还有插值方法吗?

根据glm docsglm::mix(quat1, quat2, a) 对两个四元数进行球面线性插值,glm::slerp(quat1, quat2, a) 进行“短路径”两个四元数的“球面线性插值”。有什么区别?

最佳答案

如有疑问,look来源code 。唯一的区别是这部分(除了不同的 x/y/z 命名):

    // If cosTheta < 0, the interpolation will take the long way around the sphere. 
    // To fix this, one quat must be negated.
    if (cosTheta < T(0))
    {
        z        = -y;
        cosTheta = -cosTheta;
    }

基本上它们是相同的,除了 slerp 确保插值将在球体上采取较短的路径,而 mix 不关心并且可能采取相反的较长路径。

还有很多其他的插值方法;可能最先进的是贝塞尔曲线(我使用最多的动画软件),但它需要更多的内存和计算能力。

关于opengl - 实时图形中的骨骼动画插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33780690/

相关文章:

c++ - 刷新显示每个运动(速度)(openGL)

c++ - 有没有更简单的方法来使用 C++ 和 OpenGL 显示文本?

python - 球体表面点的均匀分布?

javascript - 在 d3 或 javascript 中的 svg 圆区域内生成随机点

java - 使用 Java3D/其他 3D API 创建 'laserlights'

opengl - 如何将鱼眼图像转换为 5 或 6 立方图像

c++ - gluUnproject 问题/移动角色问题

c++ - 二维插值

javascript - 图表.org : how to draw scatterplots with full circle as symbol?

绘制ER图的Java图形二维库?