Anda di halaman 1dari 28

LAPORAN PRAKTIKUM

GRAFIKA KOMPUTER DAN MULTIMEDIA

OLEH :

NAMA : AMNA ZALIFA


NIM : 1220305022
KELAS : M3
JURUSAN : TEKNIK ELEKTRO
PRODI : TMJ

JURUSAN TEKNIK ELEKTRO


POLITEKNIK NEGERI LHOKSEUMAWE
LEMBARAN PENGASAHAN

Judul : “ Membuat Animasi Kapal Tenggelam dengan Opengl”

Nama : Amna Zalifa

NIM : 1220305022

Kelas/Semester : M3 / VI (Genap)

Jurusan/Prodi : TeknikElektro / TMJ

Pemeriksa : Mursyidah, S.T., M.T.

Tanggal Pengesahan : 24 Mei 2015

Mengetahui,
Mahasiswa
Dosen Pengajar

( Amna Zalifa)
( Mursyidah, S.T., M.T. )
Nim. 1220305022
Nip.
DAFTAR ISI

BAB I PENDAHULUAN

1.1 Latar belakang


1.2 Tujuan

BAB II PEMBAHASAN

2.1 Dasar Teori


2.1.1 Opengl
2.1.2 Primitive Objek
2.1.3 Transfomasi Objek
2.2 Alat dan Bahan

BAB III PERANCANGAN SISTEM

3.1 Storyboard

BAB IV PENUTUP

4.1 Penggalan Program


4.2 Hasil
4.3 Analisa
4.3.1 Kapal Titanic
4.3.2 Objek Tambahan
4.3.3 Efek
4.3.4 Transformasi Objek
4.3.5 Pergantian Scene

BAB V KESIMPULAN

5.1 Kesimpulan
BAB I

PENDAHULUAN

1.1 Latar Belakang

Komputer merupakan salah satu hasil dari perkembangan IPTEK yang semakin maju.
Penggunaan pekerjaan dengan komputer dapat menyelesaikan pekerjaan dengan lebih efektif
dan efisien. Penciptaan akan sebuah teknologi yang inovatif dan kreatif menjadi sebuah karya
yang nantinya bisa menjadi sebuah nilai jual.
Komputer yang memiliki piranti grafik untuk mengolah gambar atau grafik disebut
grafik komputer. Komputer grafik pada dasarnya adalah suatu bidang komputer yang
mempelajari cara-cara untuk meningkatkan dan memudahkan komunikasi antara manusia
dengan mesin (komputer) dengan jalan membangkitkan, menyimpan dan memanipulasi
gambar model suatu objek menggunakan komputer. Komputer grafik memungkinkan kita
untuk berkomunikasi lewat gambar-gambar, bagan-bagan dan diagram.
Salah satu kreatifitas yang dapat dihasilkan dengan komputer grafik adalah animasi.
Animasi adalah gambar bergerak berbentuk dari sekumpulan objek (gambar) yang disusun
secara beraturan mengikuti alur pergerakan yang telah ditentukan pada setiap pertambahan
hitungan waktu yang terjadi. Dengan animasi komputer, hal-hal yang awalnya tidak mungkin
digambarkan dengan animasi menjadi mungkin dan lebih mudah. Sebagai contoh adalah
simulasi kapal bergerak, mobil berjalan, maupun gambaran luar angkasa.
Dewasa ini, animasi baik 2 dimensi maupun 3 dimensi sudah menjadi aspek penting
dalam berbagai bidang, seperti bidang edukasi, hiburan maupun bisnis. Saat ini terdapat
banyak jenis software animasi yang beredar di pasaran, dari software yang mempunyai
kemampuan yang sederhana hingga yang komplek, dari yang gratis hingga puluhan juta
rupiah. Animasi yang baik tak hanya dihasikan oleh software yang bagus, tetapi juga
bergantung pada kreatifitas para animatornya sendiri.

1.2 Tujuan
Berdasarkan permasalahan yang diteliti, maka tujuan yang akan dicapai dalam penelitian ini
adalah :
1. Dapat mensimulasikan grafis OpenGL yang didukung pemrograman Bahasa C++.
2. Dapat menunjukkan bagaimana membuat animasi 2D.kapal tenggelam
BAB II
LANDASAN TEORI

2.1 Dasar Teori


2.1.2 OpenGL
OpenGL adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk
pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk
keperluan-keperluan pemrograman grfis.OpenGL bersifat Open-Source, multi-platform
dan multi-language serta digunakan mendefinisikan suatu objek, baik objek 2 dimensi
maupun objek 3 dimensi. OpenGL juga merupakan suatu antarmuka pemrograman
aplikasi (application programming interface (API) yang tidak tergantung pada piranti dan
platform yang digunakan, sehingga OpenGL dapat berjalan pada sistem operasi
Windows, UNIX dan sistem operasi lainnya.
GLUT (GL Utility Toolkit) Merupakan pengembangan dari OpenGL yang didesain
untuk aplikasi dengan level kecil hingga menengah dan menggunakan callback functions
untuk menambahkan interaksi dari user. Untuk pemrograman OpenGL menggunakan
C++, diperlukan library tambahan yaitu :
1. glut.h yang dicopy ke drive:\Program Files\Microsoft Visual Studio
2012\Vc\include\GL

2. glut32.lib yang dicopy ke drive:\Program Files\Microsoft Visual Studio 2012\Vc\

3. libglut32.dll yang dicopy ke drive:\Windows\System

OpenGL memiliki lebih dari 200 fungsi. Fungsi tersebut bisa dikelompokkan menjadi:
 Fungsi primitif, menentukan elemen yang bisa menghasilkan gambar di layar. Fungsi
ini terdiri dari 2 jenis, yaitu primitif geometric seperti polygon (segi banyak) yang
bisa dibuat menjadi dua, tiga, atau empat dimensi, dan primitif gambar seperti
bitmaps. Fungsi atribut, mengontrol tampilan dari primitif. Fungsi ini menentukan
warna, jenis garis, properti material, sumber cahaya, dan tekstur.

 Fungsi pandangan, menentukan properti kamera. OpenGL menyediakan sebuah


virtual kamera yang bisa diposisikan dan diorientasikan relatif ke obyek yang
ditentukan dengan fungsi primitif. Lensa kamera juga bisa dikendalikan sehingga bisa
dihasilkan sudut yang lebar dan pandangan telefoto (jarak jauh).
 Fungsi windowing, fungsi ini mengendalikan windows pada layar dan penggunaan
dari mouse dan keyboard.

 Fungsi kontrol, menghidupkan macam-macam fitur OpenGL. Fungsi-fungsi OpenGL


dimuat didalam 2 library yang disebut dengan gl dan glu (atau GL dan GLU). Library
yang pertama, adalah fungsi utama dari OpenGL, berisi semua fungsi OpenGL yang
dibutuhkan sedangkan yang kedua, openGL Utility Llibrary (GLU) memuat fungsi
yang ditulis menggunakan fungsi dari library utama dan sangat membantu bagi
pengguna. Fungsi utama mempunyai nama yang diawali dengan “gl” seperti
“glVertex3f()”, sedangkan fungsi didalam GLU mempunyai nama yang diawali
dengan “glu” seperti “gluOrtho2D()”.

2.1.2 Primitive Objek


Primitif objek merupakan salah satu subbab dari grafika komputer yang terdiri dari
titik, garis dan bangun dua dimensi. Contoh primitive grafika dasar antara lain : titik,
garis, kurva, fill area dan text. Objek kompleks dapat dibuat dengan kombinasi dari
primitive ini.
Fungsi dasar menggambar titik. Berikut adalah beberapa fungsi didalam menggambar
suatu titik, antara lain :
 glVertex2i(x,y)
Yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai
satuan berupa integer. Contoh glVertex2i(10,10)
 glVertex2f(x,y)
Yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai
satuan berupa float. Contoh glVertex2f(10.0,10.0)
 glVertex2d(x,y)
Yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai
satuan berupa double. Contoh glVertex2d(10.0,10.0);

Cara pendefinisian primitive objek yang digunakan dalam pembuatan suatu objek :
 #define GL_POINTS
Primitif objek ini dipergunakan untuk menciptakan suatu titik.
 # define GL_LINES
Primitif objek ini adalah suatu primitive objek guna menciptakan suatu garis.
 # define GL_LINE_LOOP

 # define GL_LINE_STRIP

 # define GL_TRIANGLES
Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu segitiga
dengan blok di tengahnya.
 # define GL_TRIANGLES_STRIP
Pada triangles strip jumlah vertex yang dipergunakan adalah 4 buah vertex
 # define GL_TRIANGLE_FAN
Triangles fan adalah pembuatan suatu objek dengan menggunakan segitiga dimana
hanya menggunakan 1 titik pusat saja.
 # define GL_QUADS
Quad atau segempat adalah empat buah titik yang terhubung menjadi quat segi empat
dengan blok di tengahnya.
 # define GL_QUADS_STRIP
Pada quads strip 4 buah vertex merupakan 1 kelompok.

 # define GL_POLYGON
Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi menghasilkan
kurva tertutup dengan blok warna (fill). Rendering yang dimiliki oleh GL_POLYGON
sama dengan GL_TRIANGLE_FAN. Catatan :
a) glLineWidth yaitu suatu fungsi yang berfungsi untuk mengatur tebalnya garis,

b) glPointSize yaitu suatu fungsi yang berfungsi untuk mengatur besarnya suatu objek,

c) gluOrtho2D yaitu suatu fungsi untuk mengatur proyeksi hasil eksekusi dan
mendefinisikan besarnya sistem koordinat dengan urutan kiri-kanan dan bawah-atas.

Untuk memberi warna pada objek, seperti titik atau garis, dapat dilakukan dengan
menggunakan fungsi glColor3f(red,green,blue). Di mana red, green, blue berada pada 0
sampai dengan 1, yang menunjukkan skala pencerahan dari masing-masing skala.
Berikut adalah beberapa fungsi color :
 glColor3f(0,0,0);//black
 glColor3f(0,0,1);//blue
 glColor3f(0,1,0);//green
 glColor3f(0,1,1)//cyan
 glColor3f(1,0,0)//red
 glColor3f(1,0,1)//magenta
 glColor3f(1,1,0);//yellow
 glColor3f(1,1,1);//white

2.1.3 Transformasi Objek


Pemodifikasian objek ini dapat dilakukan dengan melakukan berbagai operasi
fungsi atau operasi transformasi geometri. Transformasi ini dapat berupa transformasi
dasar ataupun gabungan dari berbagai transformasi geometri. Contoh transformasi
geometri adalah translasi, penskalaan, putaran (rotasi), balikan, shearing dan gabungan.
Transformasi ini dikenal dengan transformasi affine. Pada dasarnya, transformasi ini
adalah memindahkan objek tanpa merusak bentuk.
Tujuan transformasi adalah :
 Merubah atau menyesuaikan komposisi pemandangan

 Memudahkan membuat objek yang simetris

 Melihat objek dari sudut pandang yang berbeda

 Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, ini biasa
dipakai untuk animasi komputer.

a. Translasi

Transformasi translasi merupakan suatu operasi yang menyebabkan


perpindahan objek 2D dari satu tempat ke tempat yang lain. Perubahan ini berlaku
dalam arah yang sejajar dengan sumbu X dan sumbu Y.
Translasi dilakukan dengan penambahan translasi pada suatu titik koordinat
dengan translation vector, yaitu (tx,ty), dimana tx adalah translasi menurut sumbu x
dan ty adalah translasi menurut sumbu y. Koorinat baru titik yang ditranslasi dapat
diperoleh dengan menggunakan rumus :

x’=x+tx (x,y) = titik asal sebelum translasi

y’=x+ty (x’,y’) = titik hasil translasi

Translasi adalah transformasi dengan bentuk yang tetap, memindahkan objek


apa adanya. Setiap titik dari objek akan ditranslasikan dengan besaran yang
sama.Dalam operasi translasi, setiap titik pada suatu entitas yang ditranslasi bergerak
dalam jarak yang sama. Pergerakan tersebut dapat berlaku dalam arah sumbu X saja,
atau dalam arah sumbu Y saja atau keduanya.
Translasi juga berlaku pada garis, objek atau gabungan objek 2D yang lain.
Untuk hal ini, setiap titik pada garis atau objek yang ditranslasi dalam arah x dan y
masing -masing sebesar tx,ty.

b. Rotate
Ada beberapa hal mendasar yang perlu di pelajari dan di pahami untuk bisa
membuat dan mengkreasikan suatu bentuk atau bidang dalam grafika komputer.
Banyak istilah2 dasar yang familiar di telinga tp sudah tidak di temukan lagi apa
maksud dan pengertiannya," Matrik rotasi, translasi, dan seterusnya. Untuk
memindah atau merubah posisi suatu model/bentuk tidak bisa terlepas dari yang
namanya Tranformasi. Ada beberapa jenis tranformasi yaitu: Rotasi, Translasi,
Dilatasi, dan refleksi. Yang saya bahas disini adalah rotasi dan translasi.
Rotasi artinya berputar. Ketika suatu bentuk benda sengaja diputar maka perlu
di tentukan pusat dan besar sudut putar. sedangkan translasi adalah pergeseran.
Benda yang telah berpindah dari pusatnya berarti mengalami pergeseran, yaitu
apakah dia bergerak maju mundur ataupun menuju ke atas bawah.

Rotasi berbeda dengan translasi karena perubahan posisi pada translasi tidak
mengacu pada suatu titik tertentu. Keistimewaan dari rotasi adalah jarak antara titik
pusat dengan masing-masing bagian dari obyek yang diputar akan selalu tetap,
seberapa jauh pun obyek itu diputar.
Pada sebuah game yang menggunakan grafik vektor dan grafik bitmap, rotasi
dan translasi sangat di butuhkan. Dengan basic4GL kita bisa menggunakan source
code yang tersedia yaitu :
glTranslatef (x, y, z) digunakan untuk merubah titik posisi awal sumbu
koordinat menuju posisi yang ditentukan sesuai koordinat x,y, dan z.
glRotatef (angle, x, y, z) digunakan untuk memutar suatu bidang pada sudut
tertentu (angle).
Gambar 1. Translasi dan Rotasi

c. Scale
Skala merupakan salah satu bentuk transformasi yang merubah ukuran dari
objek yang ditentukan, baik membesar ataupun mengecil. Perubahan ukuran tersebut
didasarkan pada sumbu x, sumbu y, maupun sumbu z, dimana jika yang diubah
hanya sumbu x, maka besarnya objek akan berubah sesuai dengan sumbu x baru
yang telah ditentukan, begitu pula jika diubah terhadap sumbu dan zy, maka objek
akan menguikuti perubahan sesuai sumbu y maupun z baru yang telah ditentukan.
Perubahan skala diperoleh dari mengalikan nilai koordinat objek dengan skala
tertentu sesuai dengan sumbu masing - masing. Bentuk dari matriks skala adalah:

Transformasi skala dapat dilakukan dengan cara memanggil fungsi:

glScalef(Sx, Sy, Sz)


glScaled(Sx, Sy, Sz)
Dimana Sx, Sy, dan Sz merupakan parameter dari masing – masing sumbu ( Sx
merupakan parameter pada sumbu x, Sy merupakan parameter pada sumbu y, dan Sz
merupakan parameter pada sumbu z)

2.2 Alat dan Bahan

 PC
 Software Visual Studio 2012
BAB III

PERANCANGAN SISTEM

3.1 Storyboard

Animasi Kapal Tenggelam

a. Scene 1

Sebuah kapal megah milik White Star Line bernama Titanic melakukan
pelayaran perdananya pada 10 April 1912. Dengan panjang 882 kaki dan
lebar 92 kaki, kapal ini berlayar dari Southampton, Inggris menuju Kota
New York.
Cuaca saat itu sangat cerah, dengan matahari terik dan sedikit awan. Dilaut
tenang tanpa ombak, Titanic berlayar dengan kecepatan tinggi. Beberapa
kapal kecil disekitarnya ikut menyaksikan.

b. Scene 2
“Titanic adalah kapal yang tidak akan mungkin tenggelam”, begitu
sebutan orang-orang saat itu. Bahkan dengan cuaca buruk sekalipun,
Titanic tetap melaju dengan kecepatan tetap

c. Scene 3
Titanic membakar 825 ton batu bara setiap harinya. Sisa pembakaran keluar
melalui 3 buah cerobong asap. 1 cerobong asap dibuat hanya sebagai dekorasi.
Titanic berlayar dilangit senja yang indah yang merupakan senja terakhir bagi
pelayaran Titanic

d. Scene 4

Laut sangat tenang dimalam harinya. Tanpa diduga, sebuah gunung es


menghadang tepat didepan Titanic. Titanic berusaha menghindar dengan
membelok kekanan. Dengan jarak hanya beberapa meter dan kecepatan
laju tinggi, usaha menghindar tak berhasil dan gunung es berhasil
menggores badan samping kapal.

Kejadian berlangsung pada pukul 23.40 dimana bintang masih berkelip


dilangit yang gelap
e. Scene 5

Karena kerusakan yang parah, Titanic tak terselamatan dan akhirnya


karam pada 15 April 1912 di perairan Samudera Atlantik Utara.

Titanic tak pernah sampai ketujuan


BAB IV
PENUTUP

4.1 Penggalan Program


// BAGIAN HEADER

#include <stdlib.h>
#include <math.h>

#include<stdio.h>
#include<GL/glut.h>
#define PI 3.141592

bool atas, samping, atas2, samping2= true;


int gerakX=0;
int gerakY=0;
int gerakX2=0;
int gerakY2=0;

// BAGIAN PENGINISIALISASI TRANSLASI

void update(int value){


a+=20.0;
if(atas){
gerakY+=1;}
else{
gerakY-=1;
}if(gerakY>10){
atas=false;
}else
if(gerakY<=-10){
atas=true;}

if(samping){
gerakX+=0.5;}
else{
gerakX-=0.5;
}if(gerakX>10){
samping=false;
}else
if(gerakX<=-10){
samping=true;}

glutPostRedisplay();
glutTimerFunc(200,update,0);}
// BAGIAN YANG DITAMPILKAN PADA SCENE 1

void display1(){
glClear(GL_COLOR_BUFFER_BIT);
langit1();
matahari();
awan();
awan2();
awan3();
awan4();
awan5();
awan6();
awan7();
awan8();
awan9();
awan10();
awan11();
awan12();
awan13();
awan14();
awan15();
glPushMatrix();
glTranslated(a,75,0.0);
tiang1();
badanKapal1();
badanKapal2();
badanKapal3();
badanKapal4();
badanKapal5();
badanKapal6();
badanKapal7();
badanKapal8();
badanKapal9();
badanKapal10();
badanKapal11();
badanKapal12();
badanKapal13();
badanKapal14();
badanKapal15();
badanKapal16();
badanKapal17();
badanKapal18();
badanKapal19();
badanKapal20();
badanKapal21();
badanKapal22();
badanKapal23();
cerobong11();
cerobong12();
cerobong21();
cerobong22();
cerobong31();
cerobong33();
cerobong41();
cerobong42();
tiang2();
glPopMatrix();
laut1();
badankapalkecil1();
badankapalkecil2();
badankapalkecil3();
badankapalkecil4();
layarkapal1();
layarkapal2();
layarkapal3();
layarkapal4(); }

//BAGIAN YANG DITAMPILKAN PADA SCENE 2

void display2(){
glClear(GL_COLOR_BUFFER_BIT);
langit2();
laut2();
glPushMatrix();
glTranslated(b,75,0.0);
tiang1();
badanKapal1();
badanKapal2();
badanKapal3();
badanKapal4();
badanKapal5();
badanKapal6();
badanKapal7();
badanKapal8();
badanKapal9();
badanKapal10();
badanKapal11();
badanKapal12();
badanKapal13();
badanKapal14();
badanKapal15();
badanKapal16();
badanKapal17();
badanKapal18();
badanKapal19();
badanKapal20();
badanKapal21();
badanKapal22();
badanKapal23();
cerobong11();
cerobong12();
cerobong21();
cerobong22();
cerobong31();
cerobong33();
cerobong41();
cerobong42();
tiang2();
glPopMatrix();
hujan();
tetesan();}

//BAGIAN YANG DITAMPILKAN PADA SCENE 3

glClear(GL_COLOR_BUFFER_BIT);
langit3();
awan();
awan2();
awan3();
awan4();
awan5();
awan6();
awan10();
awan11();
awan12();
awan13();
awan14();
awan15();
glPushMatrix();
glTranslated(c,75,0.0);
tiang1();
badanKapal1();
badanKapal2();
badanKapal3();
badanKapal4();
badanKapal5();
badanKapal6();
badanKapal7();
badanKapal8();
badanKapal9();
badanKapal10();
badanKapal11();
badanKapal12();
badanKapal13();
badanKapal14();
badanKapal15();
badanKapal16();
badanKapal17();
badanKapal18();
badanKapal19();
badanKapal20();
badanKapal21();
badanKapal22();
badanKapal23();
cerobong11();
cerobong12();
asapcerobong1();
cerobong21();
cerobong22();
asapcerobong2();
cerobong31();
cerobong33();
asapcerobong3();
cerobong41();
cerobong42();
tiang2();
glPopMatrix();
laut3();}

4.2 Hasil
4.3 Analisa
Analisa program terbagi menjadi 5 bagian, yaitu :
4.3.1 Kapal Titanic
Kapal Titanic pada animasi ‘Kapal Tenggelam’ merupakan bentuk kompleks dari
primitive objek yang terdiri dari beberapa gabungan objek primitive. Pembuatan kapal
terbagi atas badan kapal, tiang dan cerobong asap.
1. Badan Kapal
Badan kapal terbagi menjadi 3 bagian :
- Depan
- Tengah
- Belakang
- Lekukan bagian paling belakang

Awal pembuatannya dimulai pada bagian depan dengan objek sembarang. Kemudian
pada bagian tengah dibuat dari gabungan beberapa segitiga. Kemudian bagian belakang
dibentuk dari persegi. Terakhir, lekukan paling belakang dibuat dari 1 buah segitiga dan
1 buah bangun sembarang.

Lekukan Bagian Belakang Bagian Tengah Bagian Depan


Paling g
Belakang

Badan kapal dibuat dengan perintah GL_POLYGON dan GL_TRIANGLES.

2. Bagian Atas
Bagian atas kapal terbuat dari objek persegi dan objek sembarang. Untuk membuat
garis outline (luar), menggunakan perintah GL_LINE_STRIP yang fungsi sudah
dijelaskan pada BAB II.
Penggalan kode :
glBegin(GL_POLYGON); // Membuat bagian dalam (fill)
glColor3f(1.0,1.0,1.0);
glVertex2f (-35.0, 30.0);
glVertex2f (-130.0, 30.0);
glVertex2f (-130.0, 10);
glVertex2f (-35.0, 10);
glEnd();

glBegin(GL_LINE_STRIP); // Membuat garis luar (outline)


glColor3f(0.0,0.0,0.0);
glVertex2f (-35.0, 30.0);
glVertex2f (-130.0, 30.0);
glVertex2f (-130.0, 10);
glVertex2f (-35.0, 10);
glEnd();

Outline Fill

3. Tiang Kapal
Tak jauh berbeda dengan yang diatas, kedua tiang pada kapal juga dibentuk dari
objek persegi
4. Cerobong Asap
Cerobong asap dibuat dari 2 buah objek. Warna hitam dan warna emas

Bagian 2

Bagian 1
4.3.2 Objek Tambahan

Selain objek utamanya yaitu Kapal Titanic, berikut berupa objek tambahan :

1. Langit
Ada 5 scene pada animasi dengan warna 4 langit yang berbeda, kode dibawah untuk
membuat langit pada scene 1

glBegin(GL_POLYGON); //menggunakan POLYGON untuk meng


glColor3f(0.0,0.5,1.0); //objek persegi
glVertex2f (1280.0, 740.0); //ukuran vertex dibuat menutupi
glColor3f(0.7,0.8,0.0); //setengah layar
glVertex2f (-1280.0, 740.0); //pemberian glColor pada tiap
glColor3f(0.0,0.8,0.9); //vertex untuk menghasilkan
glVertex2f (-1280.0, -160); //warna gradasi
glColor3f(0.0,0.8,0.9);
glVertex2f (1280.0, -160);

2. Laut
Sama seperti membuat langit, terdapat 4 warna laut berbeda yang dibuat dengan
perintah GL_POLYGON. Perubahan dilakukan pada nilai vertex dan permberian
warna
3. Matahari
Matahari terletak pada scene 1. Dengan kode program :

glColor3f(1.0,1.0,0.0);
glBegin(GL_POLYGON);
for(i=0; i<=360; i++){ // banyaknya titik yang membentuk matahari
float sudut = i+(PI/360); // sudut 360 untuk membentuk lingkaran
float x = 100*cos(sudut); // besar sudut untuk sumbu x
float y = 160*sin(sudut); // besar sudut untuk sumbu y
glVertex2f(x-200,y+400);} // menentukan letak matahari

4. Awan
Awan dibuat dari gabungan beberapa lingkaran. Cara membuatnya sama dengan
membuat matahari
5. 4 buah kapal kecil pada scene 1
Dibuat dari objek trapesium dan segitiga.
// Membuat badan kapal kecil
glColor3f(1.0,1.0,1.0); // untuk warna putih
glVertex2f (-420.0, -440.0); // untuk membuat trapesium, nilai pada
glVertex2f (-380.0, -440.0); // keempat vertex koordinat x dibuat
glVertex2f (-385.0, -460); // berbeda
glVertex2f (-415.0, -460);
glEnd();

// Membuat layar kapal


glBegin(GL_TRIANGLES); // digunakan untuk membuat objek segitiga
glColor3f(1.0,1.0,1.0);
glVertex2f (-400.0, -400); // pada segitiga, menggunakan 3 buah
glVertex2f (-410.0, -440); // vertex
glVertex2f (-400.0, -440);

6. Gunung Es
Bentuk gunung es yang tak beraturan dibentuk dari 12 vertex2f yang menghasilkan
bentuk segi banyak. Dengan melakukan perubahan pada nilai vertex, bentuk tak
beraturan pun dihasilkan. Berikut kodenya :

glBegin(GL_POLYGON);
glVertex2f(7.5,-15.5);
glVertex2f(1,8);
glVertex2f(1.25,20.5);
glVertex2f(5.5,26.5);
glVertex2f(5,25);
glVertex2f(10.5,26.5);
glVertex2f(15,25.5);
glVertex2f(15.5,21.5);
glVertex2f(17.5,20.5);
glVertex2f(18.5,1.5);
glVertex2f(19,5);
glVertex2f(19.5,-15.5);

Perbedaan Vertex3f dengan vertex2f adalah pada Vertex3f koordinatnya (x,y,z).


Sedangkan untuk vertex2f koordinatnya (x,y)
4.3.3 Efek
Pembuatan Cuaca, Asap dan Bintang Berkelip :
Pada scene 2, terjadinya efek rintihan hujan, pada scene 3 terdapat asap yang muncul
pada cerobong asap dan pada scene 4, 5 ada bintang berkelip. Ketiga efek tersebut dibuat
dengan dasar yang sama, yakni menggunakan fungsi gerakan random (Rand).

void hujan(void){
float xp,yp,xp2,yp2; //mendefinisi variabel sumbu x dan y
for(int i=0;i<500;i++){ //kepadatan garis dengan jumlah tak hingga
xp=-1200*(float)rand()/RAND_MAX; //letak pada koordinat x1
yp=-300+1880*(float)rand()/RAND_MAX; //letak pada koordinat y1
xp2=1200*(float)rand()/RAND_MAX; //letak pada koordinat x2
yp2=-300+1880*(float)rand()/RAND_MAX; //letak pada koordinat y2
glColor3f(1,1,1); // warna putih untuk hujan
glBegin(GL_LINES); // membuat bentuk garis
glVertex2f(10+xp,10+yp); // letak dari koordinat x dan y
glVertex2f(xp+20,yp-10);
glVertex2f(10+xp2,10+yp2);
glVertex2f(xp2+20,yp2-10);
glEnd();

Pada penggalan kode diatas, terdapat variabel xp=x1, yp=y1, xp2=x2 dan yp2=y2.
Variabel xp dan yp saja tak menutupi seluruh layar windows. Sehingga efek hujan hanya
setengah layar. Karena itu menggunakan xp2 dan yp2 untuk menutupi lagi bagian
sisanya.
RAND_MAX digunakan agar garis yang dibuat bergerak secara random (acak).
Dan for(int i=0;i<500;i++){ pengulangan yang membuat garis terus ada tanpa habis.

Hal diatas juga berlaku untuk membuat asap pada cerobong. Hanya saja asap bukan
dibuat dengan garis, melainkan titik menggunakan GL_POINTS.

Membuat bintang berkelip sedikit berbeda. Mulanya bintang dibuat dengan objek
titik. Berikut penggalan kodenya :
glBegin(GL_POINTS); // Bintang Kecil
glColor3f(1.0, 1.0, 1.0);
glVertex2i(-123, 160);
glVertex2i(-224, 165);
glVertex2i(-345, 280);
glVertex2i(-446, 260);

Kemudian membuat gerakan randomnya. Penggalan kodenya :

void userdraw(void) {
int s; // ukuran titik
float x,y; // posisi titik
glColor3f(0.0,0.0,0.0);
for(int i=0;i<500;i++){
s=rand()%4+1;
glPointSize(s);
glBegin(GL_POINTS);
x=(float)rand()/RAND_MAX; // tak perlu membuat nilai koordinat x dan y
y=(float)rand()/RAND_MAX;
glVertex2f(x,y);
glEnd();

Setelah itu, pada saat merender, fungsi userdraw terletak dibelakang dari fungsi bintang.
Hal itu akan menghasilkan efek bintang berkelip.

4.3.4 Transformasi Objek


Dua jenis transformasi yang digunakan yaitu :
- Translasi
- Rotate

Objek yang ber-Translasi yaitu Kapal Titanic dan Objek tambahannya.Sedangkan


pada scene 5, kapal menggunakan transformasi Rotate.

Translasi digunakan dengan memakai perintah

glTranslated(450,50,0.0);
Dan Rotate digunakan dengan memakai perintah

glRotated(-15,0,0,1);

Agar objek yang ber-Translasi dan ber-Rotasi tidak berubah bentuk, menggunakan
fungsi :

- glPopMatrix = suatu fungsi guna memanggil suatu fungsi yang telah disimpan pada

glPushMatrix.

- glPushMatrix = digunakan untuk menyimpan koordinat yang ada.

4.3.5 Pergantian Scene


Pergantian scene pada animasi ini terjadi karena menggunakan 5 buah display.
Dimana setiap display diatur agar tampil saat objek bergerak pada koordinat tertentu.
Setiap Display berisi objek-objek yang dipilih sesuai dengan skenario animasi.
Berikut penggalan program untuk pergantian scene :

GLint a=0,b=0,c=0,d=0,e=0,x=100,i=0;
GLfloat theta=0.0;

void display()
{
display1(); // a merupakan variabel yang merujuk ke display1
if(a>950){ // jika a terletak pada koordinat 950, maka
b+=20; // menampilkan display2 yang ditandai dengan
display2(); // variabel b
}
if(b>950 ){ // begitulah seterusnya sampai mencapai display5
c+=10;
display3();
}
if(c>950 ){
d+=10;
display4();
}
if(d>950 ){
e+=10;
display5();
}

glFlush();
glutSwapBuffers();
}
Agar setiap display dapat menampilkan objek-objek, setiap display merender objek apa
saja yang akan ditampilkan. Seperti pada penggalan kode dibawah :

void display1()
{
glClear(GL_COLOR_BUFFER_BIT);

langit1();
matahari();
awan();
awan2();
awan3();

// dan seterusnya...

glClear(GL_COLOR_BUFFER_BIT); digunakan untuk membersihkan layar agar tampilan


display tidak tertimpa tampilan display sebelumnya
BAB V

KESIMPULAN

5.1 Kesimpulan

Untuk membuat sebuah animasi 2 dimensi, diperlukan beberapa hal yaitu :

1. Objek
Dapat berupa titik, garis, bangun datar maupun gabungan dari kesemuanya
2. Pemberian Warna
Warna dapat berupa warna solid maupun gradasi
3. Transformasi
Berupa perpindahan, perputaran maupun perubahan ukuran

Anda mungkin juga menyukai