lighting shading
DESCRIPTION
What’s Lighting & Shading Lighting ProcessExample Lit & UnLitLighting Factors & DirectionMath of Lighting Linghting FunctionsNormal VectorShading EffectDemos ProgramTRANSCRIPT
10 | Lighting & ShadingImam Cholissodin| [email protected]
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
rα
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| [email protected]