Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
2 / 2 / 3
Регистрация: 09.04.2013
Сообщений: 43
1

Вращение камеры

27.04.2013, 11:32. Показов 2599. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток, подскажите можно ли на изображении(прикрепил) перемещаться при помощи камеры opengl, если да, то как? было бы неплохо если бы кто-нибудь подсказал алгоритм или же натолкнули на мысль, ну или если задача простенькая - помог кодом. Я до этого на opengl не писал, но в целом с горем пополам думаю разберусь ибо сверхъестественного ни чего не требуется. Заранее всем спасибо!
Миниатюры
Вращение камеры  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2013, 11:32
Ответы с готовыми решениями:

Вращение камеры мышью
Здравствуйте, можете мне пожалуйста объяснить, как при помощи мыши можно повернуться на 360...

gluLookAt вращение камеры
В гугле есть интересная информация по этой теме, но мне хотелось бы самому досконально понять...

Вращение камеры gluLookAt, ошибка
При попытке вращать камеру вокруг куба идёт чередование кадров: вид при повороте и с обратной...

Кватернионы и FPS-вращение камеры
В libQGLViewer камера задается как точка ее положения + кватернион, задающий направление взгляда. ...

1
7 / 7 / 0
Регистрация: 13.02.2013
Сообщений: 42
28.04.2013, 18:28 2
Тоже, одно время эксперементировал с OpenGL в области перемещений в трехмерном мире.
У меня, примерно, такая схема:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//CameraThetaXZ - угол относительно земли
//Вставляется в цикл отрисовки в самое начало
void PaintObjectCamera (double CameraX, double CameraY, double CameraZ, double CameraThetaY, double CameraThetaXZ)
{
    glRotatef (-CameraThetaXZ, 1.0f, 0.0f, 0.0f);
    glRotatef (-CameraThetaY,  0.0f, 1.0f, 0.0f);
    glTranslatef (-CameraX, -CameraY, -CameraZ);
}
 
//Вычисления для перемещения по плоскости в сторону взгляда при нажатии на клавиши (Управление - "WASD")
//Вставляется в цикл проверки нажатия клавиш
if (GetAsyncKeyState (0x57) != 0){CameraZ = CameraZ - Speed*(cos(CameraThetaY*3.14/180)/1);      CameraX = CameraX - Speed*(sin(CameraThetaY*3.14/180)/1);}
if (GetAsyncKeyState (0x53) != 0){CameraZ = CameraZ + Speed*(cos(CameraThetaY*3.14/180)/1);      CameraX = CameraX + Speed*(sin(CameraThetaY*3.14/180)/1);}
if (GetAsyncKeyState (0x41) != 0){CameraZ = CameraZ - Speed*(cos((CameraThetaY+90)*3.14/180)/1); CameraX = CameraX - Speed*(sin((CameraThetaY+90)*3.14/180)/1);}
if (GetAsyncKeyState (0x44) != 0){CameraZ = CameraZ + Speed*(cos((CameraThetaY+90)*3.14/180)/1); CameraX = CameraX + Speed*(sin((CameraThetaY+90)*3.14/180)/1);}
 
//rc.right и rc.bottom - ширина и высота экрана
//X и Y - положение курсора на экране
//Вставляется в цикл проверки ввода с мыши
if (X < rc.right/2) {CameraThetaY  = CameraThetaY  + 0.1*(rc.right/2-X);}
if (X > rc.right/2) {CameraThetaY  = CameraThetaY  - 0.1*(X-rc.right/2);}
if (Y < rc.bottom/2){CameraThetaXZ = CameraThetaXZ + 0.1*(rc.bottom/2-Y);}
if (Y > rc.bottom/2){CameraThetaXZ = CameraThetaXZ - 0.1*(Y-rc.bottom/2);}
X = rc.right/2;
Y = rc.bottom/2;
Добавлено через 12 минут
Цитата Сообщение от CrashOverride Посмотреть сообщение
Я до этого на opengl не писал, но в целом с горем пополам думаю разберусь
Думаю, Вам стоит зайти почитать сюда - http://pmg.org.ru/. И по поводу OpenGL, и по поводу трехмерной графики вообще.
0
28.04.2013, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 18:28
Помогаю со студенческими работами здесь

[GLUT] Вращение камеры мышью
Всем доброго времени суток! Есть класс Camera в котором определены методы перемещения в ращения...

C# OpenTK Вращение камеры вокруг своей оси
Итак, я начал разбираться в OpenGL, выбрал язык C# и библиотеку OpenTk. Привожу код моего творения:...

C# OpenGL вращение камеры "мышкой" вокруг трёхмерного объекта
Я в С# новичок и в OpenGL. Какой-то бы целостный пример для вращения мышкой камеры вокруг куба!...

Вращение
вот кусок обработки сообщений case WM_KEYUP: if(wParam==27) ExitProcess(0);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru