Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
NickolayAkimov
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 24
#1

OpenGL Управление камерой - C++

06.09.2013, 18:20. Просмотров 1516. Ответов 1
Метки нет (Все метки)

Здравствуйте уважаемые форумчане!
Очень нужен ваш совет. Ситуация заключается в следюющем. Я начал изучение opengl, сейчас разбираюсь с функцией gluLookAt(...), в теории как она работает, вроде все понятно, но приступив к практике, сразу же натыкаюсь лбом в угол.
Задача стоит в том что нужно реализовать движение камеры по сцене, для начала вперед назад(к обьекту/от обьекта).

Реализовать пытаюсь следующим образом:
в gluLookAt() передаю переменные xp=0,yp=0,zp=-200 - позиция наблюдателя и xl=0, yl=0; zl=0 - точка взгляда, по нажатию кнопку 'w'(в нижнем регистре) для zp и zl делаю +21. Т.е по идее камера должна приближаться к объекту по оси Z. Но вместо этого объект абсолютно никак не изменяется, и только после нескольких нажатий просто исчезает.

Подскажите пожалуйста в чем моя ошибка? Код привожу ниже, буду очень благодарен за любую помощ.
За ранее спасибо с ув. Nickolay
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <glut.h>
#include <windows.h>
#include <glaux.h>
 
using namespace std;
 
float xp = 0.0;
float yp = 0.0;
float zp = -100.0;
 
float xl = 0.0;
float yl = 0.0;
float zl = 0.0;
 
float xv = 0.0;
float yv = 1.0;
float zv = 0.0;
 
 
void Keyboard(unsigned char key, int x, int y)
{
        switch(key)
        {
            
        
            case 'w': zp = zp+21.0f;
                     zl = zl+21.0f;
                     cout << "zp = " << zp << endl;
                cout << "zl = " << zl << endl;
                                   break;
        }
        glutPostRedisplay();
}
 
void Draw()
{
 
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity;
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity;
    gluLookAt(xp,yp,zp, xl,yl,zl, xv,yv,zv);
    glPushMatrix;
         glClear(GL_COLOR_BUFFER_BIT);
         glColor3f(0.0, 1.0, 0.0);
 
         glBegin(GL_LINES);
            
                        GLUquadricObj * quadSphere;
            quadSphere = gluNewQuadric();
            gluQuadricDrawStyle(quadSphere, GLU_LINE );
            gluSphere( quadSphere , 50 , 36 , 18 );
            gluDeleteQuadric(quadSphere); 
            glEndList();
 
        glEnd();
        glutSwapBuffers();
    glPopMatrix;
        //cout << "Draw();" << endl;
}
 
void Initialize()
{
        glClearColor(1.0, 0.0, 0.0, 1.0);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(-200.0, 200.0, -200.0, 200.0, -200.0, 200.0);
}
 
int main(int argc, char** argv)
{
        //Инициализация
        glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
        glutInitWindowSize(400, 400);
        glutInitWindowPosition(100, 200);
        glutCreateWindow("Lesson 01");
        //Регистрация
        glutDisplayFunc(Draw);//Рисование
    glutKeyboardFunc(Keyboard);
        Initialize();
        glutMainLoop();
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2013, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OpenGL Управление камерой (C++):

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой - C++
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Работа с веб камерой - C++ Builder
Здрасьте. Пробую захват изображения с вебкамеры(Genius iLook 300). нарыл такой код: HWND hWndC; ...

Работа с веб-камерой, видеосвязь - C++ Builder
доброго времени суток! передо мной стоит задача организовать общение по веб-камере между двумя компьютерами через интернет. посоветуйте...

Работа с Web-камерой - Visual C++
Подскажите, как работать с Web-камерой, в частности нужно выхватывать кажыдые n секунд изображения.

Реализовать управление камерой с помощью мыши - C++ WinAPI
Здравствуйте, программируя в OpenGL столкнулся с такой проблемой - мне необходимо создать управление камерой с помощью мыши (т.е. при...

Управление 3D-камерой - C++
Доброго времени суток, уважаемые знатоки. Есть два куска кода, которые должны по идее совершенно одинаково управлять вращением 3D-камеры....

1
Somebody
2792 / 1603 / 148
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 3
06.09.2013, 22:03 #2
Неужели без предупреждений скомпилировалось?
C++
1
2
3
4
5
glLoadIdentity;
...
glPushMatrix;
...
glPopMatrix;
Где скобки?

Добавлено через 2 минуты
Да, и матрицу проекции на единичную в Draw() не надо сбрасывать.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 22:03
Привет! Вот еще темы с ответами:

Управление камерой в opengl - OpenGL
Здравствуйте, я на си пишу программу на opengl, создал простенький 3д мир, состоящий из 4 кубиков. Хочу сделать, чтобы можно было при...

Управление камерой в OpenGl - OpenGL
Не первый день интересуюсь программированием на OpenGL, но до сих пор не смог организовать такую простую вещь как управление камерой, как...

Управление камерой на OS Android - Программирование Android
Ребята всем привет! Хочу разработать похожую инсталляцию: https://vimeo.com/123304375 Программирую давно не с разработкой...

Управление камерой на андроид - Unity, Unity3D
Объясните, плиз, как сделать управление FreeLookCamera от третьего лица в андроид перемещая пальцем по экрану:help::help::help: Я...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru