Ejemplo n.º 1
0
/*******************************************************************************
Function that gets called for any keypresses.
*******************************************************************************/
void myKey(unsigned char key, int x, int y)
{
	float time;
	const double speed = 1.0;
	switch (key) 
	{
		case 'q':
		case 27:
			exit(0); 
		case 's':
			g_frameSaver.DumpPPM(g_width,g_height);
			break;
		case 'x':
			addRandomFoodParticle( 100, &World, &Space );
			animator.scanForFood( animator.foodParticles.back() );
			break;
		case 'r':
			resetArcball();
			break;
		case '1':
			animator.active = !animator.active;
			break;
		case 'a':
			g_animate = 1 - g_animate;
			//Reset the timer to point to the current time.		
			time = g_timer.GetElapsedTime();
			g_timer.Reset();
			break;
		case '0':
			//Reset your object.
			break ;
		case 'm':
			if( g_recording == 1 )
			{
				std::cout << "Frame recording disabled." << std::endl;
				g_recording = 0;
			}
			else
			{
				std::cout << "Frame recording enabled." << std::endl;
				g_recording = 1 ;
			}
			g_frameSaver.Toggle();
			break ;
		case 'h':
		case '?':
			GDrawing::plotInstructions();
			break;
	}
	glutPostRedisplay();
}
Ejemplo n.º 2
0
/*********************************************************
**********************************************************
**********************************************************

    PROC: display()
    DOES: this gets called by the event handler to draw
          the scene, so this is where you need to build
          your ROBOT --  
      
        MAKE YOUR CHANGES AND ADDITIONS HERE

    Add other procedures if you like.

**********************************************************
**********************************************************
**********************************************************/
void display(void)
{
    // Clear the screen with the background colour (set in myinit)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    model_view = mat4(1.0f);
    
    model_view *= Translate(0.0f, -5.0f, -15.0f);
    HMatrix r;
    Ball_Value(Arcball,r);

    mat4 mat_arcball_rot(
        r[0][0], r[0][1], r[0][2], r[0][3],
        r[1][0], r[1][1], r[1][2], r[1][3],
        r[2][0], r[2][1], r[2][2], r[2][3],
        r[3][0], r[3][1], r[3][2], r[3][3]);
    model_view *= mat_arcball_rot;
        
    glUniformMatrix4fv( uView, 1, GL_TRUE, model_view );


    // Previously glScalef(Zoom, Zoom, Zoom);
    model_view *= Scale(Zoom);

    //draw objects
    drawGround();
    drawBee();
    drawFlower();

    glutSwapBuffers();
    if(Recording == 1)
        FrSaver.DumpPPM(Width, Height);
}
Ejemplo n.º 3
0
void myKey(unsigned char key, int x, int y)
{
    float time ;
    switch (key) {
        case 'q':
        case 27:
            exit(0); 
        case 's':
            FrSaver.DumpPPM(Width,Height) ;
            break;
        case 'r':
            resetArcball() ;
            glutPostRedisplay() ;
            break ;
        case 'a': // togle animation
            Animate = 1 - Animate ;
            // reset the timer to point to the current time		
            time = TM.GetElapsedTime() ;
            TM.Reset() ;
            // printf("Elapsed time %f\n", time) ;
            break ;
        case '0':
            //reset your object
            break ;
        case 'm':
            if( Recording == 1 )
            {
                printf("Frame recording disabled.\n") ;
                Recording = 0 ;
            }
            else
            {
                printf("Frame recording enabled.\n") ;
                Recording = 1  ;
            }
            FrSaver.Toggle(Width);
            break ;
        case 'h':
        case '?':
            instructions();
            break;
    }
    glutPostRedisplay() ;

}
Ejemplo n.º 4
0
/*********************************************************
**********************************************************
**********************************************************

    PROC: display()
    DOES: this gets called by the event handler to draw
          the scene, so this is where you need to build
          your ROBOT --  
      
        MAKE YOUR CHANGES AND ADDITIONS HERE

    Add other procedures if you like.

**********************************************************
**********************************************************
**********************************************************/
void display(void)
{
    // Clear the screen with the background colour (set in myinit)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    model_view = mat4(1.0f);
    
    
    model_view *= Translate(0.0f, 0.0f, -15.0f);
    HMatrix r;
    Ball_Value(Arcball,r);

    mat4 mat_arcball_rot(
        r[0][0], r[0][1], r[0][2], r[0][3],
        r[1][0], r[1][1], r[1][2], r[1][3],
        r[2][0], r[2][1], r[2][2], r[2][3],
        r[3][0], r[3][1], r[3][2], r[3][3]);
    model_view *= mat_arcball_rot;
    
    mat4 view = model_view;
    
    
    //model_view = Angel::LookAt(eye, ref, up);//just the view matrix;

    glUniformMatrix4fv( uView, 1, GL_TRUE, model_view );

    // Previously glScalef(Zoom, Zoom, Zoom);
    model_view *= Scale(Zoom);

    // Draw Something
    set_colour(0.8f, 0.8f, 0.8f);
    drawSphere();

    // Previously glTranslatef(3,0,0);
    model_view *= Translate(3.0f, 0.0f, 0.0f);

    // Previously glScalef(3,3,3);
    model_view *= Scale(3.0f, 3.0f, 3.0f);

    drawCube();

    // And extra shapes!
    model_view *= Scale(1.0f/3.0f, 1.0f/3.0f, 1.0f/3.0f);
    model_view *= Translate(3.0f, 0.0f, 0.0f);
    set_colour(1.0f, 1.0f, 0.0f);
    drawCone();

    model_view *= Translate(-9.0f, 0.0f, 0.0f);
    set_colour(1.0f, 1.0f, 1.0f);
    drawCylinder();


    glutSwapBuffers();
    if(Recording == 1)
        FrSaver.DumpPPM(Width, Height) ;
}
Ejemplo n.º 5
0
void display(void)
{

    // Clear the screen with the background colour (set in myinit)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    model_view = mat4(1.0f);    
    model_view *= Translate(-1.0f, 0.0f, -10.0f);
    model_view *= Translate(-cameraX,-cameraY,-cameraZ);
    glUniformMatrix4fv( uView, 1, GL_TRUE, model_view );
    drawCube();
    model_view *= Translate(2.0f, 0.0f, 0.0f);
    drawCrate();
    glutSwapBuffers();
    if(Recording == 1)
        FrSaver.DumpPPM(Width, Height) ;
}
Ejemplo n.º 6
0
Archivo: anim.cpp Proyecto: 4solo/cs174
/*********************************************************
**********************************************************
**********************************************************
 
    PROC: display()
    DOES: this gets called by the event handler to draw
          the scene, so this is where you need to build
          your ROBOT --  
      
        MAKE YOUR CHANGES AND ADDITIONS HERE
 
    Add other procedures if you like.
 
**********************************************************
**********************************************************
**********************************************************/
void display(void)
{
	// Clear the screen with the background colour (set in myinit)
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	mat4 model_trans(1.0f);
	mat4 view_trans(1.0f);

	view_trans *= Translate(0.0f, 0.0f, -15.0f);
	HMatrix r;
	Ball_Value(Arcball, r);

	mat4 mat_arcball_rot(
		r[0][0], r[0][1], r[0][2], r[0][3],
		r[1][0], r[1][1], r[1][2], r[1][3],
		r[2][0], r[2][1], r[2][2], r[2][3],
		r[3][0], r[3][1], r[3][2], r[3][3]);
	view_trans *= mat_arcball_rot;
	view_trans *= Scale(Zoom);

	glUniformMatrix4fv(uView, 1, GL_TRUE, model_view);

	model_view = view_trans;

	mvstack.push(model_view);
	drawGround(view_trans);
	model_view = mvstack.top();
	mvstack.pop();

	model_view *= Translate(0, -10, 0);

	drawFlower();
	drawBee();
	glutSwapBuffers();
	if (Recording == 1)
		FrSaver.DumpPPM(Width, Height);
}
Ejemplo n.º 7
0
void display(void)
{
    // Clear the screen with the background colour (set in myinit)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    model_view = mat4(1.0f);
    
	double curprev = TM.GetElapsedTime() - prev;
	frames++;

	if (curprev > 1)
	{
		prev = TM.GetElapsedTime();
		fps = frames / curprev;
		frames = 0;
		printf("FPS: %i\n", fps);
	}
    model_view *= Translate(0.0f, 0.0f, -15.0f);
    HMatrix r;
    Ball_Value(Arcball,r);

    mat4 mat_arcball_rot(
        r[0][0], r[0][1], r[0][2], r[0][3],
        r[1][0], r[1][1], r[1][2], r[1][3],
        r[2][0], r[2][1], r[2][2], r[2][3],
        r[3][0], r[3][1], r[3][2], r[3][3]);
    model_view *= mat_arcball_rot;
    
    mat4 view = model_view;
    
    
   // model_view = Angel::LookAt(eye, ref, up);//just the view matrix;

    glUniformMatrix4fv( uView, 1, GL_TRUE, model_view );

    // Previously glScalef(Zoom, Zoom, Zoom);
    model_view *= Scale(Zoom);

	
    // Draw Something
	mvstack.push(model_view);
	drawWorld();
	model_view = mvstack.pop();
	//guy 1
	mvstack.push(model_view);
	model_view *= Translate (0, 8, -40);
	model_view *= Scale(1.5, 1.5, 1.5);
	model_view *= RotateY(180);
	// turn
	if (TIME >= 5 && TIME < 6)
	{
		model_view *= RotateY(-900 + TIME*180);
	}
	// move up
	else if (TIME >= 6 && TIME < 6.5)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, 0 , -36 + TIME*6);
	}
	// jump on bench
	else if (TIME >= 6.5 && TIME < 7)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, 0, 3);
		model_view *= Translate (0, -16.25 + TIME*2.5, -13 + TIME*2);
	}
	// jump off bench
	else if (TIME >= 7 && TIME < 7.5)
	{
		model_view *= RotateY(180);
		model_view *= Translate(0, 1.25, 4);
		model_view *= Translate(0, -112 + TIME*16, -112 + TIME*16);
		model_view *= RotateX(-5040 + TIME*720);
	}
	// land
	else if (TIME >= 7.5 && TIME < 8)
	{
		model_view *= RotateY(180);
		model_view *= Translate(0, 9.25, 15);
		model_view *= Translate (0, 138.75-TIME*18.5, 0);
	}
	// walk toward other guy
	else if (TIME >= 8 && TIME < 9)
	{
		model_view *= RotateY(180);
		model_view *= Translate(0, 0, 15);
		model_view *= Translate(0, 0, -64 + TIME*8);
	}
	// stand for a bit
	else if (TIME >= 9 && TIME < 15)
	{
		model_view *= RotateY(180);
		model_view *= Translate(0, 0, 23);
		model_view *= RotateY(3*sin(5*TIME));
	}
	// spin thing
	else if (TIME >= 15 && TIME < 16)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, 0, 23);
		model_view *= RotateY(-5400 + TIME*360);
	}
	// backflip thing
	else if (TIME >= 16 && TIME < 16.5)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, 0, 23);
		model_view *= RotateX(5040 - TIME*720);
	}
	//walk backwards
	else if (TIME >= 16.5 && TIME < 17)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, 0, 23);
		model_view *= Translate (0, 0, 264 - TIME*16);
	}
	//fall
	else if (TIME >= 17 && TIME < 17.5)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, 0, 15);
		model_view *= Translate (0, (17*9) - TIME*9, 0);
		model_view *= RotateX (3060 - TIME*180);
	}
	// lay on ground
	else if (TIME >= 17.5)
	{
		model_view *= RotateY(180);
		model_view *= Translate (0, -4.5, 15);
		model_view *= RotateX (-90);
	}
	drawGuy1();
	model_view = mvstack.pop();

	//GUY 2
	mvstack.push(model_view);
	model_view *= Translate (-20, 8, 35);
	model_view *= Scale(1.5, 1.5, 1.5);
	model_view *= RotateY(180);
	if (TIME >= 6 && TIME < 8)
	{
		model_view *= Translate(39 - TIME*6.5, 0, 0);
		model_view *= RotateY(270 - TIME*45);
	}
	else if( TIME >= 8 && TIME  < 10)
	{
		model_view *= Translate (-13, 0, 0);
		model_view *= Translate (0, 0, -(8*10.5) + TIME*10.5);
	}
	else if (TIME >= 10 && TIME < 15)
	{
		model_view *= Translate (-13,0, 21);
		model_view *= RotateY(3*sin(5*TIME));
	}
	else if (TIME >= 15 && TIME < 26.5)
	{
		model_view *= Translate(-13, 0, 21);
	}
	else if (TIME >= 26.5 && TIME < 28.5)
	{
		model_view *= Translate (-13, 0, 21);
		model_view *= Translate (0, 0, (26.5*5) - TIME*5);
	}
	else if (TIME >= 28.5 && TIME < 29.5)
	{
		model_view *= Translate (-13, 0, 11);
		model_view *= RotateY((180*28.5) - TIME*180);
	}
	else if (TIME >= 29.5 && TIME < 31.5)
	{
		model_view *= Translate(-13, 0, 11);
		model_view *= RotateY(180);
		model_view *= Translate (0, 0, -(29.5*15) + 15*TIME);
	}


	drawGuy2();
	model_view = mvstack.pop();

	cam();
	


	if (TIME > 31.5)
		exit(0);

    glutSwapBuffers();
    if(Recording == 1)
        FrSaver.DumpPPM(Width, Height) ;
}
Ejemplo n.º 8
0
void display(void)
{


	static double oldTime = GlobalResourceManager::use()->getActualTime();
	oldTime = g_globalTimer.GetElapsedTime() ;


	glClearColor(0.2f,0.2f,1.0f,0.5f);   /* set the background colour */
	/* OK, now clear the screen with the background colour */
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


	glMatrixMode(GL_MODELVIEW) ;
	glLoadIdentity();

	g_eye[Z] = 8 ;
	gluLookAt (g_eye[X], g_eye[Y], g_eye[Z],
		g_ref[X], g_ref[Y], g_ref[Z], 0.0,1.0,0.0);

	HMatrix arcball_rot;
	Ball_Value(g_arcball,arcball_rot);
	glMultMatrixf((float *)arcball_rot);

	glScalef(g_zoom, g_zoom, g_zoom) ;
	DrawScene() ;

	glMatrixMode(GL_PROJECTION) ;
	glPushMatrix() ;
	glLoadIdentity();

	glMatrixMode(GL_MODELVIEW) ;
	glPushMatrix() ;
	glLoadIdentity();

	// display frame rate
	glPushAttrib(GL_LIGHTING|GL_TEXTURE_2D) ;
	glDisable(GL_LIGHTING) ;
	glDisable(GL_TEXTURE_2D) ;
	glColor3f(1,1,1) ;
	//	int fps  =  (int) ((float) 1.0) / (TIME - oldTime) ;
	int fps  =  (int) ((float) 1.0) / (g_globalTimer.GetElapsedTime() - oldTime) ;
	oldTime = GlobalResourceManager::use()->getActualTime() ;
	char s[80] ;
	sprintf(s,"FPS: %5d  TIME %6.3lf SIMTIME %6.3lf%c", 
		fps,GlobalResourceManager::use()->getActualTime(),
		GlobalResourceManager::use()->getSimulationTime(),'\0') ;

	glRasterPos2f(-0.98,-0.98) ;
	GLlabel(s, 15) ;

	glPopAttrib() ;

	glMatrixMode(GL_PROJECTION) ;
	glPopMatrix() ;
	glMatrixMode(GL_MODELVIEW) ;
	glPopMatrix() ;



	glutSwapBuffers();
	if( g_frameDumping == 1) g_frameSaver.DumpPPM(g_width,g_height) ;

}
Ejemplo n.º 9
0
void KeyboardCB(unsigned char key, int x, int y)
{
	switch (key) {
		case 'q':
		case 27:
			exit(0); 
		case 'f': // take a snapshot in ppm format
			g_frameSaver.DumpPPM(g_width,g_height) ;
			break;
		case 't':
			resetTime() ;
			break ;
		case 'r':
			resetArcball() ;
			Reset() ;
			g_zoom = 1 ;
			glutPostRedisplay() ;
			break ;
		case 'a': // toggle animation state
			if( g_state == STATE_ANIMATE )
			{
				g_state = STATE_IDLE ;
			}
			else
			{
				resetTime() ;
				g_state = STATE_ANIMATE ;
			}
			break ;
		case 's': // togle simulation state
			if( g_state == STATE_SIMULATE )
			{
				g_state = STATE_IDLE ;
			}
			else
			{
				resetTime() ;
				InitSimulation() ;
				g_state = STATE_SIMULATE ;
			}
			break ;
		case 'p': // togle playback
			if( g_state == STATE_PLAYBACK )
			{
				g_state = STATE_IDLE ;
			}
			else
			{
				g_state = STATE_PLAYBACK ;
			}
			break ;
		case '0':
			//reset your object
			break ;
		case 'm': // toggle frame dumping
			if( g_frameDumping == 1 )
			{
				animTcl::OutputMessage("Frame Frame Dumping disabled.\n") ;
				g_frameDumping = 0 ;
			}
			else
			{
				animTcl::OutputMessage("Frame Frame Dumping enabled.\n") ;
				g_frameDumping = 1  ;
			}
			g_frameSaver.Toggle(g_width);
			break ;
		case 'h':
		case '?':
			instructions();
			break;
	}

	myKey(key, x, y) ;

	glutPostRedisplay() ;

}
Ejemplo n.º 10
0
void display(void)
{
    // Clear the screen with the background colour (set in myinit)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    model_view = mat4(1.0f);
    model_view *= Translate(0.0f, 0.0f, -15.0f);
    HMatrix r;
    Ball_Value(Arcball,r);

    mat4 mat_arcball_rot(
        r[0][0], r[0][1], r[0][2], r[0][3],
        r[1][0], r[1][1], r[1][2], r[1][3],
        r[2][0], r[2][1], r[2][2], r[2][3],
        r[3][0], r[3][1], r[3][2], r[3][3]);
    model_view *= mat_arcball_rot;

    mat4 view = model_view;
    glUniformMatrix4fv( uView, 1, GL_TRUE, view );

    // Previously glScalef(Zoom, Zoom, Zoom);
    model_view *= Scale(Zoom);
	model_view *= Translate(0.0f, 0.0f, -10.0f);
	model_view *= RotateX(10);


	//if(prologue < 20) {
	//	model_view *= Translate(0.0f, -20.0f+prologue, 0.0f);
	//	cam_eye = vec4(rotateX, 0.0, rotateZ, 1.0);
	//	model_view *= LookAt(cam_eye, cam_ref, cam_up);
	//}
	
	//if(timeline > 57)
	//	model_view *= Translate(0.0f, -temp3, -0.0f);

	// Draw Scene
	drawScene();

	// Draw Leaf
	if(timeline < 8.0f) {
		mvstack.push(model_view);
			model_view *= Translate(0.0f, 25.0f-prologue, 0.0f);
			model_view *= RotateZ(leafSway);
			model_view *= Translate(4.0f, -1.0f-prologue, 3.0f);
			drawLeaf();
		model_view = mvstack.pop();
	}

	/*/ // Draw Bee
	if(timeline > 35.0f && timeline < 38.0f) {
		mvstack.push(model_view);
			model_view *= Translate(15.0f-(temp2-230), pathBeeVert, 4.5f);
			model_view *= Scale(0.5f, 0.5f, 0.5f);
			drawBee();
		model_view = mvstack.pop();
	}
	/*/ 
    //draw GFS
	mvstack.push(model_view);

	if(timeline>28&&timeline<36)
		{
			model_view *= Translate(47.5f-temp5/2, 0.0f, 3.0f);
		    model_view*=RotateY(-90);
			record=40.0f-temp5/2;
	    }

	else if(timeline>=36&&timeline<=40)
	{

		model_view *= Translate(7.5f, 0.0f, 4.0);
		model_view*=RotateY(-135);
	}
	else if(timeline>40&&timeline<59)
	{
		model_view *= Translate(7.5f+temp6/4, 0.0f, 2.0f);
		model_view *= RotateY(90);
	}
	if(timeline>=28)
		drawGFS(1,1,1);

	model_view = mvstack.pop();

	// Draw Male
	mvstack.push(model_view);
		if(timeline > 20.0f && timeline < 24.0f) {
			model_view *= Translate(-5.0f+temp, 0.0f, 2.25f);
			prevX = -5.0+temp;
		}
		else if(timeline >= 24.0f && timeline < 27.0f)
			model_view *= Translate(prevX-temp, 0.0f, 2.25f);
		else if(timeline > 30.5 && timeline < 36.0) {
			model_view *= Translate(-25.0+temp2/10, -.75f, 4.5f);
			prevX = -25.0+temp2/10;
			model_view *= RotateY(90);
		}
		else if(timeline >= 35.0f && timeline < 55.0) {
			model_view *= Translate(prevX, -.75f, 4.5f);
			model_view *= RotateY(135);
		}
		drawDiaoSi(0.3f, 0.6f, .6f);
	model_view = mvstack.pop();

	// Draw Female
	if(timeline > 8.0f) {
		mvstack.push(model_view);
			if(timeline < 12.0f) {
				model_view *= Translate(29.0f-2*timeline, -1.25f, 4.5f);
				model_view *= RotateY(-90);
			}

			if(timeline > 12.0f && timeline < 13.5) {
				model_view *= Translate(5.0f, -1.25f, 4.5f);
				model_view *= RotateY(-90+temp*1.25);
			}

			if(timeline > 13.5f && timeline < 40.0f || timeline > 53.75)
				model_view *= Translate(5.0f, 0.0f, 2.25f);

			if(timeline >= 40.0f && timeline < 59.0f) {
				model_view *= Translate(5.5f+temp6/4, -1.25f, 4.5f);
				model_view *= RotateY(90);
			}

		/*/	if(timeline > 50.0f && timeline < 53.75) {
				if(15.0f-(temp2-560)/10 > 5.0) {
					model_view *= Translate(15.0-(temp2-560)/10, -1.25f, 4.5f);
					prevY = 15.0-(temp2-560)/10;
				}
				else
					model_view *= Translate(prevY, -1.25f, 4.5f);

				if(timeline < 52.6f)
					model_view *= RotateY(-90);
				else
					model_view *= RotateY(-90+temp*2);
			}
		 /*/
			if(timeline < 59.0)
				drawFemale(1.0f, 0.0, 1.0f);
			//else
			//	drawFemale(1.0f, 1.0f, 1.0f);

		model_view = mvstack.pop();
	}

	if(timeline > 59.0)
		exit(0);

	getFPS();

    glutSwapBuffers();
    if(Recording == 1)
        FrSaver.DumpPPM(Width, Height) ;
}
Ejemplo n.º 11
0
/*******************************************************************************
Function that gets called by the event handler to draw the scene.
*******************************************************************************/
void display(void)
{
	//glClearColor (red, green, blue, alpha)
	glClearColor(1.0f, 1.0f, 1.0f, 1.0f);		//Set the background color.
	
	//OK, now clear the screen with the background color.
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	//Load initial matrix transformation.
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	//Locate the camera.
	gluLookAt (g_eye[X], g_eye[Y], g_eye[Z], g_ref[X], g_ref[Y], g_ref[Z], 0.0, 1.0, 0.0);

	HMatrix arcball_rot;
	Ball_Value(g_arcBall,arcball_rot);
	glMultMatrixf((float *)arcball_rot);

	//Scale the scene in response to mouse commands.
	glScalef(g_zoom, g_zoom, g_zoom); 

	////////////////////// Draw the geometries in World ////////////////////////

	//drawGeom( Object.Geom );
	//drawGeom( Rod.Geom );
	drawGeom(body.Geom);
	drawGeom(middleRightLeg.Geom);
	drawGeom(middleLeftLeg.Geom);
	drawGeom(middleLeftOuterLeg.Geom);
	drawGeom(middleRightOuterLeg.Geom);
	drawGeom(brLeg.Geom);
	drawGeom(backRightOuterLeg.Geom);
	drawGeom(blLeg.Geom);
	drawGeom(backLeftOuterLeg.Geom);
	drawGeom(frLeg.Geom);
	drawGeom(frontRightOuterLeg.Geom);
	drawGeom(flLeg.Geom);
	drawGeom(frontLeftOuterLeg.Geom);

	for (auto i = 0; i < animator.foodParticles.size(); ++i)
	{
		drawGeom(animator.foodParticles.at(i).odeObject.Geom, animator.foodParticles.at(i).colored );

	}

	drawGeom(target.Geom);

	glPushMatrix();						//Draw the collision plane.
	glTranslated( 0.0, -0.05, 0.0 );
	glScaled( 140.0, 0.1, 140.0 );
	GDrawing::setColor( 0.4, 0.4, 1.0 );
	GDrawing::drawCube();
	glPopMatrix();

	////////////////////////////////////////////////////////////////////////////

	glutSwapBuffers();
	if( g_recording == 1)
		g_frameSaver.DumpPPM(g_width,g_height);
}