| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Вращение камеры вокруг объекта |
| Автор: coach 3.11.2006, 16:40 |
| Как определить камеру с помощью gluLookAt() для готового 3D объекта. |
| Автор: cipher 3.11.2006, 16:57 |
| А поточнее можно. Что необходимо? Добавлено @ 16:58 Что значит "определить"? |
| Автор: coach 3.11.2006, 19:00 |
| cipher, Создан объект, необходимо относительно неподвижного объекта вращать камеру. |
| Автор: Rickert 4.11.2006, 08:19 |
| Есть два варианта: первый через векторы работать с камерой, а воторой, он проще и конкретно для тебя подходит - надо работать по уровнениям сферы из тригонометрии. Есть точка неподвижная - центр сферы, а ты вокргу неё описываешь полёт по формуле сферы, задавая положения в полярной системе координат двумя углами. |
| Автор: coach 6.11.2006, 00:37 |
| Спасибо! |
| Автор: Arks 16.11.2006, 10:00 |
| Кстати, в OpenGL Programming Guide есть пример работы с камерой в полярных координатах. В инете можно найти эту книгу при желании. |
| Автор: Rickert 16.11.2006, 17:47 |
| да чего там работать-то? Три переменных для каждой по формуле из двух составляющих(для z - одна) и всё. |
| Автор: evilguard 19.11.2006, 00:22 | ||
У меня проблема. Делаю обзор объекта мышью по окружности. Объект находится в точке с координатами x0,y0,z0 положение камеры вычисляю с помощью полярных координат: c_r - расстояние от камеры до объекта, c_a - горизонтальный угол, c_b - угол между вектором камеры и осью z. Вот код функции OnDraw:
Так вот, при изменении угла c_b, то есть вращения в плоскости yz(допустим зафиксировав угол c_a) при прохождении углом значения пи/2,(при этом смотришь на объект сверху вниз), объект резко разворачивается на 180 градусов в горизонтальной плоскости(или же камера разворачивается). Подскажите как поправить код, пожалуста. Или может быть лучше с использованием функций glTranslate и glRotate? |
| Автор: Rickert 19.11.2006, 07:02 | ||||
У тебя вроде углы неправильно расчитываются.
Где ATOR():
А speed - скорость(возьми 0.01 для начала) |
| Автор: evilguard 19.11.2006, 10:07 |
| Rickert, Понимаешь, вращается все нормально во всех плоскостях, углы у меня в радианах, никакие пересчетные коэффициенты не нужны. Проблема возникает при прохождении углом значения пи/2 сверху вниз когда смотришь на объект. |
| Автор: Rickert 19.11.2006, 10:43 |
| А! Ну так естественно! получается ведь что ты начинаешь смотреть на объект вверх ногами |
| Автор: evilguard 19.11.2006, 12:13 |
| Вот exe-шник программы, 77 кб, там все понятно будет: http://myfriends.jino-net.ru/OG.exe |
| Автор: Sandrick 8.1.2007, 16:08 | ||
Если не использовать функцию gluLookAt, то у меня получился такой вполне работоспособный код вращения:
Где mmatrix - матрица GL_MODELVIEW. А dXAngle и dYAngle - углы вращения. |
| Автор: Rickert 8.1.2007, 16:41 |
| evilguard, твой файл не запускается. Говорит, что некорректно настроено приложение. Ты с помощью МФЦ пишешь чтоли? |
| Автор: EvgenZ 8.1.2007, 17:12 |
| У меня открылось в окошке МФЦ. |