GRAFIKA KOMPUTER PENDAHULUAN
Pada saat ditemukan pertama kali, komputer digunakan sebagai alat bantu untuk mempercepat proses hitung menghitung. Dalam perkembangan selanjutnya, banyaknya data yang harus ditangani menjadi sangat besar. Hal ini tentu menimbulkan persoalan baru, yakni bagaimana data yang sangat banyak bisa ditangani dan disajikan dengan cara yang lebih efisien dan efektif. Memang komputer bisa mencetak hasil keluaran sampai beribu-ribu halaman jika diperlukan. Tapi tentu akan sangat membosankan apabila manusia harus membaca laporan-laporan yang sangat panjang, tidak saja akan memakan waktu, tapi kemungkinan salah menjadi lebih besar, dan yang jelas, mereka yang membaca laporan-laporan tersebut harus benar-benar tahu apa yang sesungguhnya terkandung dalam angka-angka yang tersaji dalam laporan tersebut.
Orang kemudian mengembangkan satu alat bantu yang bisa dipakai untuk menyajikan data dalam jumlah yang sangat besar ke dalam sebuah bagan, sehingga lebih mudah untuk dipahami. Dengan adanya alat bantu tersebut, pada saat-saat tertentu dan untuk keperluan-keperluan tertentu, orang lebih suka menggunakan bagan dibanding hanya melihat deretan angka yang sangat membosankan. Sejalan dengan hal ini, para ahli komputer juga tanggap dan mereka kemudian mengembangkan perangkat yang membuat komputer menjadi sangat pandai, yakni dengan menambahkan kemampuan grafis pada komputer-komputer yang mereka kembangkan. Sehingga untuk saat ini bisa dikatakan bahwa semua komputer pasti mempunyai kemampuan grafis dan kemudian lahirlah apa yang disebut dengan grafika komputer (computer graphic).
Grafika komputer pada dasarnya adalah suatu bidang ilmu komputer yang mempelajari tentang cara-cara untuk meningkatkan dan memudahkan komunikasi antara manusia dengan mesin (komputer) dengan jalan membangkitkan, menyimpan dan memanipulasi gambar model suatu obyek menggunakan komputer. Grafika komputer memungkinkan kita berkomunikasi lewat gambar-gambar, bagan-bagan dan diagram-diagram
SISTEM GRAFIKA KOMPUTER
Data yang banyak dapat diwakili dengan bagan. Dalam hal ini, operator memasukkan sejumlah data, dan dengan prosedur tertentu komputer akan menampilkan bagan yang diinginkan. Bagan yang dihasilkan ini merupakan gambar statis karena operator tidak dapat berinterkasi dengan gambar yang ada pada layar komputer.
Cara ini sangat tidak memadai, karena ada kalanya operator ingin berinteraksi langsung dengan gambar pada layar komputer. Sistem yang memungkinkan operator berdialog dengan apa yang terlihat pada layar komputer disebut dengan sistem grafika komputer interaktif (interactive computer graphic).
Dalam sistem interaktif, operator bisa mengendalikan segala aspek gambar yang terlihat secara dinamis. Aspek-aspek tersebut : isi gambar, format gambar, bentuk gambar, ukuran gambar dan warna gambar. Pengendalian secara dinamis dapat dilakukan dengan piranti-piranti seperti : keyboard, mouse, joystick, light pen, dll.
Keuntungan yang kita peroleh dari sistem interaktif adalah bahwa dengan mudah kita bisa menirukan atau mensimulasikan sesuatu kejadian dalam dunia nyata (real world) pada layar komputer.
Berdasarkan cara pandang kita terhadap gambar yang ada pada layar, kita bisa membedakan apa yang dimaksud dengan motion dynamic dan update dynamic.
Motion dynamic pada dasarnya adalah cara pandang kita terhadap suatu obyek yang bergerak dan kita sebagai pengamat dalam keadaan diam atau obyek yang kita amati diam dan kita sebagai pengamat bisa bergerak bebas di sekeliling obyek tersebut. Contoh : flight simulator.
Dengan menggunakan komputer, dengan mudah kita mensimulasikan tabrakan antara dua buah mobil dengan kecepatan yang bisa dibuat bervariasi. Dengan cara ini, pabrik mobil bisa mempelajari hasil simulasi dan menambahkan unsur-unsur yang diperlukan untuk lebih menjamin keselamatan pengemudi dan penumpang.
PENERAPAN GRAFIKA KOMPUTER Computer Graphic mencakup bidang :
Computer Aided Design (CAD) untuk proses perancangan terutama pada sistem
rekayasa dan arsitektur. Misal : grafika komputer bisa digunakan untuk merancang komponen-komponen dari sistem-sistem mekanis, elektris, elektro-mekanis, piranti-piranti elektronis, struktur bangunan, reaktor kimia, badan-badan mobil, pesawat terbang, badan kapal lengkap dengan ruang-ruang yang ada, jaringan komputer, jaringan telepon, dll.
Dalam bidang ini tekanan utama dari pemakaian grafika komputer adalah untuk memproduksi gambar dengan ketelitian yang sangat tinggi. Selain itu, gambar yang dihasilkan dari CAD bisa dipakai sebagai masukan ke suatu sistem yang akan mengevaluasi model yang digambar sesuai kebutuhan dan dengan cara-cara tertentu operator bisa mengubah model yang sudah ada untuk disesuaikan dengan kebutuhan.
Presentasi
Art membuat logo, gambar Hiburan game
Pendidikan dan pelatihan simulasi pesawat terbang (flight simulator) Visualisasi
GUI (Graphical User Interface)
KLASIFIKASI PENERAPAN GRAFIKA KOMPUTER
Ada sejumlah kriteria yang bisa dipakai untuk mengelompokkan penerapan grafika komputer pada bidang-bidang seperti dijelaskan diatas, yaitu :
1. Berdasarkan tipe dari objek dan gambar yang dihasilkan. Terapan-terapan yang termasuk didalam kriteria ini antara lain gambar-gambar garis dari objek 2D dan 3D (yang sering disebut dengan wired-frame pictures), misalnya garis-garis yang menunjukkan struktur suatu bangunan, gambar 2D dengan gray scale yang berbeda, gambar 3D yang memperhatikan efek pencahayaan/bayangan.
2. Berdasarkan interaksi dan derajat pengendalian objek/gambar dalam layar. Dalam offline plotting, gambar bisa dibentuk dari sekumpulan data yang diketahui atau diperoleh dari basis data, sehingga gambar yang dihasilkan tidak bisa diubah kecuali mengubah basis data. Dalam interactive plotting, user bisa berinteraksi dengan gambar sehingga user bisa mengubah gambar yang tampil dilayar dengan menggunakan piranti yang ada. Dalam interactive design user bisa menggambar bentuk tertentu dimulai dari layar dalam keadaan kosong, kemudian ditambahkan sejumlah objek dimana user bisa mengubah gambar yang telah terbentuk dengan mudah, misalnya memperbesar atau memperkecil gambar.
3. Berdasarkan role of the picture atau bagaimana gambar yang tertampil mempunyai arti bagi user atau siapa saja yang melihatnya. Dalam bidang-bidang tertentu misalnya kartografi, gambar yang dihasilkan merupakan produk utama, sedangkan pada bidang-bidang lain gambar yang dihasilkan hanya merupakan visualisasi dari suatu objek atau fenomena yang ingin diamati.
4. Berdasarkan hubungan antara objek dan gambar yang tertampil. Dalam hal ini user dapat menampilkan sebuah gambar dalam sekali tampil, sekelompok gambar yang saling berhubungan atau dengan teknik lain.
Citra : berorientasi pixel, dimana gambar pada komputer dibentuk dengan model 2D matrix M x N BITMAP, sehingga untuk memanipulasi citra, cukup dengan memanipulasi warna/intensitas dari pixel yang bersangkutan (elemen matrixnya).
Graphic : berorientasi vektor, sehingga untuk memanipulasi suatu grafik, yaitu dengan cara mengubah elemen-elemen dari vektor yang bersangkutan. Vektor memiliki arah dan besaran.
Citra : mengolah data citra untuk mendapatkan interpretasi 2D atau 3D dari objek dalam
citra.
Graphic : Menggunakan model 2D atau 3D untuk mendapatkan hasil realistik pada layar
Citra : menitikberatkan pembahasannya pada teknik-teknik untuk meningkatkan kualitas
suatu citra yang telah ada sebelumnya sesuai dengan keperluan penggunanya atau pada metode persepsi mesin terhadap suatu informasi visual (misalnya dalam dunia robotika) Graphic : Grafika Komputer cenderung mempelajari konsep dan implementasi dari suatu metode untuk membangkitkan suatu citra maupun animasi, baik dalam bentuk dua dimensi maupun tiga dimensi.
Citra : Pengolahan Citra berawal dari citra digital yang kemudian akan dianalisa dan atau
disintesa ulang untuk mendapatkan citra baru dengan kualitas yang lebih baik, atau dianalisa untuk mendapatkan deskripsi objek-objek yang terdapat dalam citra tersebut. Graphic :Proses-proses Grafika Komputer berawal dari primitif-primitif dasar grafis (titik, garis, lingkaran dll) yang mendeskripsikan objek-objek yang kemudian akan membentuk suatu citra dua dimensi maupun tiga dimensi.
Tapi jika di pandang sebagai vektor dalam grafik, maka gambar tersebut direpresentasikan sbg :
1. Cara pertama : (3,Timur),(4,Selatan),(3,Barat),(4,Utara). Kelemahan : kita tidak dapat menentukan titik asal dari vektor. 2. Cara kedua : [(0,1),(0,3)], [(0,3),(4,3)], [(4,3),(4,1)], [(4,1),(0,1)]
Dengan cara ini, maka kita mengetahui titik asal dan tujuan sehingga kita dapat memperoleh arah dan besar dari vektor tersebut.
Arah = tan-1[(Y2-Y1)/(X2-X1)] Besar = (X1-X2)2 + (Y1-Y2)2 3. Cara ketiga : Menggunakan informasi atribut segi empat.
[(0,1),(4,3)] atau (0,1,4,3)
Jika ada suatu gambar yang terdiri dari grafik dan area dapat diisi dengan warna tertentu, maka itu disebut grafik juga. Intinya grafik adalah gambar yang koordinatnya dapat diubah.
0 1 2 3 4
1
2
3
4
0
Jika dipandang sebagai bitmap (BMP) dalam citra, maka gambar tersebut direpresentasikan sbg :
MONITOR
Dalam computer graphic, monitor adalah salah satu perangkat penting. (Zaman dulu, printer merupakan perangkat penting dalam computer graphic).
Pada dasarnya, semua monitor dengan kemampuan grafis memiliki 3 komponen utama : 1. Display
2. Frame Buffer, dimana gambar yang akan ditampilkan ke layar disimpan sebagai matrix dimana nilai elemennya menunjukkan intensitas dari citra grafis yang akan ditampilkan.
3. Display Controller/Display Processor, berfungsi untuk melewatkan isi frame buffer dan mengolahnya untuk ditampilkan ke display.
Cara untuk menampilkan gambar pada layar membedakan jenis tampilan yang ada : 1. Vector Display/Calligraphic Display/Stroke Display. (60-an)
Frame buffer pada jenis vector display berisi display list/display program yang memberi perintah penggambaran titik, perintah penggambaran garis dan perintah penggambaran karakter. Perintah-perintah ini selanjutnya akan diolah oleh display processor yang akan mengubah data digital menjadi tegangan analog yang akan dipakai untuk memancarkan elektron, yang apabila mengenai tabung display yang dilapisi fosfor akan menyebabkan fosfor tersebut berpendar dan terlihat ada gambar. Karena sinar pendar dari fosfor itu tidak bertahan lama, dalam puluhan atau ratusan milidetik, maka elektron-elektron tersebut harus ditembakkan minimal 30 kali per detik untuk menghindari adanya kedip. Proses ini disebut sebagai electron refresh.
2. Raster Display. (70-an)
Dikembangkan berdasarkan teknologi televisi. Dalam jenis tampilan ini, grafis, karakter dan bentuk-bentuk lain selalu digambar berdasarkan komponen terkecilnya yaitu titik atau pixel/pel (picture element). Sebuah pixel pada layar bisa dihidup-matikan dengan mudah. Karena status sebuah pixel adalah hidup(nyala) atau mati, maka dengan mudah dikodekan menggunakan biner (0/1). Dengan cara inilah sesungguhnya suatu citra grafis disimpan dalam frame buffer. Untuk gambar hitam-putih warna hitam digunakan bit 1 dan warna putih digunakan bit 0. Untuk gambar warna, ex :
Citra 4 bit menggunakan 16 kombinasi warna Citra 8 bit menggunakan 256 kombinasi warna
Citra 24 bit menggunakan 16 juta kombinasi warna
Jenis-jenis monitor :
Figure 1. Basic Design of a magnetic-deflection CRT
Figure 2. Operation of an electron gun with an accelerating anode
Layar LCD
Macam layar/tampilan : 1. B/W : Hercules
2. Color : CGA, EGA, VGA, SVGA, XGA, IBM8514, dll.
Setiap mode layar mempunyai perbedaan dalam beberapa hal, antara lain :
Jumlah pixel dalam 1 layar (resolusi layar)
Mis. 340 x 200, 640 x 400, 640 x 480, 800 x 600, 1024 x 968
Y
X
Di dalamnya berisi cairan yang dapat diubah warnanya tergantung dari tegangan yang diberikan.
Warna (informasi warna) jumlah byte untuk tiap pixel
Mis. 2 color, 4 color, 16 color, 256 color, 16 M Color.
Dot Pitch
Merupakan unit terkecil dalam menampilkan warna pixel. Dot pitch dapat dibedakan berdasarkan kerapatannya.
Mis. 0.28mm, 0.26mm, 0.32mm, 0.39mm
Semakin kecil dot pitch, maka tampilan gambar semakin halus. Warna tampilan layar
Jumlah Warna Bit Contoh Monitor
2 1 B/W
4 2 CGA
16 4 Mode DOS
256 8 VGA
Mengapa jumlah warna yang ditampilkan selalu merupakan kelipatan 2,4,16,256 karena alasan efisiensi penggunaan teknologi yang telah ada dan kemudian dipadukan untuk menghasilkan tampilan warna yang baru.
Contoh soal :
Berapakah memori yang dibutuhkan untuk citra 8 bit dengan ukuran 800 x 600 ? Memori yang dibutuhkan = 800 x 600 x 8 bit = 3.840.000 bit
= 480.000 byte
469 KB
Horizontal & Vertical Retrace
PLOTTER
Jika pada printer menggunakan Raster Technology (mencetak dari atas ke bawah, dari kiri ke kanan), maka pada plotter menggunakan Vector Technology (mencetak dari segala arah). NB : Scanner tidak termasuk hardware grafik, tapi lebih tepatnya termasuk hardware citra karena gambar hasil scan disimpan dalam bentuk bitmap (dengan teknologi raster).
PERANGKAT LUNAK GRAFIS
Refresh Rate :
Kecepatan update dari awal (kiri atas layar) hingga kembali setelah vertcal retrace
Horizontal Retrace
Untuk menampilkan suatu informasi grafis, banyak perangkat lunak yang telah dibuat dalam membantu proses-proses dalam grafika komputer, contohnya :
Corel draw, AutoCAD, 3D Studio MAX, MS.Paint, dll
Perangkat Tools untuk pengembangan grafis (pustaka/library) :
BGI (Borland Graphic Interface) OpenGL
DirectX
Tugas I
Buat Grafik dengan salah satu library di atas (BGI,OpenGL,DirectX). Dikumpulkan 1 minggu.
PRIMITIF GRAFIS TITIK (PIXEL/DOT)
Attributnya :
Lokasi (2D x,y) , (3D x,y,z) Warna
GARIS (LINE) Attributnya :
Lokasi titik-titik ujung, mis : (x1,y1), (x2,y2)
Ada juga yang menyatakan garis dengan : titik awal, arah dan panjang.
Ketebalan garis (Thickness) Tipe Garis (Pattern)
Warna
LINGKARAN (CIRCLE) Attributnya :
Titik pusat (Xp,Yp)
Jari-jari lingkaran atau radius (r atau d) Ketebalan (Thickness)
Tipe Garis (Pattern) Warna
ELLIPSE
Attributnya :
Titik pusat (Xp,Yp)
Jari-jari horizonal (a) & Jari-jari vertical (b) Ketebalan (Thickness)
Tipe Garis (Pattern) Warna
POLYGON
Yang teratur :
Poligon yang teratur dapat dibuat dengan menggunakan dimensi garis yang memiliki panjang tetap.
Contoh :
Polygon (6,3,5,4), dimana :
(6,3) lokasi awal 5 Segi 5
4 Panjang sisi.
Hasil :
Untuk polygon yang teratur dapat dibuat dengan menggunakan algoritma iterasi, tetapi untuk polygon yang tidak teratur digunakan suatu array yang menyimpan suatu lokasi titik-titik sikunya.
SEGI – 4 Attributnya :
Lokasi : Titik kiri atas (x1,y1) dan Titik kanan bawah (x2,y2) Warna
Thickness Pattern
Untuk menggambar segi – 4 seperti :
KURVA
Kurva Teratur
Misal : Kurva sinus, cosinus, kurva y=x2
Kurva Tak Teratur
Gunakan Metode Control Point. Misal : Bezier.
(6,3)
4
4
4
4
4
(x1,y1)
(x2,y2)
(x1,y1)
(x2,y2)
Hal ini dapat dilakukan dengan rotasi
CHARACTER (FONT) Attributnya :
Jenis Character
Kemiringan (Slanted), mis : horizontal, vertical Thickness
Super/Subscript Warna
Titik (Dot/Pixel)
Titik merupakan elemen yang paling dasar.
Pembuatan titik dapat dilakukan dengan berbagai cara antara lain : 1. Pustaka Grafik (Graphic Library), misal :
BGI putpixel (x,y,color)
OPENGL GL_Drawdot (x,y,color) Window API DrawPixel (x,y,color)
2. Low Level Programming
Interupt, yaitu :
- H/W, yang beroperasi pada processor
- S/W, ada 2 yaitu : DOS dan BIOS
DMA (Direct Memory Access)
langsung mangakses ke alamat memory : ex. Untuk mode text B800:0000h
Untuk mode grafis A000:0000h
Jika ingin mengakses koordinat (5,6) dengan resolusi 800 x 600 :
void mode_int (no_mode)
B800:0000h Karakter B800:0001h Attribut B800:0002h
B800:0004h B800:0003h
A000:0000h Warna A000:0001h Warna
A000:0004h A000:0003h A000:0002h
Mode Text Mode Grafis
(0,0)
(799,599) 800
600
Dengan titik acuan (0,0),
maka alamat offsetnya :
= 800 * y + x
{
REGS R;
R.h.ah = no_mode; Int86(0x10,&R,&R); }
void setpixel_DMA (x,y,color) {
char *Segmen = 0xA0000000; (Segmen+(800*y+x)) = color; }
procedure getpixel_DMA(x,y,color); begin
mem[A000:(800*y+x)] := color; end;
GARIS (LINE)
Persamaan garis :
y = m.x + c
dimana :
m = (y2-y1)/(x2-x1) = y/x c = y1 – m.x1 atau
c = y2 – m.x2 Algoritma Pembuatan Garis
Algoritma pembuatan garis lurus vertikal dan horisontal relatif mudah, tetapi bila garis tersebut miring, maka algoritma menjadi sulit.
Misalkan : Line (1,3,8,5).
m = (y2-y1)/(x2-x1) = (5-3)/(8-1) = 2/7 c = y1 – m.x1 = 3 – 2/7.1 = 19/7 y = 2/7.x + 19/7
Selanjutnya kita membuat iterasi dari x1 x2 Xi Yi Yi (dibulatkan)
1 3.00 3
2 3.29 3
3 3.57 4
4 3.86 4
5 4.14 4
6 4.43 4
7 4.71 5
85.005
DDA (Digital Differential Analyser) Algorithm
Y2
Y1
X2 X1
y – y1 x – x1 y2 – y1 x
=
2 – x17 6 5 4 3 2 1 0 0123456789 10
Y
X
x y x x
y y m
c x m y
1 2
Jika 0<m<1 yk+1 = yk + m
xk+1 = xk + 1 Jika m>1 xk+1 = xk + 1/m
yk+1 = yk + 1
Bresenham’s Algorithm (|m|<1
Repeat
If Pk<0 then
Plot (Xk+1,Yk)
Otherwise
Plot (Xk+1,Yk+1)
Until X=end
Contoh :Line (20,10,30,18) DX = 10, DY = 8 Po = 2DY - DX = 6 2DY = 16
2DY - 2DX = -4
Maka proses generate garis nya adalah :
K Pk (Xk+1,Yk+1) K Pk (Xk+1,Yk+1)
0 6 (21,11) 5 6 (26,15)
1 2 (22,12) 6 2 (27,16)
2 -2 (23,12) 7 -2 (28,16)
3 14 (24,13) 8 14 (29,17)
4 10 (25,14) 9 10 (30,18)
x y P0 2
y P
Pk1 k 2
x y P
CIRCLE
Defined as the set of points that are all at given distance r from a center position (Xc,Yc), expressed :
Calculate the position of points stepping along x axis from (Xc-r) to (Xc+r) with :
Problem :
Considerable computation at each step Spacing between plotted pixel is not uniform. Example :
x y (x,y) x y (x,y) x y (x,y)
0 10 (0,10) 4 9,1 (4,9) 8 6 (8,6)
1 9,9 (1,10) 5 8,6 (5,9) 9 4,5 (9,5)
2 9,8 (2,10) 6 8 (6,8) 10 0 (10,0)
3 9,5 (3,10) 7 7,1 (7,7)
Using polar coordinate approach :
Symmetric in octant calculating only sector from x=0 to x=y
Midpoint Circle Algorithm (Xo,Yo)=(0,r); Plot (Xo,Yo) P0 = 1 – r
Repeat
If Pk<0 then
X=X+1
Plot (X,Y) Pk+1 = Pk+2X+1 Otherwise
X=X+1; Y=Y-1 Plot (X,Y)
Pk+1 = Pk+2X– 2Y+1 Until X ³ Y
Example :
k (X,Y) 2X 2Y Pk
- (0,10) 0 20 -9
0 (1,10) 2 20 -6
2 2
2 ( )
)
(xxc yyc r
2 2
2 r (x x)
y
y c
2 2
2 2
100 100
x y
y x
sin
.
cos
.
r
y
y
r
x
x
c c
Equally Spaced points
100 2 2
y
1 (2,10) 4 20 -1
2 (3,10) 6 20 6
3 (4,9) 8 18 -3
4 (5,9) 10 18 8
5 (6,8) 12 16 5
6 (7,7) 14 14 6
ELLIPSE
Set of points such as the sum of the distance from two pixed position (foci) is the same for all points
Ellipse Equation :
Polar :
Midpoint Ellipse Algorithm
d1+d2 = constant
1 ) (
)
( 2 2
y c x
c
r y y r
x x
Reg.I
Reg.II
r
yr
x sin .cos .
y c
x c
r y y
r x x
F1
F2
d1
d2
Example :
rx=8, ry=6 Region I :
k (x,y) Px Py Pk
0 (0,6) 0 768 -332
1 (1,6) 72 768 -224
2 (2,6) 144 768 -44
3 (3,6) 216 768 208
4 (4,5) 288 640 -108
5 (5,5) 360 640 288
6 (6,4) 432 512 244
7 (7,3) 504 384 400
Region I :
(x
o,y
o)=(0,r
y); Plot (x
o,y
o)
P
0= r
y2– r
x 2
r
y
+1/4r
x 2P
x= 0; P
y=2r
x2y
While P
x<P
yx=x+1
P
x= P
x+ 2r
y2If P
0
y=y-1
P
y= P
y– 2r
x2P
k+1= P
k+r
y2+P
x-P
yOtherwise
P
k+1= P
k+r
y2+P
xPlot(x,y)
Region II :
(x
o,y
o)=(0,r
y); Plot (x
o,y
o)
P
0= r
y2(x+½ )
2+r
x
2
(y-1)– r
x2
r
y2
While y>0
y=y-1
P
y= P
y- 2r
x2If P
0
x=x+1
P
x= P
x+ 2r
y2P
k+1= P
k+r
x2+P
x-P
yOtherwise
P
k+1= P
k+r
x2-P
y
Region II :
k (x,y) Px Py Pk
- - - - -151
0 (8,2) 576 256 233
1 (8,1) 576 128 169
2 (8,0) 576 0 233
AREA FILLING
Dalam grafis, selain digunakan primtif-primitif grafis, diperlukan algoritma khusus untuk mengisi warna. Untuk pengisian warna pada grafik diterapkan pada titik yang memiliki hole.
Contoh :
Ada beberapa algortima yang dapat digunakan untuk melakukan area filling, yaitu : Scan Line
Boundary Fill Algorithm Flood Fill Algorithm Scan Line
Dimulai dari kiri atas layar
Bergerak ke kanan hingga batas kanan layar Ulangi untuk baris-baris berikutnya
Jika ditemukan suatu batas area, maka dilakukan operasi putpixel hingga ditemukan
batas area berikutnya
Kelemahan :
Algoritma akan gagal jika ditemui titik-titik ujung, sehingga perlu penanganan khusus.
Solusi : periksa semua informasi titik ujung berdasarkan list vektor yang dimiliki setiap primitif.
Boundary Fill Algorithm
Dengan teknik ini pengisian warna dilakukan berdasarkan penentuan titik awal. Posisi awal diletakkan pada area filling.
Kemudian semua titik tetangga diuji terhadap batas area
4 Connected
8 Connected
Kemudian digunakan suatu algoritma rekursif untuk pengisiannya. Algoritma 4 Connected :
Procedure BFill (x,y,fillcol,boundcol); Var
Currcol : integer; Begin
Currcol getpixel(x,y);
If (Currcol<>boundcol) and (Currcol<>fillcol) then Begin
Putpixel (x,y,fillcol);
Bfill(x+1,y,fillcol,boundcol); Bfill(x-1,y,fillcol,boundcol); Bfill(x,y+1,fillcol,boundcol); Bfill(x,y-1,fillcol,boundcol); End;
End;
Flood Fill Algorithm
Procedure floodFill (x,y,fillColor,oldColor); Begin
If getpixel(x,y)= oldColor then Begin
Putpixel (x,y,fillColor);
Bfill(x+1,y,fillColor,boundcol); Bfill(x-1,y,fillColor,boundcol); Bfill(x,y+1,fillColor,boundcol); Bfill(x,y-1,fillColor,boundcol); End;
End;
1
4
X
2
3
1
2
3
8
X
4
TRANSFORMASI 2D
Transformasi digunakan untuk mengubah bentuk objek grafik. Ada 2 macam untuk transformasi, yaitu:
Transformasi 2D
Transformasi 3D Kategori transformasi dasar :
Translasi
Rotasi
Skala Transformasi lain :
Shear
Refleksi
Transformasi Translasi Objek digeser dalam :
- Arah X - Arah Y
Misal : Diketahui titik (2,3) di translasi arah x=4 dan arah y=1 ) 4 , 6 ( ) 3 , 6 ( ) 3 , 2
( 4 1
x y
Matrix Homogen Translasi
Memudahkan perhitungan suatu translasi dapat dinyatakan dalam matrix homogen berikut : 1 0 1 0 0 0 1 Ty Tx ) ' , ' ( ) , ( , y x y
x TxTy
x’ = x +Tx
y’ = y + Ty
Operasi Translasi :
1
1 0 1 0 0 0 1 .
1 x Tx y Ty
Ty Tx y
x
Transformasi Skala
Digunakan untuk memperbesar/memperkecil objek. Skala dapat dilakukan dalam arah x dan/atau arah y.
Matrix Homogen Skala (terhadap titik (0,0))
1 0 0 0 0 0 0 Sy Sx ) ' , ' ( ) ,
(x y Sx,Sy x y
x’ = x.Sx
X
Y
y’ = y.Sy
Operasi Translasi terhadap titik (0,0):
. . 1
1 0 0 0 0 0 0 .
1 Sy xSx ySy
Sx y x
Penskalaan terhadap sembarang titik
Langkah-langkah : 1. Translasi ke (0,0) 2. Skala-kan
3. Translasi balik ke (Xf,Yf)
Matrix Homogen Skala (terhadap titik (Xf,Yf))
1 ) 1 ( ) 1 ( 0 0 0 0 1 . . 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 Sy Yf Sx Xf Sy Sx Yf Sy Yf Xf Sx Xf Sy Sx Yf Xf Sy Sx Yf Xf Transformasi Rotasi
Operasi Rotasi terhadap titik (0,0)
Eddy Muntina Dharma
X
Y
(0,0)
Yf
Xf
Titik (a,b)(c,d), dimana : a=r.cos
b=r.sin
c=r.cos(+)=r.cos .cos –r.sin .sin
=a.cos – b.sin
d=r.sin(+)=r.sin .cos +r.cos .sin
=b.cos + a.sin
Matrix Homogen Rotasi 1 0 0 0 cos sin 0 sin cos
Operasi Rotasi terhadap titik (0,0):
.cos .sin .sin cos 1
1 0 0 0 cos sin 0 sin cos .
1
x y x
y x
Rotasi terhadap sembarang titik (mis. Terhadap titik (Xf,Yf)
Langkah-langkah : 1. Translasi ke (0,0) 2. Rotasi-kan
3. Translasi balik ke (Xf,Yf)
1 0 1 0 0 0 1 1 0 0 0 cos sin 0 sin cos . 1 0 1 0 0 0 1 Yf Xf Yf Xf
GRAFIKA 3 DIMENSI Grafika Komputer dalam aplikasinya terbagi menjadi 2 :
Grafika 2D Grafika 3D
Aplikasi 2D banyak dipakai dalam pembuatan grafik, peta, kreasi 2D yang banyak membantu pemakai dalam membuat visualisasi.
Grafika 2D memiliki kekurangan, yaitu : ketidakmampuannya untuk merepresentasikan objek 3D. Kekurangan ini sangat dirasakan terutama dalam bidang desain, dimana kebanyakan desainer membuat barang yang ada dalam dunia nyata yang berdimensi 3.
GEOMETRI 3D
Dalam grafika komputer, sebuah objek harus dispesifikasikan dengan metode geometri analitik.
Sama halnya dengan grafika 2D, objek yang paling sederhana adalah sebuah titik. Sebuah titik dalam grafika komputer harus dideskripsikan dengan benar dimana letaknya, sehingga tidak ada ambiguitas dimana titik tersebut berada. Karena itu dibutuhkan sebuah sistem koordinat untuk mendeskripsikan letak titik tersebut.
Jika dalam grafika 2D dikenal sistem koordinat dengan 2 sumbu/axis x dan y, maka dalam grafika 3D digunakan sistem koordinat dengan 3 sumbu, yaitu x,y,z. Pada sistem koordinat inilah sebuah objek dideskripsikan. Sebuah titik, objek paling sederhana dalam grafika komputer, harus memiliki attribut x,y,z untuk menunjukkan letaknya pada sebuah dunia 3D (world).
Pada sistem koordinat 3D harus diperhatikan orientasi dari sumbu x,y dan z. Grafika 3D mengenal 2 buah sistem koordinat, yaitu :
Right-handed coordinat system (Sistem Koordinat Tangan Kanan) Left-handed coordinat system (Sistem Koordinat Tangan Kiri)
Posisi sebuah titik dalam grafika 3D diekspresikan dengan (x,y,z). Beberapa titik yang berdekatan akan membentuk sebuah garus. Seperti pada grafika 2D, sebuah garis dibentuk dengan mendeskripsikan dua buah titik, yaitu (x1,y1,z1) dan (x2,y2,z2) yang menjadu ujung dari sebuah garis. Sebuah garis dalam grafika 3D dapat diekspresikan dengan sepasang persamaan, yaitu :
1 2
1 2 1 1
1 2
1 2 1 1
x x
z z x x
z z
x x
y y x x
y y
Pada grafika 3D, terdapat sebuah geometri yang sangat penting, yaitu bidang datar (plane). Sebuah bidang datar pada grafika 3D dispesifikasikan dengan sebuah persamaan, yaitu :
Ax + By + Cz + D = 0
Dengan adanya geometri 3D untuk mengekspresikan sebuah titik, garis dan bidang datar, maka sebuah objek 3D dapat didekripsikan dengan geometri tersebut. Sebuah objek dalam grafika 3D dapat dibangun dengan menggunakan primitif 3D.
PRIMITIF 3D
Primitif adalah beberapa bentuk dasar yang dapat dengan mudah didefinisikan secara matematik.
Pada grafika 3D terdapat primitif yang paling umum : +x
+z +y
+x +y
+z
Bola (sphere) Kubus(cube) Silinder (cylinder) Kericut (cone) Cincin (torus)
Primitif-primitif ini biasanya diambil dari bentuk-bentuk dasar benda yang sangat umum. Sehingga pemodelan benda-benda pada grafika 3D dapat dimodelkan dengan menggunakan primitif-primitif tersebut.
Setiap primitif 3D memiliki parameter, yaitu : Nilai yang mengekspresikan letak Bentuk primitif tersebut
Misal : Kubus dapat diekspresikan dengan 1 buah titik (x,y,z) dan sebuah nilai yang mengekspresikan panjang rusuk primitif tersebut. Titik (x,y,z) menentukan salah satu titik sudut dari kubus, sekaligus berfungsi untuk menentukan letak primitif tersebut dalam world.
Primitif dalam grafika 3D memiliki parameter yang berbeda satu dengan yang lain. Sehingga setiap objek dalam grafika 3D harus didefinisikan dari primitif apa dia diturunkan dan bagiaman cara melakukan rendering pada objek tersebut.
RENDERING
Proses untuk menghasilkan sebuah citra 2D dari data 3D.
Prose ini bertujuan untuk untuk memberikan visualisasi pada user mengenai data 3D tersebut melalui monitor atau pencetak yang hanya dapat menampilkan data 2D.
Metode rendering yang paling sederhana dalam grafika 3D : 1. Wireframe rendering
Objek 3D dideskripsikan sebagai objek tanpa permukaan.
Pada wireframe rendering, sebuah objek dibentuk hanya terlihat garis-garis yang menggambarkan sisi-sisi edges dari sebuah objek.
Metode ini dapat dilakukan oleh sebuah komputer dengan sangat cepat, hanya kelemahannya adalah tidak adanya permukaan, sehingga sebuah objek terlihat tranparent. Sehingga sering terjadi kesalahpahaman antara siss depam dan sisi belakang dari sebuah objek.
2. Hidden Line Rendering
Metode ini menggunakan fakta bahwa dalam sebuah objek, terdapat permukaan yang tidak terlihat atau permukaan yang tertutup oleh permukaan lainnya. Dengan metode ini, sebuah objek masih direpresentasikan dengan garis-garis yang mewakili sisi dari objek, tapi beberapa garis tidak terlihat karena adanya permukaan yang menghalanginya. Metode ini lebih lambat dari daro wireframe rendering, tapi masih dikatakan relatif cepat. Kelemahan metode ini adalah tidak terlihatnya karakteristik permukaan dari objek tersebut, seperti warna, kilauan (shininess), tekstur, pencahayaan, dll.
3. Shaded Rendering
Pada metode ini, komputer diharuskan untuk melakukan berbagai perhitungan baik pencahayaan, karakteristik permukaan, shadow casting, dll. Metode ini menghasilkan citra yang sangat realistik, tetapi kelemahannya adalah lama waktu rendering yang dibutuhkan.
Secara umum, proses untuk menghasilkan rendering dua dimensi dari objek-objek 3D melibatkan 5 komponen utama :
Geometri Kamera Cahaya
Karakteristik Permukaan Algoritma Rendering
KAMERA
Dalam grafika 3D, sudut pandang (point of view) adlah bagian dari kamera. Kamera dalam grafika 3D biasanya tidak didefinisikan secara fisik, namun hanya untuk menentukan sudut pandang kita pada sebuah world, sehingga sering disebut virtual camera.
Sebuah kamera dipengaruhi oleh dua buah faktor penting.Faktor pertama adalah lokasi (camera location). Lokasi sebuah kamera ditentukan dengan sebuah titik (x,y,z). Faktor kedua adalah arah pandang kamera. Arah pandang kamera ditunjukkan dengan sebuah sistem yang disebut sistem koordinat acuan pandang atau sistem (U,N,V). Arah pandang kamera sangat penting dalam membuat sebuah citra, karena letak dan arah pandang kamera menentukan apa yang terlihat oleh sebuah kamera. Penentuan apa yang dilihat oleh kamera biasanya ditentukan dengan sebuah titik (x,y,z) yang disebut camera interest.
Pada kamera, dikenal field of view yaitu daerah yang terlihat oleh sebuah kamera.Field of view pada grafika 3D berbentuk piramid, karena layar monitor sebuah komputer berbentuk segiempat. Objek-objek yang berada dalam field of view ini akan terlihat dari layar monitor, sedang objek-objek yang berada di luar field of view ini tidak terlihat pada layar monitor. Field of view ini sangat penting dalam pemilihan objek yang akan diproses dalam rendering. Objek-objek diluar field of view biasanya tidak akan diperhitungkan, sehingga perhitungan dalam proses rendering, tidak perlu dilakukan pada seluruh objek.
CAHAYA
Sumber cahaya pada grafika 3D merupakan sebuah objek yang penting, karena dengan cahaya ini sebuah world dapat terlihat dan dapat dilakukan proses rendering. Sumber cahaya ini juga membuat sebuah world menjadi lebih realistis dengan adanya bayangan dari objek-objek 3D yang ada.
Objek di dalam Field of View
Sebuah sumber cahaya memiliki jenis. Pada grafika 3D dikenal beberapa macam sumber cahaya, yaitu :
point light memancar ke segala arah, namun intensitas cahaya yang diterima objek bergantung dari posisi sumber cahaya. Tipe ini mirip seperti lampu pijar dalam dunia nyata.
Spotlight memancarkan cahaya ke daerah tertentu dalam bentuk kerucut. Sumber cahaya terletak pada puncak kerucut. Hanya objek-objek yang terletak pada daerah kerucut tersebut yang akan nampak.
ambient light cahaya latar/alam. Cahaya ini diterima dengan intensitas yang sama oleh setiap permukaan pada benda. Cahaya latar tersebut dimodelkan mengikuti apa yang terjadi di alam, diaman dalam keadaan tanpa sumber cahaya sekalipun, benda masih dapat dilihat.
area light
directional light memancarkan cahaya dengan intensitas sama ke suatu arah tertentu. Letak tidak mempengaruhi intensitas cahayanya. Tipe ini dapat menimbulkan efek seolah-olah sumber cahaya berada sangat jauh dari objek
parallel point sama dengan directional, hanya pencahayaan ini memiliki arah dan posisi.
Model dari pencahayaan, dipakai untuk menghitung intensitas dari cahaya yang terlihat dari setiap posisi pada setiap permukaan benda yang terlihat oleh kamera. Ketika melihat sebuah benda, terlihat cahaya yang dipantulkan dari permukaan benda, dimana cahaya ini merupakan intregrasi dari sumber-sumber cahaya serta cahaya yang berasal dari pantulan cahaya permukaan-permukaan yang lain. Karena itu benda-benda yang tidak langsung menerima cahaya dari sumber cahay, masih mungkin terlihat bila menerima cahaya pantulan yang cukup dari benda didekatnya.
Model sederhana dari sumber cahaya adalah sebuah titik sumber, dimana dari titik ini cahaya dipancarkan. Perhitungan pencahayaan bergantung pada sifat dari permukaan yang terkena cahaya, kondisi dari cahaya latar serta spesifikasi sumber cahaya. Semua sumber cahaya dimodelkan sebagai sumber titik yang dispesifikasikan dengan :
Lokasi Lokasi (x,y,z) dari sebuah sumber cahaya akan menentukan pengaruhnya terhadap sebuah objek.
Intensitas Intensitas cahaya menyatakan kekuatan cahaya yang dipancarkan oleh sebuah sumber cahaya. Parameter ini merupakan angka, yang biasanya makin besar nilainya, makin terang sumber cahaya tersebut.
Warna Warna cahaya dari sumber ini akan mempengaruhi warna dari sebuah objek, jadi selain warna objek tersebut warna cahaya yang jatuh pada objek tersebut akan mempengaruhi warna pada rendering. Warna cahaya ini biasanya terdiri dari 3 warna dasar grafika komputer, yaitu: merah, hijau, biru atau lebih dikenal dengan RGB.
KARAKTERISTIK PERMUKAAN
Salah satu elemen yang dibutuhkan dalam melakukan proses rendering adalah karakteristik permukaan dari objek. Karakteristik permukaan dari sebuah objek adalah sifat dari permukaan sebuah objek. Karakteristik permukaan ini meliputi warna, tekstur, dan sifat permukaan, seperti kekasaran (roughness), refleksifitas, diffuseness (jumlah cahaya yang dipantulkan oleh objek), transparansi, dan lain-lain.
karakteristik permukaan dan warna cahaya yang mengenainya. Jadi citra hasil rendering mungkin akan memiliki warna yang sedikit berbeda dengan warna objek tersebut.
Parameter tekstur direpresentasikan dengan sebuah nama file. File ini akan menjadi tekstur pada permukaan objek tersebut. Selain itu juga ada beberapa parameter dalam tekstur yang berguna untuk menentukan letak tekstur pada sebuah objek, sifat tekstur, perulangan tekstur, dan lain-lain.
Parameter-parameter lainnya, seperti diffuseness, refleksisifitas, dan lain-lain direpresentasikan dengan sebuah nilai. Nilai ini menentukan sifat dari parameter-parameter tersebut. Misalnya pada rougness, makin besar nilai parameternya, makin kasar objek tersebut.
ALGORITMA RENDERING
prosedur yang digunakan oleh suatu program untuk mengerjakan perhitungan untuk menghasilkan citra 2D dari data 3D.
Kebanyakan algoritma rendering yang ada saat ini menggunakan pendekatan yang disebut scan-line rendering berarti program melihat dari setiap pixel, satu per satu, secara horizontal dan menghitung warna di pixel tersebut.
Saat ini dikenal 3 algoritma : Ray-Casting
Ray-Tracing Radiosity
Ray-Casting sebuah algoritma yang menembakkan seberkas sinar ke point of view, jika sinar mengenai objek, maka warna objek tersebut akan menjadi warna pixel tempat penembak sinar itu. Setelah pixel tersebut diberi warna, kalkulasi diteruskan ke pixel berikutnya. Pada algoritma ray-casting ini terdapat sub program yang digunakan untuk menghitung warna pada sebuah titik pada objek dan letak objek pada sumbu z. Untuk itu digunakan algoritma shader dan Z-buffer.
Kelebihan : rendering relatif lebih cepat dari algoritma yang lainnya. Hal ini disebabkan karena pada algoritma ini, objek-objek dalam world dianggap terisolasi. Sehingga perhitungan hanya ada satu objek, objek lainnya diabaikan untuk sementara waktu.
Ray-tracing Mirip ray-casting, hanya saja isolasi pada sebuah objek dihilangkan. Sehingga pewarnaan sebuah objek dipengaruhi oleh objek lainnya. Ray-tracing sangat baik memproduksi citra rendering pada produksi akhir (final production), karena citra yang dihasilkannya sangat realisatik.
Kekurangan : waktu rendering yang lama. Hal ini disebabkan karena algoritma ini memperhitungkan berbagai objek untuk mengetahui warna dari sebuah pixel.
Radiosity algoritma ini memecah permukaan yang ada menjadi beberapa permukaan yang lebih kecil. Pemecahan ini mengakibatkan sebuah objek akan berpengaruh pada pewarnaan objek lainnya, tapi pengaruhnya tidak terjadi pada seluruh permukaan, hanya ada permukaan tertentu saja. Hal ini memperbaiki teknik ray-tracing yang pengaruh dari objek lainnya mempengaruhi seluruh permukaan atau kadang tidak berpengaruh sama sekali (diffuse interaction problem)
Kelemahan : lambat (bahkan lebih lambat dari ray-tracing)
Ray-Casting Ray-Tracing Radiosity
Menembakkan sinar untuk
mengetahui warna dari cell Menelusuri sinar secaraterbalik untuk mengetahui warna dari sebuah pixel
Membagi bidang menjadi bidang yang lebih kecil untuk menentukan warna
sampling untuk menam-pilkan hasil
sampling
Biasanya dimodifikasi sesuai
kebutuhan Tidak dapat dimodifikasi Tidak dapat dimodifikasi Memiliki konstrain geometrik
tertentu Tidak Memiliki konstraingeometrik tertentu Tidak Memiliki konstraingeometrik tertentu Waktu rendering cepat Waktu rendering lambat Waktu rendering sangat
lambat Digunakan untuk visuali-sasi
secara cepat
Digunakan untuk visualiasi hasil akhir
Digunakan untuk visualiasi hasil akhir
Dapat digunakan untuk
out-door dan in-out-door scene Dapat digunakan untuk out-door dan in-door scene Biasanya digunakan untuk in-door scene Hasil rendering kadang
terlihat kotak-kotak Hasil rendering sangatrealistik Hasil rendering sangatrealistik
REPRESENTASI BENDA GRAFIKA 3D Istilah-istilah :
Vertex titik pada dunia 3D. Setiap vertex mempunyai nilai x,y,z. Nilai-nilai ini menentukan posisi vertex pada dunia 3D.
Face polygon. Poligon ini adalah suatu permukaan yang nantinya akan di-render. Bentuk dari poligon ditentukan dari posisi vertex-vertexnya. Vertex-vertex ini menentukan titik sudut dari poligon tersebut.
Setiap poligon memiliki vektor normal yang tegak lurus terhadap permukaan itu. Bila arah vektor normal menuju ke pengamat, maka permukaan tersebut dapat dilihat oleh pengamat, tapi jika arah verktor normal menjauhi pengamat maka permukaan tersebut tidak akan tampak.
Mesh sekumpulan face/poligon yang digabung menjadi satu kesatuan membentuk suatu objek baru. Pada dasarnya objek-objek yang kompleks terdiri dari poligon-poligon yang sederhana. Umumnya poligon yang menjadi dasar pembentukan bagi objek-objek lain adalah segitiga.
Segitiga dipilih karena segitiga selalu konvex. Poligon konvex dapat dirender lebih cepat daripada poligon konkaf. Suatu poligon dikatakan konvex bila suatu garis yang dibuat antara dua titik sudutnya tidak berada diluar poligon tersebut.
Dalam grafika komputer, sebuah benda secara umum direpresentasikan dalam bentuk permukaan segibanyak atau poligon. Sebuah benda 3D sederhana, mis. kubus terdiri dari enam permukaan datar berbentuk poligon segi empat beraturan. Masing-masing poligon permukaan kubus terdiri dari empat titik sudut, dimana titik sudut ini merupakan sebuah titik pada dunia 3D. Sehingga data sebuah benda berbentuk kubus pada grafika komputer diwakili oleh beberapa titik yang saling berhubungan membentuk sebuah garis, dimana garis-garis tersebut membentuk sebuah permukaan dan permukaan-permukaan tersebut membentuk sebuah benda 3D. Relasi antar titik, antar garIs dan antar permukaan dapat dinyakan dengan sebuah tabel, seperti :
Tabel Titik Tabel Sisi Tabel Permukaan
V1
V5
V4
V3 V2
E1 E5
E6 E4
E3
E2
V1 : x1,y1,z1 V2 : x2,y2,z2 V3 : x3,y3,z3 V4 : x4,y4,z4 V5 : x5,y5,z5
E1 : V1,V2 E2 : V1,V3 E3 : V2,V3 E4 : V2,V5 E5 : V4,V5 E6 : V3,V4
S1 : E1,E2,E3 S2 : E3,E4,E5,E6