Citra yang
Citra Pengolahan sesuai dgn
awal citra kebutuhan
Image Processing vs Computer Graphics
4
SISTEM GRAFIKA KOMPUTER
Berdasarkan cara pandang pada layar :
Motion dynamic objek bergerak,
kita sbg pengamat (diam) atau
sebaliknya.
ex : flight simulator
Update dynamic perubahan sifat
pada objek (bentuk,warna).
ex : simulasi tabrakan mobil
CS3204 Departement Teknik Informatika 5
IT Telkom
PENERAPAN GRAFIKA KOMPUTER
Computer Aided Design (CAD)
Presentasi
Art
Hiburan
Pendidikan dan Pelatihan
Visualisasi
GUI (Graphical User Interface)
CS3204 7
www.motionportrait.com
KLASIFIKASI PENERAPAN GRAFIKA
KOMPUTER
Berdasarkan tipe dari objek dan
gambar yang dihasilkan
Berdasarkan interaksi dan derajat
pengendalian objek/gambar dalam
layar
Berdasarkan role of the picture
Berdasarkan hubungan antara objek
dan gambar yang tertampil.
12
Image Processing vs Computer Graphics
13
Image Processing vs Computer Graphics
0 1 2 3 4
0 1 1 1 0
0
0 1 0 1 0
1 Image Processing
0 1 0 1 0
2
0 1 0 1 0
3
0 1 1 1 0
4
Computer Graphics
(3,Timur),(4,Selatan),(3,Barat),(4,Utara)
[(0,1),(0,3)], [(0,3),(4,3)], [(4,3),(4,1)], [(4,1),(0,1)]
(Y2 − Y1 )
Arah = tan − 1 Besar = ( X 1 − X 2 ) 2 + (Y1 − Y2 ) 2
(X 2 − X1)
[(0,1),(4,3)] atau (0,1,4,3) atribut informasi segi empat
14
MONITOR
15
MONITOR (cont.)
16
Vector Display
Input
Line (1,1,5,5)
Circle (3,3,10)
17
Raster Display
Input
y
5
4
3
2
1
x
0 1 2 3 4 5
18
MONITOR (cont.)
Jenis Monitor :
Layar Tabung
19
PRINTER vs PLOTTER
20
Perangkat Lunak Grafis
Corel Draw
Auto CAD
3D Studio MAX
Visio
21
Primitif Grafis
Primitif Grafis dapat diartikan sebagai
sebuah bentuk dasar dari objek grafis
yang dapat dibentuk
Primitif grafis yang menjadi dasar
bagi semua objek grafis adalah titik
(DOT)
2
PRIMITIF GRAFIS
Pixel (Dot) Posisi (x,y), Warna
Garis (Line) Posisi (x1,y1,x2,y2), Warna, Thickness,
Pattern
Lingkaran (Circle) Pusat(x,y), Radius, Warna,
Thickness, Pattern
Ellipse Pusat(x,y), Radius Horisonal/Vertikal, Warna,
Thickness, Pattern
3
Titik (Pixel/Dot)
Pustaka Grafis (Library)
BGI putpixel (x,y,color)
OPENGL GL_Drawdot(x,y,color)
4
Titik (Pixel/Dot)
void setpixel_DMA (x,y,color)
{
char *Segmen = 0xA0000000;
(Segmen+(800*y+x)) = color;
}
procedure setpixel_DMA(x,y,color);
begin
mem[A000:(800*y+x)] := color;
end;
5
GARIS (LINE)
Y2 y − y1 x − x1
=
y 2 − y1 x 2 − x1
Y1
y = m.x + c
X1 X2
y 2 − y1 ∆ y
m= =
x 2 − x1 ∆ x
6
Algoritma Pembuatan Garis
Algoritma pembuatan garis lurus vertikal dan horisontal
relatif mudah, tetapi bila garis tersebut miring, maka
algoritma menjadi sulit.
Misal : Line (1,3,8,5)
y 2 − y1 5 − 3 2
m= = =
x 2 − x1 8 − 1 7
2 19
c = y1 − m.x1 = 3 − .1 =
7 7
2 19
y = .x +
7 7
7
Algoritma Pembuatan Garis
8
Analisa Algoritma
Bentuk umum persamaan garis :
y=mx+c digunakan apabila nilai m
berada pada rentang 0 s/d 1 {artinya
bahwa delta x lebih besar daripada
delta y} sedangkan apabila m > 1
maka digunakan persamaan x=(y-c)/
m. Mengapa???
9
DDA (Digital Differential Analyser)
Algorithm
DDA merupakan pengembangan dari
algoritma persamaan garis
sebelumnya (persamaan matematis)
Ide dasar dari DDA adalah
menggunakan nilai pemetaan yang
telah didapat (bisa x atau y) untuk
menghitung nilai selanjutnya untuk
mempercepat proses komputasi
10
DDA (Digital Differential Analyser)
Algorithm
Dari persamaan y=mx+c maka bisa
disimpulkan bahwa:
Y(i) = m x +c
Y(i+1) = Y(i) + m Y(i+1) = Y(i) + m
Y(i) = m x +c
11
DDA (Digital Differential Analyser) Algorithm
y = m.x + c
y 2 − y1 ∆ y
m= =
x 2 − x1 ∆ x
12
Proses DDA
Dengan mengambil contoh soal yang sama pada persamaan garis secara
Matematis, maka proses DDA dapat digambarkan sebagai berikut
Yi
Y(i+1) Apa dasarnya ???
Yi + 1
14
Bresenham’s Algorithm
Setelah melakukan penelitian yang serius,
maka seorang pakar menemukan suatu
metode dalam pembuatan garis yang
memiliki kecepatan komputasi yang lebih
cepat dibandingkan dengan metode
sebelumnya => Bresenham’s Algorithm
(Mengapa lebih cepat ??)
Algoritma Bresenham’s melakukan proses
pemetaan berdasarkan sebuah decision
parameter p
15
Bresenham’s Algorithm
P0 = 2∆ y − ∆ x
Plot (Xo,Yo)
Repeat
If Pk<0 then
Plot (Xk+1,Yk)
Pk + 1 = Pk + 2∆ y
Otherwise
Plot (Xk+1,Yk+1)
Pk + 1 = Pk + 2∆ y − 2∆ x
Until X=end
16
Bresenham’s Algorithm
Contoh : Line
(20,10,30,18)
∆X = 10, ∆Y = 8
Po = 2∆Y - ∆X = 6
2.∆Y = 16
2∆Y - 2∆X = -4
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)
17
Bresenham’s Algorithm
Ilustrasi penentuan parameter
Kita hitung jarak (d) antar titik y rumus
dengan y yang mungkin:
y= m ( Xk+1) + c
2
Area Filling
Dalam grafis, selain digunakan
primtif-primitif grafis, diperlukan
algoritma khusus untuk mengisi
warna. Untuk pengisian warna pada
grafik diterapkan pada objek yang
memiliki hole.
Contoh :
3
Area Filling
Beberapa algortima yang dapat
digunakan untuk melakukan area filling,
yaitu :
Scan Line
Boundary Fill Algorithm
Flood Fill Algorithm
4
Scan Line Fill Algorithm
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.
5
Scan Line Fill Algorithm
Ilustrasi Proses Scan Line
Ada masalah ??
6
Boundary Fill
Dengan teknik ini pengisian warna
dilakukan berdasarkan penentuan titik
awal.
Posisi awal diletakkan pada area filling.
Kemudian semua titik tetangga diuji
terhadap batas area
Ada 2 metoda untuk mencari titik tetangga
:
4 Connected
8 Connected
7
Boundary Fill
4 Connected
1
4 X 2
8 Connected
1 2 3
8 X 4
7 6 5
8
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;
9
Algoritma 8-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-1,fillcol,boundcol);
Bfill(x,y-1,fillcol,boundcol);
Bfill(x+1,y-1,fillcol,boundcol);
Bfill(x-1,y-1,fillcol,boundcol);
Bfill(x+1,y-1,fillcol,boundcol);
Bfill(x-1,y+1,fillcol,boundcol);
Bfill(x,y+1,fillcol,boundcol);
Bfill(x+1,y+1,fillcol,boundcol);
End;
End;
10
Boundary Fill
1
7 8 9 . . . .
4 X 2
6
5
3
4
2
BFill (x,y,Red,Black);
1
11
Boundary Fill
Bila Area Fill menjadi atribut dari
objek maka warna batas dari proses
ini akan sama dengan warna batas
objek.
Ingat bahwa boundry objek tidak
boleh ada lubang
12
Flood Fill Algorithm
Proses flood fill mirip dengan
boundary fill, dimana inti dari proses
ini adalah mengubah suatu warna
menjadi warna yang lain
13
Flood Fill Algorithm
Procedure floodFill (x,y,fillColor,oldColor);
Begin
If getpixel(x,y)= oldColor then
Begin
Putpixel (x,y,fillColor);
floodFill (x+1,y,fillColor,oldColor);
floodFill (x-1,y,fillColor,oldColor);
floodFill (x,y+1,fillColor,oldColor);
floodFill (x,y-1,fillColor,oldColor);
End;
End;
14
Apa perbedaan dari Boundary Fill dan Flood
fill, kapan kita memakai Flood fill dan
kapan kita memakai Boundary Fill
Untuk menjamin keamanan dari algoritma
fill yang digunakan maka sebainya
ditambahkan sebuah parameter
penghentian yang lain, yaitu posisi dari
pixel yang diproses apakah masih didalam
objek atau sudah diluar
Ingat bahwa area fill dan garis batas
merupakan 2 buah atribut yang berbeda
15
16
Pengertian
‘Transformasi’ geometric
transformation
Transformasi = mengubah deskripsi
koordinat dari objek
Transformasi dasar:
Translasi
Rotasi
Penskalaan
Translasi
Mengubah posisi objek: perpindahan lurus
Menambahkan translation distance tx & ty
ke tiap titik dari objek
(x,y) ––translasi (x’,y’)
x’=x+tx
y’=y+ty
Pasangan (tx,ty) disebut
dengan translation vector
Contoh translasi
Rotasi
x’ = r cos (φ+θ)
= r cos φ cos θ - r sin φ
sin θ
r
= x cos θ - y sin θ
y’ = r sin (φ+θ)
= r cos φ sin θ + r sin φ
cos θ
= x sin θ + y cos θ
Rotasi terhadap titik (xr,yr)
yr
2. Rotasi sebesar θ
3. Translasi tx= xr & ty= yr
Rigid-body transformation
Transformasi yang hanya mengubah
posisi objek, tanpa mengubah
bentuknya
Setiap titik pada objek mendapat
perlakuan yang sama
Transformasi dasar:
Translasi
Rotasi
Rigid-body transformation: teknik
Transformasikan hanya titik-titik yang
terlibat dalam deskripsi objek
Titik-titik lain digambar ulang dgn
algoritma pembangkit primitif grafika
Rigid-body transformation:
translasi
Rigid-body transformation: rotasi
Penskalaan
Uniform: sx = sy
Differential: sx ≠ sy
x x
Penskalaan terhadap titik (0,0)
x’=x.sx
y’=y.sy
y
Bentuk objek berubah
Posisi objek berubah
x
Penskalaan terhadap titik (xf,yf)
x’= xf + (x-xf).sx
y’= yf + (y-yf).sy
y
x’= x. sx + xf(1-sx)
(xf,yf)
y’= y. sy + yf(1-sy)
xf(1-sx) & yf(1-sy) x
konstan untuk semua (x,y)
Penskalaan uniform untuk poligon,
lingkaran dan elips
Poligon:
Transformasikan titik-titik sudut
Gambar ulang tiap garis
Lingkaran:
Transformasikan titik pusat
Sesuaikan ukuran jari-jari
Gambar ulang tiap titik
Elips:
Transformasikan sumbu mayor dan minor
Gambar ulang tiap titik
Representasi dalam matriks
Memudahkan perhitungan transformasi
Setiap titik direpresentasikan sebagai
vektor kolom
P=(x,y) P= x
y
Koefisien transformasi direpresentasikan
sebagai vektor atau matriks
Persamaan matriks translasi
Translation distance tx & ty T= t x
P’ = P + T t y
xx'' x tx
y' = y + t (-4,4)
y
3
− 4 2 − 5 -6
4 = 1 + 3
(2,1)
Persamaan matriks rotasi:
pivot = (0,0)
x’ = x cos θ - y sin θ y
y’ = x sin θ + y cos θ (2,7)
(7,-2)
Persamaan matriks rotasi:
pivot = (xr,yr)
x’= xf + (x-xf).sx
y’= yf + (y-yf).sy
x' x f S x 0 x x f
y ' = y + 0 • −
S y y y f
f
Transformasi Komposit
Dari beberapa penjelasan sebelumnya
dinyatakan bahwa suatu transformasi dapat
disusun menjadi urutan dari beberapa
transformasi
Contoh: Rotasi dengan sumbu rotasi (xc,yc)
Bila kita melakukan representasi
transformasi sebagai sebuah matrik, maka
kita perlu menghasilkan matrik homogen
=> sehingga proses transformasi dapat
dihitung sebagai proses perkalian matrik
Matrik Homogen 2D
Dinyatakan bahwa proses
transformasi adalah perkalian matrik
sehingga untuk operasi translasi bila
dinyatakan dalam matrik homogen
menjadi:
X’ 1 0 tx X
Y’ = 0 1 ty Y
1 0 0 1 1
Matrik Homogen 2D
Sedangkan untuk penskalaan dengan
titik acuan (0,0)
X’ Sx 0 0 X
Y’ = 0 Sy 0 Y
1 0 0 1 1
Exterior Clipping
Clipping Window / Viewport
Fungsi clipping window :
Mengidentifikasi obyek yang akan di clip
dan memastikan bahwa data yang di
ambil hanya yang terletak di dalam
clipping window.
Bentuk Clipping Window :
Segi empat, segi tiga
Lingkaran atau elips
Poligon dan lain-lain.
Digital Differential Analyzer (DDA)
ClippingTitik
P1
Y1
Terdapat 2 buah titik P1(x1,y1) dan P2
(x2,y2), dengan : P2
Y2
P1 terletak di dalam clipping window,
karena :
Xmin ≤ X1 ≤ Xmax Ymin
Ymin ≤ Y1 ≤ Ymax
Xmin X1 Xmax X2
P2 terletak di luar clipping window,
karena :
X2 ≥ Xmax
walaupun
Ymin ≤ Y2≤ Ymax ,,dan
X2 ≥ Xmin
Clipping Garis
Clipping sebuah garis P1-P2 dengan
window L,R,T,B akan berhubungan
dg.garis yang terletak di dalam
window dan garis di luar window.
Dalam hal ini garis yang ingin kita
tampilkan hanya garis yang terdapat
di dalam window (visible)
Sedangkan garis di luar window
akan di buat tidak tampak (invisible)
Setelah garis di clipping, data garis
P1 dan P2 tidak boleh hilang. Dalam
hal ini harus dibuatkan satu copy
garis P1’ dan P2’ yang terletak di
dalam jendela. Copy garis inilah
yang ditampilkan pada layar
Algoritma Clipping Garis
1.Baca data garis
2.Baca data clipping window
3.Cek kondisi garis terhadap clipping
window
4.Proses Clipping
Clipping Garis
Kondisi garis terhadap clipping
window dapat :
Invisible (1)
Tidak kelihatan, terletak di luar
clipping window
Visible (2)
Terletak di dalam clipping window
Halfpartial (3)
Terpotong sebagian oleh clipping
window
Vollpartial (4)
Terpotong penuh oleh clipping
window, garis melintasi clipping
window
Clipping Garis
Untuk kondisi garis yang invisible dan
visible tidak perlu dilakukan aksi
clipping,dimana untuk :
Invisible, tidak perlu ditampilkan
Visible, langsung di tampilkan
Struktur data clipping window
struct point {
double x;
double y;
}
struct line {
struct point p1;
struct point p2;
}
struct clipwindow {
double l; //batas kiri window, sumbu x
double r; //batas kanan window, sumbu x
double t; //batas atas window, sumbu y
double b; //batas bawah window, sumbu y
}
Pointcode
Hubungan antara sebuah garis dengan clipping window
dapat di tulis seperti hubungan antara titik awal dan titik
akhir sebuah garis dengan clipping window
Untuk menentukan relasi tersebut diperlukan suatu struktur
data pembantu yang disebut POINTCODE.
struct pointcode{
int l;
int r;
int t;
int b
}
Y
Visibilitas suatu Garis
Visibilitas suatu garis tergantung dari pointcode pada kedua titik yang
membentuk garis tersebut, yaitu P1 dan P2
Jika P1 dan P2 di dalam window garis Visible
Jika salah satu dari P1 atau P2 di luar window garis halfpartial
Jika P1 dan P2 di luar window garis invisible atau vollpartial
P1
90
P2
40
-100
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Midpoint Subdivision
Garis dibagi 2 :
X1 Y1 X2 Y2 xM yM Garis Midpoint
-140 90 160 40 10 65 P1-P2 M
Setengah Garis Pertama
X1 Y1 X2 Y2 xM yM Garis Midpoint
-140 90 10 65 -65 78 P1-M M11
-140 90 -65 78 -103 84 P1-M11 M12
-103 84 -65 78 -84 81 M12-M11 M13
-103 84 -84 81 -94 83 M12-M13 M14
-103 84 -94 83 -99 84 M12-M14 M15
-103 84 -99 84 -101 84 M12-M15 M16
-101 84 -99 84 -100 84 M16-M15 D1
Titik Singgung pertama ditemukan pada titik D1 (-100,84)
P2
M P2
P1 P2
M
M
P1
P1
M
P1
Ilustrasi Pembuatan Kurva Bezier
en.wikipedia.org/wiki/Bézier_curve
Linear Bézier curves
• Given points P0 and P1, a linear Bézier curve is
simply a straight line between those two
points. The curve is given by
• and is equivalent to linear interpolation.
Ilustrasi: kurva linier
• The t in the function for
a linear Bézier curve can
be thought of as
describing how far B(t) is
from P0 to P1.
• For example
when t=0.25, B(t) is one
quarter of the way from
point P0 to P1.
• As t varies from 0 to
1, B(t) describes a curved
line from P0 to P1.
Quadratic Bézier curves
• A quadratic Bézier curve is the path traced by
the function B(t), given points P0, P1, and P2,
• A quadratic Bézier curve is also a parabolic
segment.
Ilustrasi: kurva kuadratik
• For quadratic Bézier curves
one can construct
intermediate
points Q0 and Q1 such that
as t varies from 0 to 1:
• Point Q0 varies
from P0 to P1 and describes a
linear Bézier curve.
• Point Q1 varies
from P1 to P2 and describes a
linear Bézier curve.
• Point B(t) varies
from Q0 to Q1 and describes
a quadratic Bézier curve.
Cubic Bézier curves
• Four points P0, P1, P2 and P3 in the plane or in
three‐dimensional space define a cubic Bézier
curve.
• The curve starts at P0 going toward P1 and arrives
at P3 coming from the direction of P2. Usually, it
will not pass through P1 or P2; these points are
only there to provide directional information. The
distance between P0 and P1 determines "how
long" the curve moves into direction P2 before
turning towards P3.
• The parametric form of the curve is:
Ilustrasi : Kurva Cubic
• For higher‐order
curves one needs
correspondingly more
intermediate points.
For cubic curves one
can construct
intermediate
points Q0,Q1 & Q2 that
describe linear Bézier
curves, and
points R0 & R1 that
describe quadratic
Bézier curves
Ilustrasi: Fourth‐order curve
• For fourth‐order curves
one can construct
intermediate
points Q0, Q1, Q2 & Q3 th
at describe linear Bézier
curves,
points R0, R1 & R2that
describe quadratic
Bézier curves, and
points S0 & S1 that
describe cubic Bézier
curves
The Math Behind the Bezier
Curve
www.moshplant.com/direct‐or/bezier/math.html
• A cubic Bezier curve is defined by four points.
• Two are endpoints.
– (x0,y0) is the origin endpoint.
– (x3,y3) is the destination endpoint.
• The points (x1,y1) and (x2,y2) are control points.
• Two equations define the points on the curve.
Both are evaluated for an arbitrary number of
values of t between 0 and 1.
• As increasing values for t are supplied to the
equations, the point defined by x(t),y(t) moves
from the origin to the destination.
• This is how the equations are defined in
Adobe's PostScript references.
cx = 3 (x1 ‐ x0)
bx = 3 (x2 ‐ x1) ‐ cx
ax = x3 ‐ x0 ‐ cx ‐ bx
cy = 3 (y1 ‐ y0)
by = 3 (y2 ‐ y1) ‐ cy
ay = y3 ‐ y0 ‐ cy ‐ by
Pendahuluan
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.
Grafika 3D memiliki kemampuan untuk membuat visualisasi
dari sebuah benda yang nyata yang dapat dilihat dari
berbagai sudut pandang. Hal inilah yang membuat grafika 3D
banyak dipakai terutama dalam bidang desain dari sebuah
produk.
Sistem Koordinat 3D
+y +y
+z
+x +x
+z
Right-handed Left-handed
Primitif 3D
Dalam dunia 3D terdapat beberapa primitif seperti :
Titik (point)
Garis (line)
Bidang/Permukaan (plane/surface)
Bola (sphere)
Kubus(cube)
Silinder (cylinder)
Kerucut (cone)
Cincin (torus)
dll
Primitif 3D
Titik
Posisi sebuah titik dalam grafika 3D diekspresikan dengan
(x,y,z)
Garis
Sebuah garis dibentuk dengan mendeskripsikan dua buah titik,
yaitu (x1,y1,z1) dan (x2,y2,z2) yang sebagai ujung dari
sebuah garis.
Sebuah garis dalam grafika 3D dapat diekspresikan dengan
sepasang persamaan, yaitu :
y − y1 y 2 − y1
=
x − x1 x 2 − x1
z − z1 z 2 − z1
=
x − x1 x 2 − x1
Primitif 3D
Bidang
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
Representasi Object 3D
Untuk merepresentasikan object 3D :
Persamaan Geometri
Constructive Solid Geometry (CSG)
Kurva & Permukaan Bezier
Lathe Object
Fractal
Representasi Object 3D
Dengan Persamaan Geometri
Suatu object 3D dapat direpresentasikan
langsung dengan menggunakan persamaan
geometri dari object tersebut.
Misalkan : untuk membangun sebuah bola,
maka bisa dengan menggunakan rumus :
X 2 + Y 2 + Z 2 = R2
atau dengan rumus :
Representasi Object 3D
z
θ y
x = r.sinΦ.sinθ ;0 ≤ Φ ≤ 2π
y = r.sinΦ.cosθ ;- π ≤ θ ≤ π
z = r.cosΦ
Representasi Object 3D
Dengan Constructive Solid Geometry (CSG)
CSG adalah suatu cara membentuk object
dengan jalan menggabungkan atau
memotong(mengurangi) dari beberapa object
primitif 3D.
CSG dalam POV-Ray melibatkan :
difference
union
intersect
Representasi Object 3D
Bezier Spline
Representasi Object 3D
Dengan Fractal
Rendering
Wireframe rendering
Yaitu 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 depan dan
sisi belakang dari sebuah objek.
Rendering
Shaded Rendering
Pada metode ini, komputer diharuskan
untuk melakukan berbagai perhitungan baik
pencahayaan, karakteristik permukaan,
shadow casting, dll.
+ + Karakteristik Algoritma
Geometri Kamera Cahaya + + Rendering
Permukaan
Citra Rendering
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.
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.
• Dapat digunakan untuk out- • Dapat digunakan untuk out- • Biasanya digunakan untuk
door dan in-door scene door dan in-door scene in-door scene
P’ = T . P
(tx, ty, tz) = transformation distance
Koordinat ‘tangan kanan’
Translasi: operasi matriks pada
koordinat homogen
x’ = x + tx; y’ = y + ty; z’ = z + tz
x' 1 0 0 t x x
y' 0
1 0 t y y
= •
z' 0 0 1 tz z
1 0 0 0 1 1
Penskalaan
P’ = S . P
(sx, sy, sz) = scaling factor
Mengubah lokasi dan ukuran objek
Penskalaan: operasi matriks pada
koordinat homogen
x’ = x . sx; y’ = y . sy; z’ = z . Sz
Relatif terhadap pusat koordinat (0,0,0)
x' sx 0 0 0 x
y' 0 s 0
0 y
= y
•
z' 0 0 sz 0 z
1 0 0 0 1 1
Penskalaan: titik acuan sembarang
(xf,yf,zf)
sx 0 0 (1 − s x ) x f
0 sy 0 (1 − s y ) y f
=
0 0 sz (1 − s z ) z f
0 0 0 1
Rotasi
Perlu dispesifikasikan:
Besar sudut rotasi (θ)
Sumbu rotasi
2D: titik (xr,yr) analog dgn 3D:
selalu terhadap garis sejajar sumbu
z
3D: garis (yang manapun dalam
ruang 3D)
Rotasi yang paling mudah sumbu
rotasi berhimpit dgn salah satu sumbu
koordinat
Konvensi tentang θ
(+) berlawanan arah jarum jam; (-)
searah jarum jam
Dilihat dari ujung positif sumbu rotasi ke
(0,0,0)
Rotasi dgn sumbu rotasi = sumbu
koordinat
Rotasi terhadap sumbu z:
x’ = x cos θ - y sin θ
y’ = x sin θ + y cos θ
z’ = z
x' cosθ − sinθ 0 0 x
y' sinθ cosθ 0 0 y P’=Rz(θ).P
= •
z' 0 0 1 0 z
1 0 0 0 1 1
Urutan transformasi:
Translasi, sampai sumbu rotasi memotong
salah satu sumbu koordinat
Rotasi, sampai sumbu rotasi berhimpit
dengan salah satu sumbu koordinat
Rotasi terhadap sumbu koordinat tersebut
Rotasi balik, hingga sumbu rotasi kembali
ke kemiringan semula
Translasi balik, hingga sumbu rotasi
kembali ke posisi semula
Transformasi komposit
Transformasi komposit pada 3D
analog dengan transformasi komposit
pada 2D
Dilakukan dengan cara mengalikan
sejumlah matriks transformasi [4x4]
sesuai urutan kemunculannya
Refleksi
Terhadap garis sumbu refleksi
Rotasi 1800 terhadap garis tersebut
Terhadap bidang refleksi
Bidang koordinat (xy, yz, atau xz) ≈
konversi dari sistem koordinat tangan
kanan ke tangan kiri atau sebaliknya
Bidang sebarang ≈ rotasi 1800 terhadap
bidang tersebut dalam ruang empat
dimensi
Refleksi terhadap bidang koordinat
1 0 0 0
0 1 0 0
RFz =
0 0 − 1 0
0 0 0 1
Shear
(xp,yp,zvp)
P=(x,y,z)
zvp zprp zv
viewplane
x h 1 0 0 0 x
y 0 1 0 0
h = • y
z h 0 0 zvp / d p − zvp ( z prp / d p ) z
h 0 0 1/ d p − z prp / d p 1
z − z prp
d p = z prp − zvp ; h=
dp
x p = xh / h; y p = yh / h
Perspektif vs paralel
(ortografik)
Proyeksi fisheye
3D Clipping
Mengidentifikasi dan
mempertahankan semua segmen
permukaan yang berada di dalam
view volume
Pengembangan dari clipping pada 2D
Objek di-clip terhadap bidang batas view
volume (pada 2D: clip terhadap garis
batas window)
Teknik 3D Clipping
Langsung menggunakan bidang batas
view volume
Menggunakan view volume yang
dinormalkan
Memanfaatkan koordinat homogen
[mungkin ada lagi teknik lain]
Clipping menggunakan view
volume secara langsung
Uji posisi relatif titik terhadap bidang
batas view volume
Untuk setiap P = (x,y,z):
Ax + By + Cz + D > 0 P di luar bidang
Ax + By + Cz + D < 0 P di dalam
bidang
Ax + By + Cz + D = 0 P pada bidang
Clipping pada koordinat homogen
xh a b c d x
y e f g h y
y Tampak
h = • samping view
zh i j k l z yvmax volume
h m n o p 1
yvmin
z
P (xh,yh,zh) di dalam zvmin zvmax
object {
sphere {
<0,0,0>, 1
pigment {Brown}
}
clipped_by {
box {
<-0.5,-0.5,-1.5>,
<0.5,0.5,1.5>
}
}
}
3D Photorealism
Ketepatan pemodelan objek
Proyeksi secara perspektif
Efek pencahayaan yang natural kepada
permukaan tampak: pantulan, transparansi,
tekstur, dan bayangan
Illumination model vs
surface rendering
Model pencahayaan: model untuk
menghitung intensitas cahaya pada
satu titik pada suatu permukaan
Rendering permukaan: prosedur yang
menerapkan model pencahayaan
untuk mendapatkan intensitas semua
titik pada seluruh permukaan tampak
Model Pencahayaan
Ada 3 Jenis Warna yang
mempengaruhi pewarnaan dalam
proses rendering :
Ambient
Diffuse
Specular
Model Pencahayaan L = ( Lx Ly Lz )
(X L − X P)
Lx =
N |L|
(Y − Y )
Ly = L P
L |L|
cos φ = N.L (Z − Z P )
Lz = L
|L|
Ф
P
Ia = (Wa + Wd ).Ka
dist. cos φ
Id = Wd .Kd .
dist
dist.(cos φ ) Ks
Is = Ws.
dist
I total = Ia + Id + Is
Teknik Rendering Permukaan
∑N k
Nv = k =1
n
∑N
k =1
k
x5 − xP x P − x4
IP = I4 + I5
x5 − x4 x5 − x4
Interpolasi secara inkremental
y − y2 y1 − y
I= I1 + I2
y1 − y2 y1 − y2
I 2 − I1
I'= I +
y1 − y2
Gouraud shading: contoh
Kekurangan Gouraud
y − y2 y1 − y
N= N1 + N2
y1 − y2 y1 − y2
If NearestObject is NULL {
Fill this pixel with background color
} Else {
Shoot a ray to each light source to check if in shadow
If surface is reflective, generate reflection ray: recurse
If transparent, generate refraction ray: recurse
Use NearestObject and NearestT to compute shading function
Fill this pixel with color result of shading function
}
}
Rekursif pada ray-tracing
R3
T3
S4 R2
S3 T1
R1
S2
S1
Projection
reference
point
Binary Ray-Tracing tree
(cont’d)
Ambient= ka Ia
Diffuse= kd (N.L)
Specular= ks (H.N) ns
R = u − (2u.N)N
ηi η
T T= u − (cos θ r − i cos θ i ) N
θr ηr ηr
N
θi
2
u ηi
Incoming cos θ r = 1 − (1 − cos 2 θ i )
ray ηr
Contoh Ray-Tracing
Radiosity
Memodelkan pantulan difusi dengan lebih
akurat
Mempertimbangkan transfer energi radian
antar permukaan (sesuai dengan hukum
kekekalan energi)
Tingkat kecerahan (brightness) dan warna
dari segala sesuatu tergantung dari segala
sesuatu yang lain
Lebih realistik
Efek visual radiosity
Bi = Ei + Ri ∫ Bj Fij
j
Untuk lingkungan diskrit:
n
Bi = Ei + Ri ∑ B j Fij
j =1
Teori dasar radiosity (cont’d)
Tiap permukaan saling mempengaruhi,
sehingga perlu menyelesaikan n persamaan
secara simultan:
Aj
Fij =energi dari permukaan Ai yang sampai ke Aj
dAj
energi dari permukaan Ai yang menyebar ke
semua arah dalam ruang hemisphere yang
melingkupi Ai
θj
Nj 1 cos θ i cos θ j
r Fij =
Ai ∫∫ πr 2
dA j dAi
Ni Ai A j
θi
Ai
dAi
Asumsi dlm perhitungan form
factor
Berlaku hukum kekekalan n
energi
∑F
j =1
ij =1
Surface
Projection
parametrization
Forward mapping
Forward mapping (cont’d)
Inverse mapping
Inverse mapping (cont’d)
x' a b c u '
y ' = d e f v'
w g h i q
( x, y ) = ( x' / w, y ' / w); (u, v) = (u ' / q, v' / q)
The inverse transform
u ' A B C x'
v' = D E F y '
q G H I w
u ' ei − fh ch − bi bf − ce x'
v' = fg − di ai − cg cd − af y '
q dh − eg bg − ah ae − bd w
Permukaan: a = θ, b = z; 0 ≤ θ ≤ π/2, 0 ≤ z ≤ 1
xi = r cos a; yi = r sin a; zi = b
a = uπ/2, b = v
Inverse:
a = tan-1 (yi/xi), b = zi
u = 2a/π, v = b
O mapping
T’(xi,yi,zi) O(xw,yw,zw)
Lebih mudah: sudut pandang ray tracing
Empat kemungkinan:
1. Perpotongan pantulan view ray dengan
permukaan antara
2. Perpotongan vektor normal dari permukaan pada
(xw,yw,zw) dengan permukaan antara
3. Perpotongan garis yang menghubungkan pusat
objek dan (xw,yw,zw) dengan permukaan antara
4. Perpotongan antara garis yang menghubungkan
(xw,yw,zw) dengan (xi,yi,zi), yang orientasinya
sama dengan vektor normal pada (xi,yi,zi)
4 kemungkinan O mapping
Environment mapping
Cara cepat untuk me-render objek
mengkilap yang memantulkan cahaya dari
sekelilingnya
Batasan environment mapping:
Benar secara geometris jika objek relatif kecil
dibanding lingkungannya
Objek hanya dapat memantulkan cahaya dari
lingkungannya tidak untuk objek concave
Setiap objek dalam scene membutuhkan
environment map yang berbeda
Kadang diperlukan environment map yang baru
jika sudut pandang berubah
Cubic mapping
Environment diwakili oleh 6 sisi kubus
Titik pandang berada di pusat objek
Contoh cubic mapping
Bandingkan dengan
hasil Ray Tracing
Cubic mapping dengan real images
Environment map
Hasil mapping
Bump mapping
Permukaan tampak berkerut tanpa
harus memodelkannya secara
geometris
Vektor normal dari permukaan
dimodifikasi secara angular
mempengaruhi model pantulan
cahaya
Kekurangan: garis siluet tetap
mengikuti bentuk asli objek
Ilustrasi prosedur bump mapping
P(u):
Original P’(u):
surface Modifying P(u)
with B(u)
B(u):
N’(u): The
Bump map
vectors to the
new ‘surface’
Interpretasi geometris bump mapping
Contoh bump mapping
Contoh bump mapping (cont’d)
Bump map
Bump map Texture map
Anti-aliasing
‘Alias’: gejala pada image (paling
terlihat pada texture map) dimana
perulangan tekstur mencapai dimensi
pixel
Under-sampling: menghitung satu
warna untuk tiap pixel
Anti-aliasing: mengurangi efek alias
Contoh alias & antialiasing
Zoom a) Zoom c)
Prinsip pendekatan anti-aliasing
Image ideal memiliki detil yang tak
berhingga direpresentasikan dengan
fungsi f(x,y) dimana x dan y adalah bilangan
real yang mendefinisikan koordinat.
Untuk dapat menampilkan image f(x,y)
dengan keterbatasan perangkat display,
harus disederhanakan
Cara paling sederhana: pencuplikan image pada
f(i,j) untuk tiap pixel (i,j) Moiré effect
Cara yang lebih baik: untuk tiap pixel (i,j),
gunakan intensitas rata-rata dari area pada
permukaan dalam scene yang memuat f(i,j)
Cara-cara lain yang lebih kompleks
Anti-aliasing options
Pre-filtering – ‘infinite’ samples per
pixel
No filtering – one sample per pixel
Post-filtering – n uniform samples per
pixel
Post-filtering – stochastic samples
Post-filtering: supersampling
Pixels
Super pixels
Si + k Sj + k
I ' (i, j ) = ∑ ∑ I ( p, q)h(Si − p, Sj − q)
p = Si − k q = Sj − k
S: faktor skala; h: filter; k: dimensi filter
Contoh filter (h)
Bartlett window (3 diantaranya)
Tanpa anti-aliasing