Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Камера в Open GL


Автор: rubenhak 14.3.2006, 01:53
Люди, помогите разобратся с проекциями и камерами в Опен ГЛ.

1) я хочу чтоб камера смотрела с точки (eyeX, eyeY, eyeZ) на (lookX, lookY, lookZ),
вызываю функцию gluLookAt(eyeX, eyeY, eyeZ, lookX, lookY, lookZ , lookX, lookY + 1 , lookZ );
но не работает, видно что-то , но не то что я сам ожидаю.
Так сказать мне нужно сделать как в играх - двигаешь мышку - камера поворачивается.

я даже рисую сферы на точках (eyeX, eyeY, eyeZ) и (lookX, lookY, lookZ) , и впринципе, я должен был
видеть изнутри (eyeX, eyeY, eyeZ) , и посередине должена быть видна сфера (lookX, lookY, lookZ) , но получается совсем не так.

кстати, мне тут нужно использовать glOrtho? я даже пробовал менять zNear, zFar, итд. итп. ... не помогает....

2) и еще, помогите вклучить перспективную проекцию.


Заранее спасибо

Автор: Nemesis 14.3.2006, 03:23
1) В функции gluLookAt первые 3 параметра- это откуда смотрим, вторая тройка параметров - куда смотрим и третья тройка - это вертикальный вектор камеры, обычно верх - это вектор {0,1,0}

2)

glMatrixMode(GL_PROJECTION); // вкл матрицу проекций
glLoadIdentity(); // сбрасываем матрицу на единичную

gluPerspective(45, (float)w/(float)h, 1, 100); // первый параметр - раствор угла зрения, 2ой - aspect ratio - коэф сжатия пикселей, 3 - ближняя плоскость отсечения, 4 - дальняя.

P.S. Советую полюбить MSDN...

Автор: rubenhak 14.3.2006, 21:05
список параметров в gluLookAt я смотрел, но не работает, камера явно не смотрит с точки которую я ставлю

Автор: Nemesis 15.3.2006, 01:38
Т.е. gluLookAt(eyeX, eyeY, eyeZ, lookX, lookY, lookZ ,0, 1 ,0 ); некорректно все равно работает?

Автор: rubenhak 15.3.2006, 17:54
да, именно так,

в функции display
Код

void display()
{
glPushMatrix();

    glPushMatrix();
        glTranslated(eyeX,eyeY,eyeZ);
        glColor3f(1,0,0);

        auxSolidSphere(0.5);
    glPopMatrix();

    glPushMatrix();
    glTranslated(lookAtX,lookAtY,lookAtZ);
        glColor3f(0,0,1);

        auxSolidSphere(2);
    glPopMatrix();

///////////////// ....
glPopMatrix();


сферами рисую токи откуда, и куда смотрю, и тогда впринцыпе я не должен видеть точку откуда смотрю,
а она видна где-то посерединке( не ночно не где-то там ), а прямо за ней сферы куда я смотрю ,
она не подвижна, значит я кое-что правильно сделал smile

сцена как-то не понято вращается ....


можел дело в glOrtho??? или в чем то другом?

спасибо

Автор: rubenhak 15.3.2006, 18:43
люди спасибо за помощь, все исправил,
проблемма била в том что я использовал gluOrho а нужно было gluPerspective.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)