Outline
Script dasar pemrograman 3D Script fungsi bentuk 3D
Topik 1
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);
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
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); ???
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 (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
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();
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