![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Bonus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 4.10.2006 Репутация: нет Всего: нет |
есть родительский объект с кватернионом вращения:
parentObj.rotation = new Quaternion.Identity; есть дочерний объект с двумя кватернионами, описывающими его вращение в глобальной системе координат, и в системе координат его родителя: childObj.rotation = new Quaternion.Identity; childObj.globalRotation = parentObj.rotation * childObj.rotation; Вопрос: как вычислить кватернион childObj.rotation, если известны parentObj.rotation и childObj.globalRotation? Т.е. зная кватернион вращения дочернего объекта в глобальной системе координат и кватернион вращения родительского объекта нужно вычислить кватернион вращения дочернего объекта в системе координат родительского объекта. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Скомбинировать глобальный кватернион вращения чилда с инвертированным глобальным кватернионом вращения родителя. Получится разница, которая и есть локальное вращение чилда в пространстве родителя.
-------------------- ![]() |
|||
|
||||
Bonus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 4.10.2006 Репутация: нет Всего: нет |
вот это дает не правильный результат:
childObj.rotation = chilObj.globalRotation * Quaternion.Inverse(parentObj.globalRotation); потому что после этого получается что childObj.globalRotation не равен parentObj.globalRotation * childObj.rotation. А мне нужно: childObj.globalRotation = parentObj.globalRotation * childObj.rotation; childObj.rotation = chilObj.globalRotation * ???; нужно сделать так, чтобы вращением чилда можно было управлять через оба свойства. З.Ы. сорри если сложно объясняю... |
|||
|
||||
Bonus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 4.10.2006 Репутация: нет Всего: нет |
up
Это сообщение отредактировал(а) arilou - 4.3.2008, 16:51 |
|||
|
||||
Bonus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 4.10.2006 Репутация: нет Всего: нет |
Блиииин. Надо было всего лишь местами поменять:
childObj.rotation = Quaternion.Inverse(parentObj.globalRotation) * chilObj.globalRotation; и все заработало... З.Ы. сори за нетерпеливость. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |