我本质上是在研究一个用于slerping的功能,虽然它有点工作,但它有一个奇怪的视角扭曲问题,我现在一直在努力解决这个问题。
Quaternion sLerp(Quaternion start, Quaternion end, float s)
{
float dot = qDot(start, end);
float theta = std::acos(dot);
float sTheta = std::sin(theta);
float w1 = sin((1.0f-s)*theta) / sTheta;
float w2 = sin(s*theta) / sTheta;
Quaternion Temp(0,0,0,0);
Temp = start*w1 + end*w2;
return Temp;
}
本质上它正在做的(或应该做的)只是在两个值之间滑动以提供旋转,并且由此产生的结果被转换为旋转矩阵。但是出了问题的是一个可怕的,可怕的拉伸视图......由于某种原因,在旋转过程中它拉伸了所有东西,从所有东西开始太长/太薄,然后在开始变瘦之前达到一个更短的中点。任何帮助都会很棒。