Laporan Tugas Grafika Komputer - Merancang Bangun 3D Dengan OpenGL Dan VB 6
Laporan Tugas Grafika Komputer - Merancang Bangun 3D Dengan OpenGL Dan VB 6
PENDAHULUAN
1. 1 Latar Belakang
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
BAB II
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.
Sistem Koordinat 3 Dimensi
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
2. Spesifikasi Warna
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
sederhana bidang ini dapat dianggap sebagai bidang gambar untuk
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
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
fungsi OpenGL.
Exit Sub
ee: MsgBox ""
End
End Sub
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
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
Sub Tampilkan_Gambar()
'Menampilkan Hasil
glFlush
SwapBuffers Me.hDC
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
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
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 :
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
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
b. Berdasarkan sumbu-Y
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
Script diatas diletakkan pada HScroll2.
c. Berdasarkan sumbu-Z
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
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.
If KeyAscii = 99 Then
Call Bersihkan_Layar
'=====================================
glScalef 1.05, 1.05, 1.05
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
fungsi translasi ini akan berfungsi jika pada objek Text pada form
diberi inputan berupa huruf “c” yang pada KeyAscii nya adalah 99.
b. Memperkecil
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.