Anda di halaman 1dari 30

Page | 1

KELAS
TI4 D SORE
LAPORAN PRAKTIKUM
KOMPUTER GRAFIK


NAMA
PRAKTIKUM
NOMOR
MAHASISWA
TANGAAL
KUMPUL
TANDA TANGAN

PRAKTIKUM

DEVI RISMAYATI

1214370337

12 JUNI 2014

DEVI



NAMA
PENILAI

TANGGAL
KOREKSI

NILAI
TANDA TANGAN

DOSEN

Indri Sulistya
Ningsih




UNIVERSITAS PANCA BUDI
FAKULTAS TEKNIK
JURUSAN INFORMATIKA
M E D A N
2 0 1 4
Page | 2

DAFTAR ISI


DAFTAR ISI... 2

Kata Pengantar 3

BAB I Pendahuluan 4
A. Latar Belakang. 4
B. Tujuan Praktikum. 5

BAB II Landasan Teori. 6
A. Pengertian Sintax Sintax 6
B. Pengertian Dari 2D dan 3D.. 7
C. Perbedaan Dari 2D dan 3D.. 10

BAB III Hasil Percobaan / Praktikum 14
A. Contoh dan Fungsi Dari Primitif Drawing. 14
B. Modul 1 Diamond. 16
C. Modul 2 Bunga. .. .. 18
D. Modul 3 Kubus.. .. 19
E. Modul 4 Pengcahayaan pada Bola 23
F. Modul 5 Simulasi Planet.. 25

BAB IV Analisa Hasil Percobaan.. 26

Penutup29
A.Kesimpulan 29
A. Saran Program dan Hasil Aplikasinya 29

Daftar Pusaka.. 30







Page | 3


KATA PENGANTAR
Segala puji bagi allah, serta syukur saya panjatkan kehadiran Allah SWT yang telah
memberikan nikmat dan hikiki dalam kehidupan yaitu nikmat iman dan islam. Shalawat dan
salam atas bimbingan Nabi Besar Muhammad SAW. Dengan rahmat dan hidayahnya saya
dapat menyusun tugas LAPORAN TUGAS PRAKTIKUM KOMPUTER GRAFIK ini.
Penulisan laporan ini di ajukan untuk memenuhi tugas mata kuliah PRAKTIKUM
KOMPUTER GRAFIK yang berguna untuk memahami lebih jauh tentang berbagai hal yang
berhubungan dengan cara kerja pada program komputer grafik, oleh karena itu kritik dan
saran yang membangun sangat di harapkan agar membuat laporan ini menjadi lebih baik.















Page | 4

BAB I
PENDAHULUAN
A.Latar belakang
Komputer Grafik pada dasarnya adalah suatu bidang komputer yang mempelajari cara-cara
untuk meningkatkan dan memudahkan komunikasi antara manusia dengan mesin (komputer)
dengan mesin jalan membangkitkan, menyimpan, dan memanipulasi gambar model suatu
objek menggunakan computer.

Istilah grafis komputer mencakup hampir semua yang ada di komputer yang bukan hanya
teks atau suara. Grafik komputer dan gambar yang dihasilkan komputer menyentuh semua
aspek. Komputer grafis yang dibangun dengan baik dapat menyajikan grafik statistik
kompleks dalam bentuk yang lebih muda untuk memahami dan menafsirkannya. Berbagai
alat dan fasilitas yang tersedia pada komputer grafis memungkinkan pengguna
dapat memvisualisasikan data mereka dan juga komputer grafis banyak digunakan dalam
banyak disiplin ilmu.
.
Aplikasi grafik komputer dapat di bagi menjadi beberapa kelompok yaitu :
Aplikasi pengolahan bentuk citra
Aplikasi pengolah bentuk dan citra merupakan aplikasi yang banyak di gunakan oleh
Desaigner grafis dan ilustrator.
Aplikasi pengolah bentuk
Ditunjukkan untuk pengolah bentuk (shape) yang di susun dari serangkaian garis
sedangkan aplikasi pengolaha citra di tunjukkan untuk memanipulasi titik yang
membentuk sebuah gambar (citra).
Aplikasi presentasi
Banyak di gunakan oleh kalangan bisnis dalam mempresentasikan ide ataupunkonsep.
Dalam perkembangannya, aplikasi presentasi tidak hanya sekedar menampilkan slide
ke layar tapi juga dilengkapi dengan fasilitas animasi contohnya power point,
Micromadia flash.


Page | 5


Animasi
Merupakan aplikasi yang banyak di gunakan dalam bidang periklanan dan film,
dengan menggunakan aplikasi animasi seorang kreator dapat menciptakan benda-
benda maya yang dapat bergerak dalam dunia nyata.
Oleh karena itu sudah banyak pula bahasa pemrograman yang di lengkapi dengan
tools/library pembuatan grafik salah satu contoh tools pembuatan aplikasi grafik adalah
openGL (open Grafics Library). openGL adalah suatu spesifikasi grafik yang low-level yang
menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan lingkaran.
OpenGL digunakan untuk mendefinikasikan suatu objek baik objek 2D maupun objek 3D.
Dan makala yang di sampaikan kali ini khusus membahas mengenai perancang 2 dimensi dan
3 dimensi menggunakan visual C++.
Berikut adalah hal-hal yang diperlukan untuk menjalankan pencahayaan dalam

OpenGL:

1. Tentukan vektor normal untuk setiap vertex dari semua obyek. Vektor normal ini
digunakan dalam perhitungan sudut pantulan oleh OpenGL.
2. Buat, pilih, dan atur posisi satu atau lebih sumber cahaya.

3. Ciptakan dan pilih model/setting pencahayaan.

4. Tentukan sifat-sifat material untuk semua objek.


B.Tujuan praktikum
Menyelesaikan Ujian Akhir Semester mata kuliah komputer grafik semester 4
untuk memungkinkan manusia berkomunikasi lewat gambar, bagan-bagan, dan
diagram.
Mahasiswa mampu menggambar objek 2 dimensi dan 3 dimensi menggunakan bahasa
pemrograman visual C++ dan OpenGL
Mahasiswa mampu mengimplementasikan fungsi transformasi 2 dimensi dan 3
dimensi.
Mahasiswa dapat mengetahui cara pengerjaan pada system computer grafik.
Page | 6

BAB II
Landasan Teori

A. Fungsi dari Syntax Syntax Open GL

1) glutSolidSphere membuat bola berpusat pada asal pemodelan system koordinat.
Utara dan kutub selatan bola berada di Z positif dan negative sumbu-masing-masing
dan meridian utama persimpangan sumbu X positif.
2) glPointSize digunakan untuk mengatur besar titik yang akan digambar.
3) glBegin(GL_POINTS) digunakan untuk menggambar titik.
4) glColor3f adalah warna dari titk yang akan digambar. Format yang digunakan adalah
format RGB.
5) glVertex3f berarti posisi titik adalah 10 satuan ke kiri, 5 satuan ke atas, dan 20 satuan
menjauh dari layar.
6) glTranslatef digunakan untuk merubah titik tengah sumbu koordinat.
7) glLineWidth digunakan untuk menentukan lebar garis yang akan digambar.
8) Gl_Point di gunakan untuk Memperlakukan setiap verteks sebagai titik tunggal.
9) Gl_Lines di gunakan untuk Memperlakukan setiap pasangan verteks sebagai segmen
garis independen.
10) GL_LINE_STRIP di gunakan untuk Menggambar sekelompok verteks yang
terhubung menjadi segmen garis dari titik pertama sampai terakhir.
11) GL_LINE_LOOP Menarik sekelompok verteks yang terhubung menjadi segmen
garis dari titik pertama sampai terakhir, kemudian kembali ke verteks yang pertama.
12) GL_TRIANGLES Memperlakukan setiap tiga verteks sebagai segitiga independen.
13) GL_TRIANGLE_STRIP Menggambar sekelompok verteks yang terhubung
menjadi segitiga.
14) Gl viewport untuk mengatur viewport.
15) Gl get untuk return value.
16) Gl GetString untuk return string yang menjelaskan koneksi GL.
17) Gl ActiveTexture untuk memilih unit.
18) Gl LinkProgram untuk menembahkan link sebuah program.
19) Gl ClearColor untuk menentukan warna.
20) Gl BindBuffer untuk menghasilkan nama buffer objek yang di namakan.
21) Gl GenBuffer untuk menghasilkan nama buffer objek.
Page | 7


B. Pengertian Dari 2D dan 3D dalam computer grafik


Pengertian Dari Pixel - Picture Element
Pixel adalah unsur gambar atau representasi sebuah titik terkecil dalam sebuahgambar grafis
yang dihitung per inci. Pixel sendiri berasal dari akronim bahasa Inggris Picture Element
yang disingkat menjadi Pixel. Pada ujung tertinggi skala resolusi, mesincetak gambar
berwarna dapat menghasilkan hasil cetak yang memiliki lebih dari 2.500titik per inci denga
pilihan 16 juta warna lebih untuk setiap inci, dalam istilah komputer berarti gambar seluas
satu inci persegi yang bisa ditampilkan pada tingkat resolusitersebut sepadan dengan 150 juta
bit informasi.Monitor atau layar datar yang sering kita temui terdiri dari ribuan pixel yang
terbagidalam baris-baris dan kolom-kolom. Jumlah pixel yang terdapat dalam sebuah monitor
dapat kita ketahui dari resolusinya. Resolusi maksimum yang disediakan oleh monitor adalah
1024x768, maka jumlah pixel yang ada dalam layar monitor tersebut adalah 786432 pixel.
Semakin tinggi jumlah pixel yang tersedia dalam monitor, semakin tajamgambar yang
mampu ditampilkan oleh monitor tersebut.

Pengertian 2D komputer garafik
Objek grafik 2 dimensi adalah sekumpulan titik-titik 2 dimensi yangdihubungkan dengan
garis lurus, baik berupa polyline, polygon atau kurva. Objek grafik 2 dimensi didefinisikan
sebagai kumpulan titik 2 dimensi yang secara komputasi dinyatakan sebagai array 1D, atau
linkedlist sesuai dengan struktur data yang digunakan dalam menyatakan kumpulan titik 2D
ini. Objek grafik dimensi juga adalah gambar 2 dimensi yang sumbu x dan sumbu y, atau
sumbu koordinat cartesius dua dimensi. Dua sumbu yang saling bertegak lurus antar satu
dengan yang lain, yang keduanya terletak dalam satu bidang (bidang x,y).
Sedangkan Grafik komputer 2D adalah sebuah generasi gambar digital berbasis komputer,
yang kebanyakan mengambil objek-objek dua dimensi (2D). Model Grafik 2D merupakan
kombinasi dari model geometri (juga disebut sebagai grafik vektor), gambar digital (raster
graphics), fungsi matematika, dan sebagainya. Komponen-komponen ini dapat dimodifikasi
dan dimanipulasi oleh transformasi geometri dua dimensi, seperti translasi, rotasi, dan
dilatasi.
Model-model yang digunakan pada disain grafis 2D biasanya tidak mendukung bentuk-
Page | 8

bentuk tiga-dimensi, atau fenomena yang bersifat tiga dimensi, seperti pencahayaan,
bayangan, pantulan, refraksi, dan sebagainya. Namun demikian, mereka dapat membuat
model berlapis-lapis (layer); nyata, translusen, dan transparan, yang dapat ditumpuk dalam
urutan tertentu. Urutan tersebut biasanya didefinisikan dengan angka (kedalaman lapisan,
atau jarak dari si penglihat).


Pengertian 3D pada komputer grafik
3 dimensi biasa disebut 3D atau adalah bentuk dari benda yang memiliki panjang, lebar, dan
tinggi. Grafik 3 Dimensi merupakan teknik penggambaran yg berpatokan pada titik koordinat
sumbu x(datar), sumbu y(tegak), dan sumbu z(miring).Representasi dari data geometrik 3
dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer
2D. Tiga Dimensi, biasanya digunakan dalam penanganan grafis. 3D secara umum merujuk
pada kemampuan dari sebuah video card (link).
Grafik 3D merupakan perkembangan dari grafik 2D. Didalam grafika komputer, 3D
merupakan bentuk grafik yang menggunakan representasi data geometri tiga dimensi.
Suatu objek rangka 3D apabila disinari dari arah tertentu akan membentuk bayangan pada
permukaan gambar. Proses pembuatan grafik komputer 3D dapat dibagi ke dalam tiga fase,
yaitu 3D modeling yang mendeskripsikan bentuk dari sebuah objek, layout dan animation
yang mendeskripsikan gerakan dan tata letak sebuah objek, dan 3D rendering yang
memproduksi image dari objek tersebut.

Istilah atau Pengertian Grafik 3D adalah sebuah gambar,garis,lengkungan,dan sebagainya
yang memiliki titik-titik yang menghubungkan menjadi sebuah bentuk 3D. Di dalam dunia
game, 3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini
video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam video card
itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih realistis
dalam memainkan game komputer.




Page | 9

C. Perbedaan antara 2D dan 3D


2 Dimensi (2D)

Grafik komputer 2 dimensi yang lebih dikenal dengan 2D atau bidang adalah bentuk dari
benda yang memiliki panjang dan lebar. Penggambarannya pada layar (monitor) dilakukan
dengan berpatokan pada titik koordinat sumbu x (datar) dan sumbu y (tegak). Koordinat
tersebut dihitung mulai dari sudut kiri atas layar. Semakin ke kanan, nilai koordinat x
semakin bertambah. Semakin ke bawah, nilai koordinat y semakin bertambah. Besarnya nilai
koordinat ini dihitung dalam satuan pixel.
Agar dapat tampil dengan sempurna, gambar yang akan ditampilkan dengan teknik ini harus
memiliki nilai koordinat x dan y minimum 0 dan maksimum sebesar resolusi yang digunakan.

Penerapan 2 dimensi

Animasi
Animasi komputer adalah seni menghasilkan gambar bergerak melalui penggunaan komputer
dan merupakan sebagian bidang komputer grafik dan animasi. Animasi pertama kali
diperkenalkan oleh Peter Roget pada tahun 1824. Animasi ini yang paling akrab dengan
keseharian kita. Biasa juga disebut dengan film kartun. Kartun sendiri berasal dari kata
Cartoon, yang artinya gambar yang lucu.
Film kartun yang termasuk dalam kategori 2D ini adalah
Looney Tunes Doraemon Brother Bear
Pink Panther Lion King Spirit,
Tom and Jerry Mulan ScoobyDoo

Game
Sekitar tahun 1970an ditemukan konsul game (console game) yang membuat game dengan
grafik dua dimensi muncul ke permukaan.
Game 2 dimensi dapat dikenali berdasarkan ruangnya yaitu hanya ada sumbu x dan sumbu y
(hanya 2 sisi). Penggambarannya bisa berdasarkan bitmap maupun vector. Untuk pembuatan
animasinya seperti melompat, berlari, berjalan, kita harus membuat gambar satu persatu,
yang nanti apabila digerakkan bergantian secara cepat akan seperti sebuah gambar yang
bergerak, hal ini dinamakan frame.
Page | 10

Kerealisasian gerakan ditentukan dari gambar yang dibuat, jumlah gambar(frame) yang
digunakan, serta hitungan gambar per detik (frame per second ( semakin tinggi hitungan
gambar per detik maka semakin mulus gerakan yang akan dihasilkan).

3D ( 3 Dimensi )
Grafik komputer 3 dimensi yang dikenal dengan 3D atau ruang adalah bentuk dari benda
yang memiliki panjang, lebar, dan tinggi. Grafik 3 Dimensi merupakan teknik penggambaran
yg berpatokan pada titik koordinat sumbu x(datar), sumbu y(tegak), dan sumbu z(miring).
Representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek
cahaya terhadap grafika komputer 2D. Tiga Dimensi(3D) biasanya digunakan dalam
penanganan grafis. 3D secara umum merujuk pada kemampuan dari sebuah video card (link).
Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam
video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih
realistis dalam memainkan game komputer.

Grafik komputer 3D juga merupakan representasi dari data geometrik 3 dimensi sebagai hasil
dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Hasil ini kadang
kala ditampilkan secara waktu nyata (real time) untuk keperluan simulasi. Secara umum
prinsip yang dipakai adalah mirip dengan grafika komputer 2D, dalam hal: penggunaan
algoritma, grafika vektor, model frame kawat (wire frame model), dan grafika rasternya.

Grafik komputer 3D merupakan suatu grafis yang menggunakan 3 titik perspektif dengan
cara matematis dalam melihat suatu objek, dimana gambar tersebut dapat dilihat secara
menyeluruh dan nyata. Untuk perangkat-perangkat lunak yang digunakan untuk grafik
komputer 3D ini banyak bergantung pada aloritma-algoritma.
Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih
menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum
bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar
komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D
biasanya dikenal dengan proses 3D rendering.


Page | 11

Penerapan 3 dimensi
Animasi
Animasi 3D visual adalah pengembangan dari animasi 2D. Dengan animasi 3D, karakter
yang diperlihatkan semakin hidup dan nyata, mendekati wujud manusia aslinya.
Perkembangan teknologi dan komputer membuat teknik pembuatan animasi 3D semakin
berkembang dan maju pesat.
Semenjak Toy Story buatan Disney (Pixar Studio), maka berlomba-lombalah studio film
dunia memproduksi film sejenis. Bermunculanlah, Bugs Life, AntZ, Dinosaurs, Final
Fantasy, Toy Story 2, Monster Inc., hingga Finding Nemo, The Incredible, Shark Tale. Cars,
Valian. Kesemuanya itu biasa juga disebut dengan animasi 3D atau CGI (Computer
Generated Imagery).

Game
Sejak ditemukannya teknik cel-shading, model 3D bisa ditampilkan menjadi mirip gambar
2D. Akibatnya banyak game lebih memilih fitur ini daripada grafik 2D biasa. Jika teknik cel-
shading tersebut diterapkan ke dalam sebuah prototipe game engine sebagai salah satu
fiturnya, maka prototipe game engine yang dibuat bisa menangani 2 macam tipe grafik, yaitu
3D biasa dan cartoon-look 3D. Pembuatan prototipe engine ini bertujuan untuk memudahkan
pembuatan game 3D yang dapat dijalankan pada komputer berbasis Windows. Pembuatan
engine dilakukan dengan menggunakan program Microsoft Visual C++ .NET dan SDL 1.2.7
dengan OpenGL sebagai sistem grafisnya. Dari hasil pengujian diketahui bahwa prototipe
engine ini berhasil melakukan fungsi-fungsi dasar yang diperlukan sebuah 3D game engine.
Fungsi-fungsi itu antara lain adalah kemampuan manajemen memori sederhana, logging,
profiling, penanganan input dari analog joystick, rendering dan animasi model 3D, loading
custom game map, penanganan suara, penanganan kamera dan fitur cel-shading.

Architecture Design : 3D sangat membantu dalam menuangkan ide-ide kreatif design
dengan sangat cepat dan mudah karena dengan 3D Anda akan dapat melihat bentuk
rancangan bangunan Anda dari segala sisi pandangan. Disamping itu 3D dapat memberikan
texture maupun lighting menyerupai seperti kondisi aslinya kelak bangunan tersebut
terbangun.
Interior Design : Sama halnya seperti Arsitek, designer Interior pun juga akan sangat
terbantu dengan teknologi 3D. Dengan 3D, setiap ruang yang dirancang akan dapat
Page | 12

divisualkan mendekati ruang yang sebenarnya. Anda dapat menata furniture, elemen
dekoratif interior lainnya seperti lukisan, foto, patung dan lainnya dengan sangat leluasa dan
mudah.
Landscape Design : Dalam mewujudkan design landscape pun, baik Anda seorang Arsitek
Landscape ataupun Visualizer, 3D akan mampu menvisualkan secara jelas dan detail
sekalipun. Penataan kontur tanah, vegetasi, perkerasan, gazebo, kolam maupun elemen
landscape yang lainnya, akan membuat pekerjaan design Anda menjadi mudah dan
menyenangkan.
Design : Kalau dulu kartun (cartoon) dibuat dengan sketsa tangan lalu meningkat ke aplikasi
software 2D, sekarang kartun menapaki era baru dengan teknologi 3D. Trend ini semakin
meningkat, dikarenakan dengan 3D, cartoon akan semakin tampak hidup dan nyata,
beratraksi menghibur penonton yang melihatnya. Aplikasi 3D saat ini, sudah semakin
memudahkan para designer dan animator, bahkan yang pemula sekalipun untuk membuat
kartun 3D, karena sudah banyak fitur-fitur penunjang pembuat kartun yang disediakan oleh
setiap aplikasi 3D.
Logo Design : Tidak hanya cartoon, design dan animasi logo pun saat ini sudah memasuki
era 3D. Artinya, logo-logo saat ini sudah banyak yang ditampilkan dengan bentuk dan
tampilan real 3D. Sehingga logo terlihat lebih hidup, menarik dan tampil lebih memikat.
Aplikasinya dapat dijumpai dibanyak hal, seperti : dibidang broadcast/tv, advertising,
perkantoran, industri, branding/merk, percetakan, dan sebagainya. Intinya setiap perusahaan
(company) dan juga produk-produk sangat membutuhkan logo sebagai citra visual mereka
dan 3D merupakan solusi tepat dalam menvisualkannya.
Stage Design : Design panggung (stage), biasanya banyak diperuntukkan untuk event-event
besar seperti : pernikahan (wedding), pameran, expo, seminar, workshop, symposium,
workshop, pelatihan, peresmian (launching), dan lain sebagainya. Event-event tersebut sangat
membutuhkan keberadaan panggung sebagai sarana utama maupun pendukungnya. Sehingga
tentu membutuhkan sebuah design panggung yang bagus dan menarik yang akan menunjang
bagi suksesnya sebuah event/acara yang digelar. Terlebih bila event/acara tersebut
menghadirkan tokoh-tokoh penting semisal : pejabat negara, pejabat daerah, tamu asing
(expat), selebriti, tokoh masyarakat ,dan sebagainya. Dengan demikian, visualisasi 3D
menjadi sangat penting dan dibutuhkan dalam menampilkan output design stage yang
optimal.
Page | 13

Product Design : Product design, mencakup berbagai barang seperti : product industri, pecah
belah, mainan, computer/it, alat komunikasi dan sebagainya, telah menjadikan 3D sebagai
standar dalam menvisualkan design terbaru dari setiap produk yang akan dirilis dipasaran.
Stand Design : Design stand biasanya berkorelasi dan berhubungan dekat dengan sebuah
event, walaupun tidak semua event menampilkan stand. Untuk event-event besar yang juga
menampilkan stand, umumnya akan membutuhkan 3D dalam menvisualkan bentuk dan
design stand yang menarik dan tampil bagus nantinya
Game Design : Saat ini hampir semua game sudah ditampilkan dalam bentuk 3D. Ini
dimaksudkan agar game dapat tampil lebih atraktif, hidup dan memikat hati para gamer.
Dengan 3D, para gamer akan mendapatkan sensasi bermain game yang luar biasa, yang
berdampak pada semakin meningkatnya minat, animo maupun antusiasme dalam memainkan
game.
Furniture Design : Dibidang furniture design sudah banyak yang menggunakan teknologi
3D dalam merancang dan menampilkan bentuk dari suatu design furniture terbaru.
Pembuatan design yang detail dan rumit sekalipun dapat diselesaikan dengan pendekatan
aplikasi 3D. Begitu juga dengan penerapan material yang dapat mendekati material aslinya
sehingga design akan tampil lebih real dan hidup.

Dari ulasan di atas, dapat disimpulkan bahwa perbandingan 2D dan 3D antara lain :

Perbedaan dari animasi 2D dan 3D visual adalah dilihat dari sudut pandangnya. Animasi 2D
menggunakan koordinat x dan y, sedangkan animasi 3D visual menggunakan koordinat x, y
dan z yang memungkinkan kita dapat melihat sudut pandang objek secara lebih nyata.








Page | 14
BAB III
Hasil Percobaan / Praktikum

A. Contoh dan Fungsi Dari Primitif Drawing

OpenGL memiliki beberapa komponen dasar untuk merepresentasikan suatu obyek.
Komponen dasar tersebut, disebut sebagai OpenGL Geometric primitives. Gambar 2
menggambarkan semua OpenGL Geometric primitives yang tersedia.

Setiap obyek harus dimodelkan sebagai kombinasi dari komponen-komponen dasar tersebut.
Sebagai contoh, obyek segiempat pada tutorial 01 tersebut dimodelkan dengan menggunakan
komponen dasar GL_POLYGON. Obyek tersebut dapat pula dimodelkan dengan komponen
dasar GL_TRIANGLES atau pun GL_QUAD.
Secara umum perintah-perintah dalam OpenGL memenuhi aturan sebagai berikut:

Page | 15

Dalam OpenGL, menggambar geometric primitives selalu dilakukan di antara fungsi
glBegin(PRIMITIVES)
// Fungsi Menggambar Primitives di sini
glEnd()
Setiap OpenGL geometric primitive dispesifikasi oleh urutan vertex-vertex-nya dalam
bentuk urutan koordinat homogenous. Koordinat homogenous adalah koordinat dalam bentuk
( x, y, z, w ). Setiap primitive memiliki standar tentang bagaimana vertex-vertex
diorganisasikan.























Page | 16

B. Modul 1 DIAMON

#include <GL/glut.h>

void userdraw()
{
static int tick=0;
void drawDot(int x, int y);
glBegin(GL_LINES);
glVertex2i(100,250);
glVertex2i(300,250);

glVertex2i(100,250);
glVertex2i(200,200);

glVertex2i(200,200);
glVertex2i(300,250);

glVertex2i(100,250);
glVertex2i(200,50);

glVertex2i(200,200);
glVertex2i(200,50);

glVertex2i(300,250);
glVertex2i(200,50);

glEnd();
}
void display(void)
{
//BERSIH LAYAR
glClear(GL_COLOR_BUFFER_BIT);
userdraw();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);//Inisialisasi Toolkit
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,480);
glutCreateWindow("Diamond");
glClearColor(1.0f,0.0f,0.0f,0.0f);
gluOrtho2D(0.,640.,0.,350.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}





Page | 17

C. Modul 2 BUNGA

#include <GL/glut.h>
#include <math.h>

typedef struct
{
int x,y;
}point2D_t;

typedef struct
{
float r,g,b;
}color_t;

void setColor (color_t col)
{
glColor3f(col.r, col.g, col.b);
}

void drawPolygon(point2D_t pnt[],int n)
{
int i;
glBegin(GL_POLYGON);
for (i=0; i<n; i++)
{
glVertex2i(pnt[i].x,pnt[i].y);
}
glEnd();
}

void fillPolygon (point2D_t pnt[], int n, color_t color)
{
int i;
setColor(color);
glBegin(GL_POLYGON);
for (i=0; i<n; i++)
{
glVertex2f(pnt[i].x, pnt[i].y);
}
glEnd();
}

void userdraw()
{

point2D_t
batang[4]={{-5,-190},{-5,0},{5,0},{5,-190}};
color_t biru ={0,0,1};
fillPolygon(batang,4, biru);
drawPolygon(batang,4);

point2D_t
daun[5]={{-20,-100},{-20,-80},{20,60},{20,30}};
color_t hijau ={0,1,0};
fillpolygon(daun,5,hijau);
drawpolygon(daun,4);

Page | 18

point2D_t
pot[4]={{-60,-190},{60,-190},{30,-240},{-30,-240}};
color_t hitam ={0,0,0};
fillPolygon(pot,4, hitam);
drawPolygon(pot,4);

point2D_t
pot2[6]={{-80,-160},{-50,-160},{-50,-190},{-60,-190},{-60,-170},{-80,-170}};
color_t hitam3 ={0,0,0};
fillPolygon(pot2,4, hitam3);
drawPolygon(pot2,4);

point2D_t
pot3[6]={{80,-160},{50,-160},{50,-190},{60,-190},{60,-170},{80,-170}};
color_t hitam2 ={0,0,0};
fillPolygon(pot3,4, hitam2);
drawPolygon(pot3,4);


static int tick=0;
point2D_t shape[360];
double srad,r;
for(int s=0; s<360; s++)
{
srad =(s+tick)*3.14/360;
r=90*sin(500*srad);
shape [s].x = (float)(r*cos(100*srad));
shape [s].y = (float)(r*sin(100*srad));
color_t merah ={1,0,0};
fillPolygon(shape,1, merah);
}
drawPolygon(shape, 360);
}

void display(void)
{
//clear screen
glClear(GL_COLOR_BUFFER_BIT);
userdraw();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
//posisi layar
glutInitWindowPosition(150,150);
//ukuran layar
glutInitWindowSize(640,480);
//title windows
glutCreateWindow("Bunga Raflesia");
//warna back layar
glClearColor(1.0,1.0,1.0,0.0);
gluOrtho2D(-300.,400.,-300.,300.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
return 0;

Page | 19

D. Modul 3 Kubus

#include <GL/glut.h>
#include <math.h>
struct point {
float x,y,z;
};
struct vektor {
float v[4];
};
struct matriks {
float m[4][4];
};
struct face {
int jumtitikons;
int indextitik[40];
};
struct objek {
int jumtitik;
point titik[40];
int jumsisi;
face sisi[30];
};
matriks mat;
float theta=0.5;
vektor point2vektor(objek balok, int i) {
vektor vec;
vec.v[0] = balok.titik[i].x;
vec.v[1] = balok.titik[i].y;
vec.v[2] = balok.titik[i].z;
vec.v[3] = 1;
return vec;

}
point vektor2point(vektor vec) {
point pnt;
pnt.x = vec.v[0];
pnt.y = vec.v[1];
pnt.z = vec.v[2];
return pnt;
}
matriks identitas(void) {
int i,j;
matriks mat;
for (i=0;i<4;i++) {
for (j=0;j<4;j++) {
if (i==j)
mat.m[i][j] = 1;
else
mat.m[i][j] = 0;
}
}
return mat;
}
matriks translasi(float dx, float dy, float dz) {
matriks trans = identitas();
trans.m[0][3] = dx;
trans.m[1][3] = dx;
Page | 20

trans.m[2][3] = dx;
return trans;
}
matriks rotasiX(float theta) {
matriks rotate = identitas();
float cs = cos(theta);
float sn = sin(theta);
rotate.m[1][1] = cs;
rotate.m[1][2] = -sn;
rotate.m[2][1] = sn;
rotate.m[2][2] = cs;
return rotate;
}
matriks rotasiY(float theta) {
matriks rotate = identitas();
float cs = cos(theta);
float sn = sin(theta);
rotate.m[0][0] = cs;
rotate.m[0][2] = sn;
rotate.m[2][0] = -sn;
rotate.m[2][2] = cs;
return rotate;

}
matriks rotasiZ(float theta) {
matriks rotate = identitas();
float cs = cos(theta);
float sn = sin(theta);
rotate.m[0][0] = cs;
rotate.m[0][1] = -sn;
rotate.m[1][0] = sn;
rotate.m[1][2] = cs;
return rotate;
}
vektor kali (matriks mat, vektor b) {
int i,j;
vektor c;
for (i=0;i<4;i++) {
c.v[i] = 0;
for (j=0;j<4;j++) {
c.v[i]+= mat.m[i][j] * b.v[j];
}
}
return c;
}
matriks kalim (matriks a, matriks b) {
int i,j,k;
matriks c;
for (i=0;i<4;i++) {
for (j=0;j<4;j++) {
c.m[i][j] = 0;
for (k=0;k<4;k++) {
c.m[i][j]+=a.m[i][k] * b.m[k][j];
}
}
}
return c;
}
matriks titling = kalim(rotasiX(theta),rotasiY(-theta));
Page | 21

vektor cross (vektor a, vektor b) {
vektor c;
c.v[0] = a.v[1]*b.v[2]-a.v[2]*b.v[1];
c.v[1] = a.v[2]*b.v[0]-a.v[0]*b.v[2];
c.v[2] = a.v[0]*b.v[1]-a.v[1]*b.v[0];
c.v[3] = 1;
return c;
}
void DrawPolygon(objek obj)
{
int i,j;
float r,g,b;

for(i=0;i<obj.jumsisi;i++)
{
r=1.0f; g=0.0f; b=0.0f;
glBegin(GL_LINE_LOOP);
if (i==0) { r=1.0f; g=0.0f; b=0.0f; }
if (i==1) { r=0.0f; g=1.0f; b=0.0f; }
if (i==2) { r=0.0f; g=0.0f; b=1.0f; }
if (i==3) { r=1.0f; g=1.0f; b=0.0f; }
if (i==4) { r=1.0f; g=0.0f; b=1.0f; }
if (i==5) { r=0.0f; g=1.0f; b=1.0f; }
if (i==6) { r=0.5f; g=0.0f; b=1.0f; }
if (i==7) { r=0.5f; g=0.5f; b=0.5f; }
glColor3f(r,g,b);
for(j=0;j<obj.sisi[i].jumtitikons;j++)
{
glVertex3f(obj.titik[obj.sisi[i].indextitik[j]].x,
obj.titik[obj.sisi[i].indextitik[j]].y,
obj.titik[obj.sisi[i].indextitik[j]].z);
}
glEnd();
}
}

void gambarbalok() {
int i;
vektor hasil,HslKali;
point HslTitik;
mat = titling;
objek balok =
{8,{{10,15,30},{30,15,30},{30,15,10},{10,15,10},{10,30,30},{30,30,30},{30,30,10},{
10,30,10}},
6,{{4,{0,1,5,4}},{4,{3,2,6,7}},{4,{0,3,7,4}},{4,{1,2,6,5}},{4,{0,1,2,3}},{4,{4,5,6
,7}}}};
for (i=0;i<8;i++) {
hasil = point2vektor(balok,i);
HslKali = kali(mat,hasil);
HslTitik = vektor2point(HslKali);
balok.titik[i] = HslTitik;
}
DrawPolygon(balok);
}
void UserDraw() {
glClearColor(1.0f,1.0f,1.0f,0.0f);
glClear(GL_COLOR_BUFFER_BIT);
//glRotatef(0.1f,0.0f,1.0f,0.0f);
gambarbalok();
Page | 22

glutSwapBuffers();
}
void main(int argc,char **argv) {
glutInit(&argc,argv);
glutInitWindowPosition(20,20);
glutInitWindowSize(640,640);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutCreateWindow("Point To Vektor");
glOrtho(-100.0f,100.0f,-100.0f,100.0f,-100.0f,100.0f);
glutIdleFunc(UserDraw);
glutDisplayFunc(UserDraw);
glutMainLoop();
}





























Page | 23

E. Modul 4 Pencahayaan pada Bola


#include <GL/glut.h>
void init(void)
{
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0
}; GLfloat mat_shininess[] = { 50.0 };
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0
}; glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_SMOOTH);

glMaterialfv(GL_FRONT, GL_SPECULAR,
mat_specular); glMaterialfv(GL_FRONT,
GL_SHININESS, mat_shininess);
glLightfv(GL_LIGHT0, GL_POSITION,
light_position);

glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
}

void display(void)
{
glClear (GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT);
glutSolidSphere (1.0, 20, 16);
glFlush ();
}

void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION); glLoadIdentity();
if (w <= h)
glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w,
1.5*(GLfloat)h/(GLfloat)w, - 10.0, 10.0);
else
glOrtho (-1.5*(GLfloat)w/(GLfloat)h,
Page | 24

1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0,
10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB |
GLUT_DEPTH); glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init (); glutDisplayFunc(display);
glutReshapeFunc(reshape); glutMainLoop();
return 0;
}
















Page | 25

F. Modul 5 Simulasi Planet

#include <GL/glut.h>
static int year = 0, day = 0;

void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}

void display(void)
{
glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glPushMatrix();
glutWireSphere(1.0, 20, 16); /* gambar matahari */
glRotatef ((GLfloat) year, 0.0, 1.0, 0.0);
glTranslatef (2.0, 0.0, 0.0);
glRotatef ((GLfloat) day, 0.0, 1.0, 0.0); glutWireSphere(0.2, 10, 8); /* gambar
planet kecil */ glPopMatrix();
glutSwapBuffers();
}

void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void keyboard (unsigned char key, int x, int y)
{
switch (key)
{
case 'd':
day = (day + 10) % 360; glutPostRedisplay(); break;
case 'D':
day = (day - 10) % 360; glutPostRedisplay(); break;
case 'y':
year = (year + 5) % 360; glutPostRedisplay(); break;
case 'Y':
year = (year - 5) % 360; glutPostRedisplay(); break;
case 27: exit(0); break;
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]);
init (); glutDisplayFunc(display); glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard); glutMainLoop();
return 0;
}
Page | 26

BAB IV
Analisa Hasil Percobaan

Hasil percobaan dari analisa BUNGA ( Modul 2 )


Hasil percobaan dari analisa Simulasi PLANET ( Modul 5 )


Page | 27

Hasil percobaan dari analisa KUBUS ( Modul 3 )


Hasil percobaan dari analisa DIAMON ( Modul 1 )





Page | 28

Hasil percobaan dari analisa pencahayaan pada Bola 3D ( Modul 4 )

Cahaya Ambient, Diffuse, dan Specular

Pencahayaan ambient
adalah cahaya latar belakang dan berasal dari segala arah. Cahaya ambient ini
memiliki nilai yang lebih besar pada ruangan tertutup dibandingkan dengan ruangan
terbuka. Meskipun kedua ruang tersebut memiliki sumber cahaya yang sama. Hal ini
disebabkan karena pada ruang tertutup, cahaya yang memantul dari dinding
membantu menerangi ruang.

Cahaya diffuse
adalah cahaya datang yang bersifat satu arah. Jika sebuah obyek terkena cahaya
diffuse, sisi tersorot akan terlihat jelas/terang, sedangkan sisi di baliknya akan terlihat
gelap.

Cahaya specular
Mirip seperti cahaya diffuce, cahaya specular adalah cahaya datang datang dari
arah tertentu; hanya saja pantulannya tidak tersebar rata ke segala arah. Pantulan
ditentukan oleh jenis material obyek. Logam dan plastik mengkilap memiliki komponen
specular tinggi. Sementara kapur dan karpet hampir tidak memilikinya. Specularity disebut
juga sebagai shininess.



Page | 29

PENUTUP

A. Kesimpulan

Dari pembahasan dapat di ambil kesimpulan sebagai berikut :
Di dalam pembuatan grafik di jaman serba teknologi ini kita bebas menentukan alat
apa saja yang kita pakai, dan untuk memahami secara mendalam transformasi di
dalam grafik computer sangatlah penting menguasai ilmu matematik.

Perbandingan hasil pembuatan program dengan menggunakan bahasa programan
lebih sulit dan berbeda jauh dari segi tampilan, maupun tata cara pembutannya di
bandingkan dengan program aplikasi yang menerapkan system Just Click (Event
driven ).


B. Saran Program Dan Hasil Aplikasinya

Terlebih dahulu harus belajar algoritma, karena algoritma adalah salah satu kunci
untuk dapat memahami permasalahan yang akan di hadapi di dalam pembuatan grafik
computer.

Bila ingin membuat suatu program / grafik, pilihlah program aplikasi yanglebih bagus
dan lebih kompleks.


Harus memahami sintak-sintak yang terdapat di dalam bahasa pemrograman ataupun
fitur-fitur yang terdapat di dalam aplikasi.





DAFTAR PUSTAKA
Page | 30


http://ajigudboy.wordpress.com/2012/01/18/perbedaan-dan-karakteristik-antara-
grafik-2-dimensi-dan-3-dimensi/
http://sigita.web.id/2010/07/tipe-tipe-grafik-komputer/
http://www.codeproject.com/KB/openGL/OpenGL_Geometric.aspx
This entry was posted in Graphic Programming Bookmark the permalink.