Hi there!
I have try to create a PostProcessor for FE-Meshes. But now i have problems with gluLookAt. I created the following code:
void MyGLWidget::drawNodes()
{
for(int i=0;i<numVertices;i++)
{
glBegin (GL_POINTS);
glVertex3f(vertices[i*3],vertices[i*3+1],vertices[i*3+2]);
glEnd();
}
}
void MyGLWidget: aintGL()
{
glClear( GL_COLOR_BUFFER_BIT );
glLoadIdentity();
gluLookAt(0.,0.,6*radius,center[0],center[1],center[2],0.,1.,0.);
glTranslatef (movex,movey ,0.0);
glRotatef (xRot, 0.0, 1.0, 0.0);
glRotatef (yRot, 1.0, 0.0, 0.0);
glScalef(scale, scale, scale);
drawNodes();
glFlush(); // Make sure everything is drawn before restarting timer
}
void MyGLWidget::setViewPoint()
{
angle=60;
center[0]=(xmax+xmin)/2;
center[1]=(ymax+ymin)/2;
center[2]=(zmax+zmin)/2;
radius=sqrt((xmax-center[0])(xmax-center[0])+(ymax-center[1])(ymax-center[1])+(zmax-center[2])(zmax-center[2]));
distance = radius/tan(angle3.14156/360);
resizeGL(MyGLWidget::width(),MyGLWidget::height());
}
void MyGLWidget::initializeGL()
{
glClearColor( 0.0, 0.0, 0.0, 0.0 );
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_FLOAT,0,vertices);
scale = 1;
xRot=0;
yRot=0;
movex=0;
movey=0;
}
void MyGLWidget::resizeGL( int w, int h )
{
float aspect=float(w)/float(h);
float top,bottom,left,right;
left=center[0]-radius2;
right=center[0]+radius2;
bottom=center[1]-radius2;
top=center[1]+radius2;
glViewport( 0, 0, w, h );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(left,right,bottom,top,0.01,(radius*2));
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
void MyGLWidget::mouseReleaseEvent( QMouseEvent * event)
{
down = FALSE;
}
void MyGLWidget::mouseMoveEvent( QMouseEvent * event)
{
if (down && (event->state()==(LeftButton|ControlButton))) {
xRot += (event->x()-xRot_old);
yRot += (event->y()-yRot_old);
xRot_old=event->x();
yRot_old=event->y();
emit updateGL();
}else if (down && (event->state()==(MidButton|ControlButton))) {
scale =scale+((yRot_old - event->y()) / 100.0);
yRot_old=event->y();
if (scale<0.) scale = 0;
emit updateGL();
}else if (down && (event->state()==(RightButton|ControlButton))) {
movex+=(event->x()-xRot_old)/5;
movey+=(-event->y()+yRot_old)/5;
xRot_old=event->x();
yRot_old=event->y();
emit updateGL();
}else if (down && (event->state()==(LeftButton|ShiftButton))) {
emit updateGL();
}
}
But if i start the program, i can not see anything. What could be wrong, because i defined gluLookAt to the center of the object??