pemrograman 3d opengl

Post on 02-Jan-2016

560 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

Tentang Pemrograman 3D OpenGL

TRANSCRIPT

3D Open GLGrafika KomputerSemester Ganjil 2012/13

Outline• Script dasar pemrograman 3D• Script fungsi bentuk 3D

SCRIPT DASAR PEMROGRAMAN 3DTopik 1

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”.

FUNGSI BENTUK 3DTopik 2

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 : diameterB : slicesC : 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 radiusB : Outer radiusC : SideD : Rings

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

Cone (Kerucut)• Script Untuk membuat kerucut adalah :

glutWireCone(A, B, C, D);

• Keterangan :A : diameter penampangB : tinggi (height)C : sliceD : stack

Langkah Praktikum• Buatlah Cone dengan ukuran :• Diameter : 1.5• Tinggi : 10.0• Slices : 20.0• Stacks : 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 awalY : posisi y awalZ : 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>.exeContoh :

05523241• Pengumpulan dilakukan

dengan meng-upload pada link upload di klasiber.

top related