03 Projection C

Post on 02-Aug-2015

30 views 3 download

Transcript of 03 Projection C

Proyeksi (perhitungan matematikanya)

Menentukan Cara Pandang

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 1

• Penempatan view volume dengan– Position

– Look dan Up vector

• Bentuk view volume ditentukan oleh– View angles

– Far dan Near clipping planes

• Koordinat yang digunakan– World coordinates : x, y, z

– Camera coordinates : u, v, n

Dari Model ke Layar (1)

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 2

• Mendapatkan gambar 2D dari model 3D sulit• Tetapi bila view volumenya standar akan jadi mudah• View volume standar disebut sebagai canonical view

Dari Model ke Layar (2)

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 3

Jadi yang harus dilakukan adalah:

1. Transformasikan view volume sebarang kamera ke

canonical view volume normalizing view volume

2. Dari canonical view lakukan clipping dan proyeksi untuk mendapatkan gambar 2D

Sebarang view Canonical view

Normalizing View Volume

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 4

• Tujuannya mengubah sebarang view menjadi canonical view• Dapat dilakukan dengan transformasi• Pada parallel projection, transformasi yang dibutuhkan:

– translation

– rotation

– scaling

• Pada perspective projection, transformasi yang dibutuhkan:– translation

– rotation

– scaling

– perspective transformation

• Semua transformasi dapat digabung dalam matrix 4x4

Nomalizing Transformation Viewing Transformation

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 5

• Normalizing Transformation: mengubah sebarang view menjadi canonical view

• Viewing Transformation: inverse dari Normalizing Transformation

• Pertegas fokus kita!Kita kini berusaha menyusun

NORMALIZING TRANSFORMATION MATRIX

Mari Kita Mulai…

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 6

Bersiaplah menghitung matrix normalizing transformation dari parameter model kamera

Translation Matrix

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 7

• Pindahkan kamera ke titik pusat (0,0,0)

1000

100

010

001

)(x

y

x

Pos

Pos

Pos

PosT

p’=T(-Pos)p

Rotation Matrix (1)

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 8

• Kita ingin ‘memutar’ sumbu kamera (u,v,n) ke sumbu standar (x,y,z). Tapi itu sulit dilakukan!

• Jadi harus dibuat akal-akalan yang lebih mudah:– Buat matrix untuk ‘memutar’ sumbu standar (x,y,z) ke arah sumbu

kamera (u,v,n). Ini mudah dilakukan.

– Lalu gunakan matrix inversnya!

1000

0...

0...

0...

znzvzu

ynyvyu

xnxvxu

M

1000

0...

0...

0...

znynxn

zvyvxv

zuyuxu

M T

Ini matrixnya Ini inversnya

Invers matrix rotasi mudah dicari, yaitu

transpose-nya

Look

Up (v)

u

n

Rotation Matrix (2)

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 9

Mencari nMencari n mudah, karena n selalu berlawanan dengan vector Look

Rotation Matrix (3)

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 10

Mencari vIngat, v tidak selalu sejajar dengan Up

Rotation Matrix (4)

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 11

Mencari uKarena n dan v tegak lurus, maka u dapat dihitung dari cross-

productnya

Scaling Matrix Sxyz

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 12

• Scaling matrix digunakan agar view angle menjadi 900

Scaling Matrix S1/far

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 13

• Agar far clipping plane ada di z=-1

Perspective Matrix

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 14

• Untuk membuat fustum jadi kubus

=D =

Matrix Gabungan

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 15

• Matrix gabungan dari operasi-operasi tersebut adalah:

Digabung seperti biasa

kok!

ampun, nyerah deh

Clipping

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 16

• Menentukan mana yang digambar mana yang dibuang• x dan y harus di antara –1 dan +1• Z harus di antara 0 dan +1

Projection

Grafika Komputer © Sekolah Tinggi Teknik Surabaya, 2003 17

• Proyeksikan hasil akhir ke layar• Untuk parallel projection, tinggal menghilangkan komponen z• Untuk perspective projection:

x’ = x / zy’ = y / z

• Sesuaikan dengan resolusi layar, misal untuk layar 1024x1024 dengan titik (0,0) di kiri atas, maka:

xs = 512 (x+1)ys = 512 (-y+1)