Esempio n. 1
0
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);

 }
Esempio n. 2
0
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);
}
Esempio n. 3
0
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");
}