TUGAS GRAFIKA KOMPUTER membuat animasi
Nama : Ananda Putri Syaviri 130533608243 - Darma Rusdianto 130533608 - Iman Zulfahmi Mawarid 1305336082 -
1) Animasi 3D Sintaks :
// dimodifikasi dari http://cg.lskk.ee.itb.ac.id/SemesterII-20132014/TugasTutorial/23213347
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <glut.h> float z_pos=-10.0f; float rot=0.0f; void resize( int width, int height){glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, ( float )width/( float )height, 1.0, 300.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
void myTimeOut( int id)
{
// dipanggil jika timer event // ...advance the state of animation incrementally... //penambahan rotasi animasi
rot+=15; glutPostRedisplay(); // pemanggilan redsiplay glutTimerFunc(100, myTimeOut, 0); // pemanggilan untuk timer event selanjutnya }
void myKeyboard( unsigned char key, int x, int y) //tombol untuk merubah ukuran objek
{
if ((key== 'a' )||(key== 'p' )) z_pos-=0.1f; if ((key== 'j' )||(key== 'n' )) z_pos+=0.1f;
}
void mydisplay( void ) {
glClear(GL_COLOR_BUFFER_BIT );
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); glTranslatef(0.0,0.0f,z_pos); glRotatef(rot, 0, 1, 0); // fungsi rotasi objek ke arah x=0, y=1, z=0) glBegin(GL_QUADS); //bentuk objek kubus dengan gl Quads
// bagian depan, hijau glColor3f(0.0,1.0,0.0); glVertex3f(-1.0f, -1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
// bagian belakang, merah
glColor3f(1.0,0.0,0.0); glVertex3f( 1.0f, -1.0f, -1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
// bagian atas, kuning
glColor3f(1.0,1.0,0.0); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
// bagian belakang, biru
glColor3f(0.0,0.0,1.0); glVertex3f(-1.0f, -1.0f, -1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); glVertex3f( 1.0f, -1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
// bagian kanan, magenta
glColor3f(01.0,0.0,1.0); glVertex3f( 1.0f, -1.0f, -1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
// Left Face, cyan
glColor3f(0.0,1.0,1.0); glVertex3f(-1.0f, -1.0f, -1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glEnd(); glFlush(); glutSwapBuffers(); }
void init() {
glClearColor( 0.0, 0.0, 0.0, 1.0 ); // A Background Clear Color glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, (GLdouble)500.0/(GLdouble)500.0, 0, 100); glMatrixMode(GL_MODELVIEW);
return ;
}
//fungsi utama int main( int argc, char ** argv)
{ glutInit(&argc,argv); glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); glutInitWindowSize(500,500); glutInitWindowPosition(0,0); glutCreateWindow( "ANIMASI OBJEK 3D" );
// pemanggilan fungsi
glutDisplayFunc(mydisplay); glutKeyboardFunc(myKeyboard); glutTimerFunc(100, myTimeOut, 0); glutReshapeFunc(resize); init(); glutMainLoop();
return 0;
}
Screenshoot : tampilan awal
mengecil jika menekan tombol ( a/ p) membesar jika menekan tombol ( j /n.) 2) Screensaver
Sintaks:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <glut.h> float z_pos=-8.0f; float rot=0.0f; void myTimeOut( int id)
// dipanggil jika timer event // ...advance the state of animation incrementally... //penambahan rotasi animasi
rot+=10; glutPostRedisplay(); // pemanggilan redsiplay glutTimerFunc(200, myTimeOut, 0); // pemanggilan untuk timer event selanjutnya }
void init() {
glClearColor( 0.0, 0.0, 0.0, 1.0 ); // A Background Clear Color glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30, (GLdouble)100.0/(GLdouble)100.0, 0, 50); glMatrixMode(GL_MODELVIEW);
return ;
}
void mydisplay() {
glClear(GL_COLOR_BUFFER_BIT); glTranslatef(0.0,0.0f,z_pos); glRotatef(rot, 1, -4, 0); glBegin(GL_POLYGON); glColor3f(0,0,1); glVertex2f(-0.5,-0.5); glColor3f(0,1,1); glVertex2f(-0.75,0); glColor3f(1,0,0); glVertex2f(-0.5,0.5); glColor3f(1,1,0); glVertex2f(0,0.75); glColor3f(1,0,1); glVertex2f(0.5,0.5); glColor3f(1,0,0); glVertex2f(0.75,0); glColor3f(0,1,0); glVertex2f(0.5,-0.5); glColor3f(0,0,1); glVertex2f(0,-0.75); glEnd(); glFlush(); glutSwapBuffers();
}
int main ( int argc, char ** argv) {
glutInitWindowSize(500,500); glutCreateWindow( "Screensaver biasa" ); glutDisplayFunc(mydisplay); init(); glutTimerFunc(200, myTimeOut, 0); glutMainLoop();
}
Screenshoot:
Berputar kea rah kanan, x=1, y=-4, z=0
Ada perubahan bentuk dari besar ke kecil kemudian ada efek kelap-kelip, saat ukuran
maksimum, maka otomatis menghilang, kemudian muncul lagi, yang sebenarnya objek tersebut berputar dengan sudut 30derajat.