是否存在用于骨架动画关键帧之间插值的标准插值方法?现在我使用glm::slerp()
。
是否有slerp和lerp以外的插值方法?
根据glm docs,glm::mix(quat1, quat2, a)
执行两个四元数的球面线性插值,glm::slerp(quat1, quat2, a)
执行"短路径球面线性插值"两个四元数。有什么区别?
答案 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
不关心并且可能采取相反的更长的路径。
还有许多其他插值方法;可能最先进的是贝塞尔曲线(使用我最常用的动画软件),但它需要相当多的内存和计算能力。