![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Vetos |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Здравствуйте!
Изучаю PhysX 3, всё бы ничего но только при получении положения шейпа т.е. позицию и поворот, возникла трудность. В мануалах написано, что по умолчанию PhysX настроен под OpenGL. Т.к. OpenGL напрямую непонимает квантернион, в шейдер были введены две доп функции, перемножение квантернионов, и поворот точки с помощью квантерниона:
Этот код я нашел еще когдато давно гдето в недрах сети:) Но прикол в том что если напрямую передать квантернион в виде как он есть:
то обьекты на сцене(в моем случае кубы) ведут себя как бы неправильно, положение совпадает а вот с вращением беда, вращаются они как бы наоборот. Путем научного тыка, я добился того чтобы обьекты вращались правильно, но для этого пришлось сделать вот что:
т.е. поменять местами значения x и z, да еще и их знаки. Вот откуда взялись vec3, quat и Location:
Раньше с использованием квантерниона небыло никаких проблем(без PhysX), вроде все вращалось как надо. Но сейчас проблема с освещением, я думаю это связано с неправильным вращением нормалей. Либо ошибка в функциях в шейдере, либо в передаче квантерниона с PhysX в OpenGL в чем я не сомневаюсь. я вспомнил откуда коды функций в шейдере, человек писал что взял их с исходников Quake, так что думаю проблема не в них, а именно в передаче квантерниона. Прошу помощи, может квантернион с PhysX нужно както по другому передавать в QQuaternion??? -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
||||||||
|
|||||||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Странно, при переводе в матрицу поворота и отрисовке с ее помощью, кубы крутятся правильно.Но проблема с освещением не решилась :( Значит квантенионы тут ни при чем, но все равно интересно чем отличаются квантернионы в Qt, и в PhysX?
-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Проблема решена, через связанные функции можно правильно передать квантернион с PhysX в Qt:
Теперь квантернион создается как положено и проблем с отображением физики и освещения нет. Это сообщение отредактировал(а) Vetos - 25.11.2012, 00:47 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |