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

时间:2015-11-18 12:56:37

标签: opengl math graphics direct3d glm-math

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

是否有slerp和lerp以外的插值方法?

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

1 个答案:

答案 0 :(得分:4)

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

    $html = file_get_contents('https://instagram.com/apple/');
    preg_match('/_sharedData = ({.*);<\/script>/', $html, $matches);
    $profile_data = json_decode($matches[1])->entry_data->ProfilePage[0]->graphql->user;

基本上它们是相同的,除了 // 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不关心并且可能采取相反的更长的路径。

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