2090 - Laporan Tugas Grafika Komputer-MerancangBangun3DdenganOpenGLdanVB6
2090 - Laporan Tugas Grafika Komputer-MerancangBangun3DdenganOpenGLdanVB6
PENDAHULUAN
1. 1 Latar Belakang
Perkembangan grafika komputer menuntut para pengembang
sistem aplikasi grafika komputer untuk dapat mengembangkan suatu
informasi yang dilengkapi dengan visualisasi dan animasi, agar dapat lebih
mudah dipahami oleh pihak yang menggunakan sistem tersebut. Grafika
komputer telah menunjukkan kemajuan yang pesat dalam pengembangan
berbagai aplikasi untuk menghasilkan gambar. Grafika komputer digunakan
untuk menunjang berbagai bidang dengan teknologi grafika berbasis
komputer. Penggunaan grafika komputer telah lama digunakan dalam
beberapa macam aplikasi, diantaranya pendidikan, kedokteran, fisika,
matematika, multimedia, dan lain-lain. Pada saat ini grafika komputer sudah
digunakan pada bidang sains, engineering, kedokteran, bisnis, industri,
pemerintahan, seni, hiburan, iklan, pendidikan, dan lain-lain. Oleh karena
itu, sudah semakin banyak pula bahasa pemrograman yang dilengkapi
dengan tools/library pembuatan grafik Salah satu tools/library pembuatan
aplikasi grafik adalah OpenGL (Open Graphics Library). OpenGL(Open
Graphics Library) adalah suatu spefikasi grafik yang low-level yang
menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis,
dan lingkaran. OpenGL digunakan untuk mendefinisikan suatu objek, baik
objek 2 dimensi maupun objek 3 dimensi. Dan makalah yang disampaikan
kali ini khusus membahas mengenai perancangan bangun 3 dimensi
menggunakan Visual Basic 6.0
1. Batasan Masalah
Batasan masalah pada perancangan bangun 3 Dimensi ini adalah :
1. Penggambaran objek 3D didalam komputer.
2. Penerapan konsep transformasi menggunakan fungsi-fungsi dari
OpenGL.
3. Pemrograman menggunakan bahasa Visual Basic 6.0
2. Tujuan
1. Menyelesaikan Ujian Akhir Semester mata kuliah Grafika Komputer
semester 6.
2. Mahasiswa mampu menggampar objek 3 Dimensi menggunakan
bahasa pemrograman Visual Basic dan OpenGL
3. Mahasiswa mampu mengimplementasikan fungsi transformasi 3D.
3. Sistematika Penulisan
Agar makalah dipahami dengan baik oleh pembaca, maka penyusun
membuat sistematika penulisan makalah sebagai berikut :
BAB I PENDAHULUAN
Pendahuluan berisikan latar belakang, identifikasi masalah, pembatasan
masalah, Tujuan dibuatnya makalah dan sistematika penulisan makalah.
LANDASAN TEORI
Obyek 3-D adalah sekumpulan titik-titik 3-D (x,y,z) yang membentuk luasan-
luasan (face) yang digabungkan menjadi satu kesatuan. Face adalah gabungan
titik-titik yang membentuk luasan tertentu atau sering dinamakan dengan sisi.
Titik 0 (0,150,0)
Titik 1 (100,0,0)
Titik 2 (0,0,100)
Titik 3 (-100,0,0)
Titik 4 (0,0,-100)
1. Membersihkan Windows
dengan gambar yang berasal dari perintah gambar paling akhir, jadi
latar belakang dengan warna hitam dan buffer apa yang akan
dibersihkan. Dalam hal ini, buffer warna yang akan dibersihkan karena
glClearColor 0, 0, 0, 0
glColor3f 1, 0, 0
dan lain-lain. Pada arsitektur yang demikian, proses tidak dilakukan pada
glFlush
dengan pixel. Pixel adalah elemen terkecil dari layar monitor yang
poligon, objek dan lain-lain dapat dilakukan melalui urutan pixel yang
caranya menggambar titik, garis, dan lainnya yang berada dalam ruang tiga
Area gambar yang dibatasi ini adalah ruang koordinat kartesian yang
mempunyai range dari -100 hingga 100 untuk sumbu x, y dan z. Secara
perintah-perintah OpenGL.
apakah titik tersebut akhir dari sebuah garis, atau merupakan sebuah titik
sudut dari sebuah poligon atau lainnya, karena definisi geometrik dari
sebuah vertex sebenarnya bukanlah hanya sebuah titik pada layar tetapi
lebih merupakan sebuah titik dimana terjadi interseksi antara dua buah
Primitif adalah interpretasi sejumlah set atau deretan titik pada sebuah
bentuk yang digambar pada layar. Pada OpenGL terdapat sepuluh macam
primitif dari mulai menggambar sebuah titik hingga poligon. Untuk itu
primitif. Dan untuk mengakhiri deretan titik ini digunakan perintah glEnd.
suatu objek, baik pada sumbu x, sumbu y, atau sumbu z. Fungsi yang
Contohnya :
glTranslatef 2, 2, 2
glRotatef -30, 2, 2, 1
skalasi ialah :
titik atau atau vertex pada objek dengan faktor skala pada masing-
glScalef(2, 2, 2)
BAB III
PEMBAHASAN
1. Perancangan Form
Berikut ini adalah properties untuk masing-masing objek pada form di atas :
CommandButton :
(Name) : Command1
Caption : Tampilkan
TextBox :
(Name) : Text1
Caption : Aksi
HscrollBar1 :
(Name) : HScroll1
Min : -360
Max : 360
HscrollBar2 :
(Name) : HScroll2
Min : -360
Max : 360
HscrollBar3 :
(Name) : HScroll3
Min : -360
Max : 360
2. Perancangan Bangun 3D
Bangun 3D yang dibuat akan ditampilkan saat tombol “Tampilkan” ditekan.
Berikut tampilannya :
'VARIABEL Buatan
Public Type Titik3D
x As Single
y As Single
z As Single
geser As Double
End Type
prisma_bawah(1 To 4) As Titik3D
prisma_belakang(1 To 4) As Titik3D
prisma_kanan(1 To 4) As Titik3D
prisma_kiri(1 To 4) As Titik3D
prisma_depan(1 To 4) As Titik3D
tanah_bawah(1 To 4) As Titik3D
tanah_atas(1 To 4) As Titik3D
tanah_belakang(1 To 4) As Titik3D
tanah_depan(1 To 4) As Titik3D
tanah_kanan(1 To 4) As Titik3D
tanah_kiri(1 To 4) As Titik3D
pohon_atas(1 To 4) As Titik3D
pohon_bawah(1 To 4) As Titik3D
pohon_kanan(1 To 4) As Titik3D
pohon_kiri(1 To 4) As Titik3D
pohon_Depan(1 To 4) As Titik3D
pohon_belakang(1 To 4) As Titik3D
limas_kanan(1 To 4) As Titik3D
limas_kiri(1 To 4) As Titik3D
limas_Depan(1 To 4) As Titik3D
limas_belakang(1 To 4) As Titik3D
End Type
Mendaftarkan variabel yang digunakan.
fungsi OpenGL.
Exit Sub
ee: MsgBox ""
End
End Sub
Digunakan untuk menampilkan pesan/informasi kepada user.
Sub DisableOpenGL()
wglMakeCurrent 0, 0
wglDeleteContext hrc
End Sub
Sub Inisialisasi_Awal()
'========== Inisialisasi ==========
EnableOpenGL Me.hDC
hrc = wglCreateContext(hDC)
wglMakeCurrent hDC, hrc
glClear clrColorBufferBit
glMatrixMode GL_PROJECTION
glLoadIdentity
End Sub
wglCreateContext merupakan fungsi OpenGL yang membuat rendering
baru yang sesuai untuk menggambar sesuai dengan referenci hDC, dimana
rendering context tersebut sama seperti pixel format yang telah diinisialisasi.
Sub Bersihkan_Layar()
glClearColor 0.4, 1, 0.3, 0
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
End Sub
'====limas pohon====
'titik 1 bagian depan
limas.limas_Depan(1).x = -8
limas.limas_Depan(1).y = 5
limas.limas_Depan(1).z = -2
glColor3f 1, 1, 0.8
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.6, 0
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.5, 0
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
End Sub
Tampilan :
2. Membuat objek batang pohon
'titik 3 bagian depan
With pohon.pohon_Depan(3)
.x = -4
.y = 5
.z = 0
End With
glColor3f 1, 0, 0.3
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_atas(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
'======PRISMA======
'titik 1 bagian depan
prisma.prisma_depan(1).x = 0
prisma.prisma_depan(1).y = 5
prisma.prisma_depan(1).z = -3
'titik 2 bagian depan
With prisma.prisma_depan(2)
.x = 10
.y = 5
.z = -3
End With
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With prisma.prisma_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 1
glBegin bmTriangles
For ttk = 1 To 3
With prisma.prisma_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.4, 1
glBegin bmPolygon
For ttk = 1 To 4
With prisma.prisma_depan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
Tampilan :
4. Membuat objek dinding rumah
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0, 0.3
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_atas(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_Depan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
Tampilan :
'=============balok tanah=====
'titik 1 bagian depan
tanah.tanah_depan(1).x = -8
tanah.tanah_depan(1).y = 0
tanah.tanah_depan(1).z = 0
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.5, 0, 0
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.7, 0, 0
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0, 0.3
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_atas(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
Tampilan :
Jika seluruh scrip diatas kita gabungkan, maka keseluruhan objek berbentuk
rumah akan tampil, sebagai berikut :
1. Membuat Transformasi Objek
1. Rotasi
a. Berdasarkan sumbu-X
Private Sub HScroll1_Change()
Call Bersihkan_Layar
'=====================================
glRotatef HScroll1.Value, 1, 0, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
b. Berdasarkan sumbu-Y
Private Sub HScroll2_Change()
Call Bersihkan_Layar
'=====================================
glRotatef HScroll2.Value, 0, 1, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
Script diatas diletakkan pada HScroll2.
c. Berdasarkan sumbu-Z
Private Sub HScroll3_Change()
Call Bersihkan_Layar
'=====================================
glRotatef HScroll2.Value, 0, 0, 1
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
glTranslatef 1 / 10, 0, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
glTranslatef 1 / 10, 0, 0 Digunakan untuk memindahkan
posisi objek berdasarkan sumub-X ke arah kiri, yJaitu bernilai 1. Nilai
10 menunjukkan seberapa jauh objek dipindahkan pada sumbu-X.
fungsi translasi ini akan berfungsi jika pada objek Text pada form
diberi inputan berupa huruf “z” yang pada KeyAscii nya adalah 120.
b. Ke arah kanan
If KeyAscii = 122 Then
Call Bersihkan_Layar
'=====================================
'glRotatef HScroll2.Value, 0, 1, 0
glTranslatef -1 / 10, 0, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
fungsi translasi ini akan berfungsi jika pada objek Text pada form
diberi inputan berupa huruf “x” yang pada KeyAscii nya adalah 122.
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
glScalef 1.05, 1.05, 1.05 Digunakan untuk mengubah
ukuran objek menjadi lebih besar sebesar 0.05x dari ukuran semula.
fungsi translasi ini akan berfungsi jika pada objek Text pada form
diberi inputan berupa huruf “c” yang pada KeyAscii nya adalah 99.
b. Memperkecil
If KeyAscii = 118 Then
Call Bersihkan_Layar
'=====================================
glScalef 0.95, 0.95, 0.95
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
glScalef 0.05, 0.05, 0.05 Digunakan untuk mengubah
ukuran objek menjadi lebih kecil sebesar 0.05x dari ukuran semula.
Fungsi translasi ini akan berfungsi jika pada objek Text pada form
diberi inputan berupa huruf “v” yang pada KeyAscii nya adalah 118.
4.1 Kesimpulan
Dari pembahasan dapat diambil kesimpulan sebagai berikut :
4.2 Saran
1. Terlebih dahulu harus belajar algoritma, karena algorima adalah salah satu
kunci untuk dapat memahami permasalahan yang akan dihadapi
didalam pembuatan grafik komputer.
2. Bila ingin membuat suatu gambar/grafik, pilihlah program aplikasi yang
lebih bagus menurut anda, lebih kompleks, dan yang khusus
menanganipembuatan gambar/grafik serta yang mengikuti
perkembangan jaman .
3. Harus memahami sintak-sintak (gaya bahasa penulisan dalam bahasa
pemrograman ) yang terdapat dalam bahasa pemrograman ataupun
fitur – fitur yang terdapat didalam program aplikasi.