09520249004_hendrikus

Click here to load reader

Upload: octo-ayomy

Post on 02-Jul-2015

162 views

Category:

Documents


0 download

TRANSCRIPT

UTS GRAFIKA KOMPUTERNama :Hendrikus Nim :09520249004 Kelas :F4.1

PANDANGAN 3Dy OpenGL menerapkan konsep pandangan persepktif dengan

fungsi gluPerspektif. Fungsi ini terdiri dari 4 variabel yaitu sudut penglihatan, aspek rasio, jarak bidang dekat dan jarak bidang jauh. y Untuk mengaktifkan fungsi gluPerspective(...) maka perlu didahului dengan pengaktifan matriks proyeksi dan matriks identitas. Ini diwakili dengan potongan kode di bawah ini: glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPrespective(viewAngle,aspectRatio,N,F);

LANJUTAN...y selain

fungsi gluPerspective(..),OpenGL juga mengadakan alternatif [penempatan kamera untuk mengaktifkan trasnformasi baik itu translasi atau rotasi. Ini berarti dapat membuat program dengan bermain di transformasi atau pengubahan posisi dan atau orientasi kamera. Fungsi yang dimaksud adalah gluLookAt(...). Untuk mengaktifkan fungsi gluLookAt(...) maka perlu didahului dengan mengaktifkan matriks model pandangan dan matriks identitas. Ini diwakili dengan potongan kode di bawah ini: glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(mata.x,mata.y,mata.z,lihat.x,lihat.y,lihat.z,at as.x,atas.y, atas.z)

PROYEK 1y glOrtho digunakan untuk membuat kotak tempat obyek yang

sedang digambar. Argumen fungsi pada glOrtho adalah sebagai berikut : void glOrtho(double left, double right, double bottom, double top, double near, double far); contohnya : glOrtho(-10.0, 10.0, -10.0, 10.0, -10.0, 10.0); artinya : mendefinisikan besarnya sistem koordinat dengan range sumbu x adalah [-10,10], range untuk sumbu y adalah [-10,10], range untuk sumbu z adalah [-10,10]

CONTOH PROGRAM PROYEK 1

PROYEK 2y Untuk mengatur agar posisi terlihat dari samping kanan maka

diberi fungsi: gluLookAt(30.0,0.0,0.0, 0.0,0.0,0.0, 0.0,1.0,0.0); y Untuk mengatur besarnya tampilan gambar (zoom in zoom out) maka diberi fungsi : gluPerspective(20.0,(GLfloat) w/(GLfloat) h,1.0,50.0);

CONTOH PROGRAM PROYEK 2

ANIMASIAnimation adalah Illusion Of Motion yang dibuat dari image statis yang ditampilkan secara berurutan. Pada video atau film, animasi merancu pada teknik dimana setiap frame dalam film dibuat secara terpisah. Frame bisa dihasilkan dari komputer, dari fotografi atau dari gambar lukisan. Ketika frame-frame tersebut digabungkan, maka terdapat ilusi perubahan gambar, sesuai dengan teori yang disebut dengan persistance of vision.

PROYEK 3#include #include static int year = 0; static int day = 0; static int winWidth = 1000; static int winHeight = 700; void init(void) /* atur pencahayaan (diffuse) */ { GLfloat ambient[] = {0.0, 0.0, 0.0, 1.0}; GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; GLfloat specular[] = {1.0, 1.0, 1.0, 1.0}; GLfloat position[] = {0.0, 0.0, -3.0, 1.0};

glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, specular); glLightfv(GL_LIGHT0, GL_POSITION, position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_AUTO_NORMAL); glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); } /* black background */

void display(void) /* spheres dengan berbagai macam warna pencahayaan */ { GLfloat blue_ambient[] = { 0.0, 0.6, 0.4, 1.0 }; GLfloat blue_diffuse[] = { 0.0, 0.6, 0.6, 1.0 }; /* blue ambient */ /* blue diffuse */

GLfloat sun_ambient[] = { 1.2, 0.9, 0.0, 0.0 }; /* sun ambient */ GLfloat sun_diffuse[] = { 2.0, 0.9, 0.0, 0.0 }; /* sun diffuse */ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT, sun_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, sun_diffuse); glMaterialfv(GL_BACK, GL_AMBIENT, sun_ambient); glMaterialfv(GL_BACK, GL_DIFFUSE, sun_diffuse); glutSolidSphere(0.8, 50, 184); /* gambar matahari */

glPushMatrix(); glRotatef ((GLfloat)year, 0.0, 1.0, 0.0); glTranslatef (2.0, 0.0, 0.0); glRotatef ((GLfloat)day, 0.0, 1.0, 0.0); glMaterialfv(GL_FRONT, GL_AMBIENT, blue_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, blue_diffuse); glutSolidSphere(0.3, 50, 12); /* gambar planet biru*/ glPopMatrix(); glutSwapBuffers(); } void reshape (int w, int h) {

winWidth = w; winHeight = h; glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective(70.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glEnable(GL_DEPTH_TEST); } void keyboard (unsigned char key, int x, int y) {

switch (key) { case 'd': day = day + 10; glutPostRedisplay(); break; case 'D': day = day - 10; glutPostRedisplay(); break; case 'y': year = year + 5; glutPostRedisplay(); break; case 'Y': year = year - 5; glutPostRedisplay(); break; case 27: exit(0); break; default: break; } }

int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (500, 400); glutInitWindowPosition (100, 100); glutCreateWindow ("Hendrikus_09520249004"); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; } Tampilan :

CONTOH PROGRAM PROYEK 3