Witam,
mam pewien problem ze złapaniem mojego obiektu 3D w obszarze kamery.
Rysuje sobie teren w oparciu o macierz z podanymi wysokościami. Obiekt rysuje od punktu 0,0,0 w osiach X i Z, a oś Y to wysokość.
Mój problem sprowadza się do tego, że jeśli ustawię kamerę w taki sposób:
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-w, w, -h, h, -400, 0);
glMatrixMode(GL_MODELVIEW);
}
To obiekt się wyświetla, przy czym mogę go oglądać tylko z profilu.
Gdy próbuję zmienić na:
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLdouble aspect = 1;
if (h > 0)
aspect = w / (GLdouble)h;
// rzutowanie perspektywiczne
gluPerspective(45, 1, 1.0, 5000.0);
glMatrixMode(GL_MODELVIEW);
}
Dodatkowo ustawiając LookAt:
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(theta[0], 1.0, 0.0, 0.0);
glRotatef(theta[1], 0.0, 1.0, 0.0);
glRotatef(theta[2], 0.0, 0.0, 1.0);
gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, 0, 1, 0);
drawHighMap();
glFlush();
glutSwapBuffers();
}
To niezależnie od tego jak bym nie kombinował z parametrami, obiekt znika i nie potrafię na niego nakierować kamery.
Próbowałem również wariantu z glFrustum(-2.0, 2.0, -2.0, 2.0, 1.0, 5.0); ale efekty miałem podobne, czyli kompiluje się, ale obiektu nie widać.
Ktoś jest w stanie mi doradzić jak to ogarnąć, żeby mieć ładny widok na teren? Docelowo, chciałbym osiągnąć kąt widzenia, mniej więcej taki jak na obrazku:
http://www.lighthouse3d.com/opengl/terrain/3dtechscreen2.gif