Наша система анимации интерполирует между кадрами и преобразует в кватернионы и использует SLERP. Если матрицы не нормализованы (например, их сдавлены или растянуты по одной или нескольким осям), то мы нормализуем матрицы в мировом пространстве, принимая во внимание масштабы, перебираем между векторными масштабами и применяем это обратно к интерполированной матрице вращения в конец. Наш тест представляет собой вращающийся шар, который сжимается в мировом пространстве по вертикали.
Наш код интерполяции работает нормально, если есть только вращения или просто растяжение, но не когда они вместе. Мяч, кажется, сква sh в случайных направлениях.
Есть ли способ сделать это правильно? Я попытался просто интерполировать каждый элемент матрицы линейно, и на самом деле это было не так уж плохо - возможно, потому что две матрицы не разошлись так далеко - это анимация 30 кадров в секунду, но я знаю, что это не надежный способ сделать это.
Спасибо
Шон