lighting shading

Post on 24-Oct-2015

110 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

What’s Lighting & Shading Lighting ProcessExample Lit & UnLitLighting Factors & DirectionMath of Lighting Linghting FunctionsNormal VectorShading EffectDemos Program

TRANSCRIPT

10 | Lighting & ShadingImam Cholissodin| imam.cholissodin@gmail.com

Lighting & Shading :

1. What’s Lighting & Shading 2. Lighting Process3. Example Lit & UnLit4. Lighting Factors & Direction5. Math of Lighting 6. Linghting Functions7. Normal Vector8. Shading Effect9. Demos Program

What’s Lighting & Shading

• Lighting : Teknik yang dapat diterapkan pada proses rendering untuk menjadikan sebuah objek menjadi terlihat berbeda. Sehingga ketika objek tersebut dikenai cahaya, maka akan terjadi beberapa hal berikut :– Pemantulan cahaya– Pembiasan dan Penyerapan cahaya– Pembentukan bayangan (Shade)

• Shading : Efek bayangan yang terbentuk ketika suatu objek diberikan pencahayaan.

Lighting Process

• Proses pencahayaan objek terhadap persepsi warna pada mata kita.

• Sumber cahaya : lampu neon, cahaya lilin, lampu pijar, sinar matahari, etc.

IluminasiPantulan

PersepsiWarna

Example Lit & UnLit

• Pada kenyataannya, sebagian besar objek bahkan tiga dimensi, tidak akan terlihat sampai mereka mendapatkan pencahayaan.

Dengan Pencahayaan Tanpa Pencahayaan

Lighting Factors & Direction

• Dalam proses rendering, lighting dipengaruhi oleh faktor-faktor berikut :– Jarak objek dengan sumber cahaya– Posisi objek– Bentuk permukaan objek

• Beberapa arah pantulan cahaya terhadap objek :– Specular– Diffuse– Translucent

• Visualisasi arah pantulan cahaya terhadap objek :

• Visualisasi secara umum :

Lighting Direction

DiffuseSpecular Translucent

vsn

• n adalah vektor normal ke permukaan pada titik P.

• s adalah vektor dari titik P ke cahaya.

• v adalah vektor dari titik P ke viewer.P

• Specular :– Objek tidak menyebarkan cahaya secara seragam.– Digunakan Model Phong (1975), untuk menghitung

memudarnya kuat cahaya.– Isp = Isps(cos α)f dimana ps (Koefisien Pantulan), f adalah

koefisien yang ditentukan secara trial & error.– Vektor r dihitung dengan mendekati vektor halfway, yaitu

vektor yang terletak ditengah vektor s dan v. Sehingga

Math of Lighting Direction

vsn

• Diffuse :– Objek menyebarkan cahaya secara seragam ke segala arah.– Hubungan antara kecerahan permukaan dan orientasi cahaya

didasarkan pada Hukum Lambert, sehingga Idf = Idpdmax(cos α , 0).

Math of Lighting Direction

ns

ns

ns

ns arccos maka ,cos

sn

α = 0o

sn

α

s

n

α= 90o

• Translucent :– Benda yang permukaannya mempunyai sifat Translucent,

akan meneruskan cahaya yang datang dan memantulkan cahaya tersebut.

– Sifat Translucent hanya dapat diperoleh melalui metode pencahayaan global sehingga tidak dibicarakan lebih lanjut.

Math of Lighting Direction

s

• Ambient Light (Cahaya Lingkungan)– Cahaya jatuh ke objek dari berbagai sudut pantul dari

objek lain dan lingkungan.– Cahaya ambient tidak mempunyai titik asal khusus.– Koefisien cahaya ambient (pa) digunakan untuk masing-

masing permukaan.– Iab = Iapa

• Kombinasi Intensitas Sumber Cahaya :– I = Iapa + Idpdmax(cos α , 0) + Isps(cos α)f

Math of Lighting Source

• Kombinasi Intensitas Sumber Cahaya :– I = Iapa + Ispsmax(cos α , 0) + Isps(cos α)f

• Warna-warna dapat diperoleh dari perhitungan dari kombinasi warna dasar RGB.

• Intensitas pantulan dapat dihitung dengan menghitung intensitas untuk red, green dan blue dan menambahkannya.– Ir = Iarpar + Idrpdrmax(cos α , 0) + Isrpsr(cos α)f

– Ig= Iagpag + Idgpdgmax(cos α , 0) + Isgpsg(cos α)f

– Ib= Iabpab + Idbpdbmax(cos α , 0) + Isbpsb(cos α)f

Math of Lighting Source

• glMaterialfv(face, type, vektor)Digunakan untuk menentukan sifat-sifat permukaan benda.– face : GL_FRONT, GL_BACK, GL_FRONT_AND_BACK– Type : GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR– Vector : berisi array

• glLightfv(light, type, vector)Digunakan untuk mengatur karakteristik dari cahaya– Light : GL_LIGHTn, dengan n = 0,1,…,7– Type : GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR,

GL_POSITION, GL_SPOT_DIRECTION– Vector : berisi array

Linghting Functions

• Menghitung Vektor normal dari 3 buah vertex

• Perintah untuk mendefinisikan vektor normal :– glNormal3f(0.0,1.0,0.0)– glVertex3f(2.0,4.0,4.0)

Normal Vector

a

b

|axb|=|a||b|sin Өa x b

)()(

)()(

)()(

b x a

yxyx

zxzx

zyzy

zyx

zyx

abba

baab

abba

bbb

aaa

kji

• Menghitung Vektor normal dari polygon k buah vertex dengan metode Newell.

• Apabila Pj(xj,yj,zj), jika i = 1 maka j=1, selain itu j = i+1. Sehingga menyatakan vertex berikutnya dari Pi. Maka vektor normal dari polygon k vertex dapat diperoleh dari persamaan berikut :

Normal Vector

ji

k

ijix zzyyn

1

ji

k

ijiy xxzzn

1

ji

k

ijiz yyxxn

1

n v1

v2

v3v4

v5

v6

Shading Effect

• Ada dua cara untuk mengimplementasi bayangan :– Bayangan rata (flat) : Teknik yang mengasumsikan bahwa

permukaan objek adalah rata dan setiap titik pada permukaan objek mempunyai jarak yang sama terhadap sumber cahaya.

– Bayangan halus (smooth) : Teknik ini mengijinkan pemrogram untuk membuat perubahan setahap demi setahap dalam pemberian bayangan sebuah permukaan. Misalkan memberikan bayangan pada satu muka lebih pudar dibandingkan dengan muka yang lain.

• Fungsi aktifasi Shading pada OpenGL :– glShadeModel(GL_FLAT) : untuk mode bayangan rata.– glShadeModel(GL_SMOOTH) : untuk mode bayangan halus.

Flat Shading

• glShadeModel(GL_FLAT) : untuk mode bayangan rata.– Hanya menggunakan satu titik (biasanya yang pertama)

normal dan properti material untuk menghitung warna untuk polygon.

– Menghitung pencahayaan sekaligus memberikan warna ke seluruh polygon.

Flat Shading

• glShadeModel(GL_FLAT) : untuk mode bayangan rata.– Keuntungan : Komputasinya cepat– Sebaiknya digunakan pada konsidi berikut :

• The polygon is small enough • The light source is far away• The eye is very far away

Smooth Shading

• glShadeModel(GL_SMOOTH) : untuk mode bayangan halus.– Mengurangi mach band effect untuk menghapus

diskontinuitas nilai– Menghitung pencahayaan untuk poin yang lebih banyak

pada masing-masing permukaan

Flat shading Smooth shading

Mach band effect

Smooth Shading

• Ada metode yang sangat populer :– Gouraud shading (standard specular highlight)– Phong shading (better specular highlight)

Gouraud shading

• Algoritma smooth shading yang digunakan dalam OpenGL glShadeModel (GL_SMOOTH)– Pencahayaan dihitung dari masing-masing simpul polygon.– Tentukan satuan vektor normal rata-rata dari setiap titik

ujung polygon.– Warna diinterpolasi untuk piksel interior.

Gouraud shading

• Menghitung vektor normal global (n).

• Menghitung vertex illumination (color) untuk menentukan intensitas titik.

nn1 n2

n3 n4n = (n1 + n2 + n3 + n4) / 4.0

C1

C2 C3

Ca = lerp(C1, C2) Cb = lerp(C1, C3)

Lerp(Ca, Cb)

for all scanlines

* lerp: linear interpolation

Gouraud shading

• Linear interpolation

• Interpolasi warna segitigaGunakan jarak y untuk interpolasi titik akhir dua scanline, dan menggunakan jarak x untuk interpolasi warna pixel interior

a b

v1 v2x

x = a / (a+b) * v2 + b/(a+b) * v1

Phong Shading

• Menghasilkan detail cahaya yang lebih realistik dan sangat mengurangi mach band effect tetapi memerlukan perhitungan yang lebih banyak.

• Tentukan satuan vektor normal rata-rata pada setiap titik polygon.

• Normal interpolation :n1

n2

n3

nb = lerp(n1, n3)na = lerp(n1, n2)

lerp(na, nb)

Tugas Kelompok (bagian 2)

1. Tema : "Pencahayaan di Ruang Gelap“. Buatlah Ruangan atau panggung dengan lampu pijar atau lampu sorot minimal jumlahnya 2. Dan gelap terangnya dapat dikontrol dengan menggunakan minimal dua tombol tertentu.(Gunakan konsep : Blending, Transformasi, Camera/ Viewing, Texture Mapping, Lighting & Shading)

Note : (Buat Program dan Laporan Penjelasan Kode Program)

SelesaiImam Cholissodin| imam.cholissodin@gmail.com

top related