Anda di halaman 1dari 39

3D Open GL

Grafika Komputer Semester Ganjil 2012/13

Outline
Script dasar pemrograman 3D Script fungsi bentuk 3D

Topik 1

SCRIPT DASAR PEMROGRAMAN 3D

Inisialisasi (Script Dasar)


#include <windows.h> #include <gl/gl.h> #include <gl/glut.h> void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); glLoadIdentity(); gluLookAt(1.0, 2.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glScalef(2.0, 2.0, 2.0); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.5, 0.0); glutWireCube(1.5); //statement glFlush(); }

void reshape (int w, int h) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 20.0); glMatrixMode(GL_MODELVIEW); }

int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow("Batang Kubus"); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); }

Keterangan
#include <windows.h> #include <gl/gl.h> #include <gl/glut.h>

File include yang digunakan untuk memanggil windows dan library glut (library glut diletakkan pada folder gl). Pada praktikum hari ini, kita menambahkan library gl.h yang ada pada folder gl.

glShadeModel
glShadeModel(GL_FLAT); untuk menentukan teknik shading yang akan digunakan. Ada dua teknik shading yang disediakan, yaitu :
Smooth (GL_SMOOTH) default
Untuk warna lebih dari satu.

Flat (GL_FLAT)
Untuk satu warna.

glLoadIdentity
glLoadIdentity(); Untuk membersihkan (mereset) modifiabel matrix yang ada saat ini, untuk kebutuhan penggunaan selanjutnya. Anda akan selalu memanggil fungsi ini sebelum melakukan specifying projection, viewing transformations, atau specifying a model transformation.

gluLookAt (1)
gluLookAt(1.0, 2.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

Untuk menentukan posisi view point posisi melihat (mata/kamera). FormatScriptnya :


gluLookAt(Xm, Ym, Zm, Xc, Yc, Zc, Xup, Yup, Zup);
Keterangan : Xm, Ym, Zm letak mata /camera (view point). Xc, Yc, Zc posisi center (obyek penglihatan). Xup, Yup, Zup posisi up mata/kamera.

gluLookAt (2)
Nilai default :
gluLookAt(0.0, 0.0, 0.0, 0.0, 0.0, -100.0, 0.0, 1.0, 0.0);

gluLookAt (3)
Misal diisikan nilai berikut:
gluLookAt(4.0, 2.0, 1.0, 2.0, 4.0, -3.0, 2.0, 2.0, -1.0);

Langkah Praktikum
Buatlah View Point :
Letak Mata/Kamera : 3.0, 3.0, 8.0 Posisi Center : 0.0, 0.0, -1.0 Posisi UP : 0.0, 1.0, 1.0

glScale
glScalef(2.0, 2.0, 2.0); Untuk mengubah ukuran obyek.

Scaling an obyek

Langkah Praktikum
Buatlah skala dengan ukuran :
X : 2.0 Y : 2.0 Z : 1.0

Buatlah skala dengan ukuran :


X : 2.0 Y : 1.5 Z : 1.0

Kembalikan ke nilai :
X : 2.0 Y : 2.0 Z : 2.0

Mengingat Kembali..!!
glOrtho(-2.0, 2.0, -2.0, 2.0, -2.0, 2.0 ); ??? glClear(GL_COLOR_BUFFER_BIT); ???

glColor3f(1.0, 0.5, 0.0); ???

glutWireCube(1.5); //statement Statement Yang akan di isi dengan script-script bangun 3D

glFlush(); ???

glMatrixMode
glMatrixMode(GL_PROJECTION); Untuk mengindikasikan tekstur matrix yang digunakan sebelum memproses perintah transformasi. Terdapat 3 matrix mode, yaitu :
Gl Mode View (GL_MODELVIEW) Gl Projection (GL_PROJECTION) Gl Texture (GL_TEXTURE)

Note
Jangan sampai lupa untuk mereset matrix mode dengan perintah glLoadIdentity();.

glFrustum (1)
glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 20.0); Untuk membuat perspektif View. Format Scriptnya :

glFrustum(L, R, B, U, N, F); Keterangan : L left R right B bottom U up N near F far

glFrustum (2)
Perspective Viewing Volume Specified by glFrustum();

Mengingat Kembali..!!
glutInit(&argc, argv); ??? glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); ??? glutInitWindowSize(500, 500); ???

glutInitWindowPosition(100, 100); ??? glutCreateWindow("Batang Kubus"); ??? init(); glutDisplayFunc(display); glutMainLoop(); ??? ??? ???

glutReshapeFunc
glutReshapeFunc(reshape); Perintah yang digunakan untuk me-reshape prosedur dengan nama reshape.

Topik 2

FUNGSI BENTUK 3D

Cube
Script Untuk membuat kubus adalah : glutWireCube(n); Keterangan : n : ukuran besarnya kubus

Langkah Praktikum
Buatlah kubus dengan ukuran 3.

Sphere
Script Untuk membuat bola adalah : glutWireSphere(A, B, C); Keterangan : A : diameter B : slices C : stacks

Langkah Praktikum
Buatlah Bola dengan ukuran :
Diameter : 3.0 Slices : 20.0 Stacks : 10.0

Torus (Donat)
Script untuk membuat donat adalah : glutWireTorus(A, B, C, D); Keterangan : A : Inner radius B : Outer radius C : Side D : Rings

Langkah Praktikum
Buatlah Torus dengan ukuran :
Inner rad Outer rad Slices Rings : : : : 1.0 2.0 10.0 20.0

Cone (Kerucut)
Script Untuk membuat kerucut adalah : glutWireCone(A, B, C, D); Keterangan : A : diameter penampang B : tinggi (height) C : slice D : stack

Langkah Praktikum
Buatlah Cone dengan ukuran :
Diameter Tinggi Slices Stacks : : : : 1.5 10.0 20.0 15.0

Teapot (teko teh)


Script Untuk membuat teapot adalah : glutWireTeapot(X); Keterangan : X : ukuran besarnya teapot.

Langkah Praktikum
Buatlah Teapot dengan ukuran : 2.0

Icosahedron
Icosahedron merupakan bangun ruang dengan 12 titik, 20 permukaan, dan 30 sisi. Script Untuk membuat Icosahedron adalah : glutWireIcosahedron();

Octahedron
Octahedron merupakan bangun ruang dengan 8 sisi atau permukaan. Script Untuk membuat Octahedron adalah : glutWireOctahedron();

Tetrahedron
Tetrahedron merupakan bangun ruang dengan 4 sisi tetapi bukan persegi / kotak / kubus / balok. Script Untuk membuat Tetrahedron adalah : glutWireTetrahedron();

Dodecahedron
Dodecahedron merupakan bangun ruang dengan 12 permukaan, 30 titik ujung dan 20 titik. Script Untuk membuat Dodecahedron adalah : glutWireDodecahedron();

Langkah Praktikum
Buatlah obyek Wire Icosahedron. Buatlah obyek Wire Octahedron. Buatlah obyek Wire Tetrahedron. Buatlah obyek Dodecahedron.

Munculkan kempatnya sekaligus, apa yang terjadi ??? Gambar akan saling menumpuk

glTranslate
Gl Translate digunakan untuk memposisikan obyek 3D yang dibuat dengan script fungsi 3D. Format penulisan script :
glPushMatrix(); glTranslatef(X, Y, Z); //statement 3D glPopMatrix();

Keterangan : X : posisi x awal Y : posisi y awal Z : posisi z awal

Langkah Praktikum
Buatlah Wire Icosahedron dengan posisi : 1.5, 3.0, 1.0 Buatlah Wire Octahedron dengan posisi : 3.0, -0.5, 1.0 Buatlah Wire Tetrahedron dengan posisi : -1.0, -3.0, 1.0 Buatlah Wire Dodecahedron dengan posisi : -2.5, 1.0, 1.0

Tugas Online (Klasiber)


Buatlah bentuk wire 3D, dengan output menyerupai gambar disamping ini. (warna bebas) Kumpulkan ekstensi .exe nya dengan format : <nim>.exe Contoh : 05523241 Pengumpulan dilakukan dengan meng-upload pada link upload di klasiber.

Anda mungkin juga menyukai