void MainWidget::initializeGL() { initializeOpenGLFunctions(); connect(this, SIGNAL(frameSwapped()), this, SLOT(update())); //animationTimer.setSingleShot(true); //connect(&animationTimer, SIGNAL(timeout()), this, SLOT(animate())); distance = -4; trackball = TrackBall(0.0f, QVector3D(0, 1, 0), TrackBall::Sphere); glClearColor(0.05, 0.05, 0.05, 1); // Enable depth buffer glEnable(GL_DEPTH_TEST); // Enable back face culling glEnable(GL_CULL_FACE); glFrontFace(GL_CCW); glCullFace(GL_BACK); initShaders(); initTextures(); geometries = new GeometryEngine(&programearth, &programearthnobump); gshhs = new gshhsData(&programgshhs); skybox = new SkyBox(&programskybox); }
void COpenGLView::OnMouseMove(UINT nFlags, CPoint point) { SetOwnContext(); if(nFlags & MK_LBUTTON) { if(nFlags & MK_SHIFT) { /* Track translation */ double x = point.x - m_mousePosition.x; double y = point.y - m_mousePosition.y; x /= m_width/2; y /= m_height/2; m_translate[0] += x; m_translate[1] += y; m_mousePosition = point; } else { /* Track rotation */ double x, y, z, angle; TrackBall(point, m_mousePosition, angle, x, y, z); m_mousePosition = point; glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glRotated(angle, x, y, z); glMultMatrixd(m_rotate); glGetDoublev(GL_MODELVIEW_MATRIX, m_rotate); glPopMatrix(); } } DrawScene(); CView::OnMouseMove(nFlags, point); }
void GLWidget::initializeGL(){ //glewInit(); glEnable( GL_DEPTH_TEST); glFrontFace( GL_CCW); glShadeModel( GL_SMOOTH); glEnable( GL_NORMALIZE); setLighting( true); init3dEng(); setQuaternion( 1); //m_trackBalls = TrackBall(0.0f, QVector3D(0, 1, 0), TrackBall::Plane); m_trackBalls = TrackBall(0.0f, QVector3D(0, 1, 0), TrackBall::Sphere); //-- sun Light sun1.isOn = true; sun1.mat.ambi.set( .3, .3, .3, 1.); sun1.mat.diff.set( .7, .7, .7, 1.); sun1.pos.set( -.5, 1, .5, 0.); sun2.isOn = true; sun2.mat.ambi.set( .3, .3, .3, 1.); sun2.mat.diff.set( .7, .7, .7, 1.); sun2.pos.set( .5, -1, -.5, 0.); //-- bulb Light bulb.isOn = false; bulb.mat.ambi.set( .3, .3, .3, 1.); bulb.mat.diff.set( .7, .7, .7, 1.); bulb.mat.spec.set( 1., 1., 1., 1.); bulb.att.set( 1.0, .01, .0003); Texture2d *tex; GLubyte *textureImage; //added by sai tex = loadBMP( "lap.bmp"); //bool success = loadPngImage("lap.png",256,256,true,&textureImage); //tex = loadBMP( "tex3.bmp"); //stoma.Load3ds( "stomach.3ds"); stoma.LoadBIN("mesh.bin"); stoma.smooth = 1; stoma.bindTexture( tex); //stoma.bindTexture(&textureImage); //stoma.rotate( -90, 0, 0); //stoma.scale( Vector3f( .3, .3, .3)); //stoma.scale( Vector3f( .003, .003, .003)); stoma.col.set( .6, .6, .2); stoma.calcBoundingCube(); stoma.calcGraph(); //glTranslatef(0,-160.0,0.0); stoma.drawGraph(); skele.Load3ds( "skeleton.3ds"); skele.smooth = 1; skele.col.set( .7, .7, .7); skele.calcBoundingCube(); //stoma += -((skele.cubeBoundMin+skele.cubeBoundMax)/2.0); stoma += -((stoma.cubeBoundMin+stoma.cubeBoundMax)/2.0); skele += -((skele.cubeBoundMin+skele.cubeBoundMax)/2.0); skele.updateDisplayList(); stoma.lap(); stoma.saveBIN( "mappedmesh.bin"); //tex = loadBMP( "lapatlas.bmp"); //stoma.bindTexture( tex); stoma.updateDisplayList(); skele.isHidden = true; model.LoadBIN( "mesh.bin"); model.col.set( .8, .4, .4); model.scale( Vector3f(.1)); model.calcBoundingCube(); model += -((model.cubeBoundMin+model.cubeBoundMax)/2.0); model.updateDisplayList(); model.isHidden = true; m_mouseClick = 0; camS = 0.1; camM = 1.0; // camera zoom camT = 0.0; camP = 0.0; // camera theta and phi aspectRatio = 1.0; freeCam.pos.set( 45., 0., 0.); //freeCam.pos.set( 0., 0., -50.); freeCam.cnear = 0.01; freeCam.cfar = 2000.0; freeCam.ang = 45.0/camM; freeCam.eye.set( 0., 0., 0.); //freeCam.eye = freeCam.pos + Vector3f( sin(camP)*cos(camT), sin(camT), cos(camP)*cos(camT)); printf("Done\n"); }