| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > Кватерионы и камера в DirectX |
| Автор: ZC1989 21.8.2006, 15:10 |
| Подскажите, как пользоваться кватерионами!? есть функции работы с кватерионами... перевод из мартицы в них и обратно, но как их использовать?! приведите если можно парачку примеров, а то я принцип-то понял работы, но как использовать их вместо матрицы напонятно |
| Автор: NikotiN 21.8.2006, 18:19 |
| ну в инете посмотри про кватернионы, углы эйлера и т.д. имхо, с матрицами привычнее )) |
| Автор: ZC1989 21.8.2006, 21:57 |
| NikotiN, я смотрел про это всё статьи... с примерами функций обработки и вего того... углы эйлера мне не подходят... камеру надо вращать по сфере, а родные матрицы почему-то у меня этого не дают... я въехал в принцип работы... но вот нормального примера как эти каватерионы использовать для вращения камеры нигда не смог найти... |
| Автор: mr.DUDA 22.8.2006, 09:32 |
| Кватернион задаёт относительное трёхмерное вращение вокруг любой оси на любой угол. Следовательно, если есть точка с заданным положением относительно центра вращения, её текущее положение также может быть выражено кватернионом. Итого, чтобы повернуть точку из текущего положения в другое положение, имея кватернион вращения Qrot нужно: 1) по нормализованному вектору положения точки определить кватернион тек. положения точки Q 2) умножить Q на кватернион вращения Qrot - получим кватернион итогового углового положения точки Qres 3) зная расстояние от центра вращения до точки (оно не менялось), умножить его на Qres - получим итоговое положение точки после поворота Вроде так. З.Ы. хорошие туториалы по кватернионам лежат на http://www.ogre3d.org в разделе Wiki |
| Автор: ZC1989 22.8.2006, 09:55 |
| mr.DUDA, Пасиба! я начинаю понимать смысл работы... но последний вопрос: мне надо будет полученный кватерион перевести в матрицу и просто подставить значения? (просто вот я чего понять-то не могу, когда я вращаю матрицу, она не вращается на все 360) |
| Автор: NikotiN 22.8.2006, 20:23 |
| 2 ZC1989 //родные матрицы почему-то у меня этого не дают имхо, это уже твоя реализация. кватернионы, матрицы, да хоть 3 переменные X,Y,Z - это всего лишь представление данных, на сам алгоритм вращения не влияют, хотя реализация везде разная |
| Автор: ZC1989 22.8.2006, 22:22 |
| NikotiN, |
| Автор: ZC1989 23.8.2006, 10:18 | ||
вот как это описывалось, вращаю камеру...
...вот код, которым я делаю то ли вращение, то ли трансфер... и ни одно из изменяемых не даёт вращения, точка цели каемры двигается, но с глазом наблюдателя проблема... |
| Автор: ZC1989 23.8.2006, 22:22 |
| разобрался сам во всём.. спасибо за внимание |
| Автор: Able 23.8.2006, 22:28 |
| Чего было, как разобрался делись! |
| Автор: ZC1989 23.8.2006, 23:31 | ||||
виной всему моё незнание Дирекста и неправельные объяснения в некоторых статьях... вобщем я не вращал...
тут я вращение питался обеспечить через MouseX и MouseY, а надо через
пока под кватерионы я не переводил, но скоро буду этим заниматься... а щас пляшу Джигу... наконец-то можно посмотреть объект со всех сторон |