Люди добрые, знакомые с UnrealScript! Обращаюсь к вам за помощью.
Задача следующая: Есть текущий вектор положения персонажа, заданный координатной системой сверху на рисунке, и есть вектор нормали поверхности, также заданный координатной системой снизу на рисунке. Эти координатные системы в режиме отладки рисую следующим образом:
Code
DrawDebugCoordinateSystem( Pawn.Location, Pawn.Rotation, 10.0f);
DrawDebugCoordinateSystem( HitLocation, Rotator(HitNormal), 10.0f);
Нужно найти Rotator, на который достаточно довернуть координатную систему персонажа (верхнюю на рисунке), чтобы она своей осью Z совпала с осью Z нормали поверхности (нижней на рисунке), причем другие оси совпадать не должны (т.е. их не нужно доворачивать до совпадения с осями нормали, иначе персонаж не сможет вращаться на поверхности, а будет жестко прибит нормалью к поверхности, как гвоздем).
Решение, скорее всего, очень простое. Просто я пока только знакомлюсь с функционалом UDK и не знаю назначения всех функций для работы с ротаторами, векторами и т.д.
Заранее благодарен!Добавлено (19.09.2012, 14:09)
---------------------------------------------
Решил через проекцию вектора X на плоскость XnYn и последующее достроение своих собственных осей через векторное произведение.
PS: Вообще это была задача постановки стоп на поверхности с применением инверсной кинематики (IK). Подробнее расписал в своем блоге, может кому пригодится: Инверсная кинематика в UDK