Quatf Tracker::CalculateTimeWarpMatrix(Quatf inFrom, Quatf inTo) { bool fromValid = inFrom.LengthSq() > 0.95f; bool toValid = inTo.LengthSq() > 0.95f; if (!fromValid) { MOJING_ERROR(g_APIlogger, "Invalid Srouce view rotate"); if (toValid) { inFrom = inTo; } else { inFrom = Quatf(0.0f, 0.0f, 0.0f, 1.0f); // just force identity } } if (!toValid) { MOJING_ERROR(g_APIlogger, "Invalid Targer view rotate"); if (fromValid) { inTo = inFrom; } else { inTo = Quatf(0.0f, 0.0f, 0.0f, 1.0f); // just force identity } } /************************************************************************ 注意: 下面的代码如果写成 (inFrom * inTo.Inverted()).Inverted(),那么预测的图像方向将与运动方 向一致,这就导致了运动时的卡顿。 /************************************************************************/ // 20170731 Quatf qFix = (inFrom * inTo.Inverted())/*.Inverted()*/; // qFix.z *= -1; return qFix; }