Vertex Lighting and
Blending Colors
Level 5 GRAFIKA KOMPUTER DAN ANIMASI
2
Rendering Depth
Understanding the Problem at Hand
Z-Buffers
Including the Z-Buffer
The Finished Program
Simple Modeling
Building a Quad
Combining Quad to Make a Cube
More Shapes
The Finished Program
Rendering with Vertex Lighting
Light in Nature and Light in 3D
Vertex Normals
Creating Lights
The Finished Program
More on Lighting
The Scaling Problem
Point Lights
Spot Lights
The Finished Program
Blending Colors for Special Effects
Blend Operations
4
Kita telah berhasil membuat obyek-obyek 3D
sederhana tanpa menggunakan teknik pencahayaan.
Seluruhnya diberi cahaya yang sama.
Dengan teknik pencahayaan khusus, kita dapat
membuat model seperti di dunia nyata.
Light in Nature and Light in 3D
Vertex Normals
Creating Lights
Saat ini, teknik pencahayaan 3D masih belum benar-benar bisa menyerupai cahaya di dunia nyata.
6
Direct3D menggunakan lighting untuk menyerupai cahaya di dunia nyata.
Menggunakan suatu sistem perhitungan yang tidak terlalu berat dan dapat dijalankan secara real-time.
Terdiri dari sejumlah tipe lighting dan light sources.
Types of Lighting
3 jenis cahaya: diffuse light, ambient light, dan specular light.
S E N G -H A N S U N
8
Terdapat beberapa jenis cahaya (atau sumber cahaya) yang memancarkan cahaya, yakni:
1. Ambient lights 2. Directional lights 3. Point lights
4. Spot lights
Setiap sumber cahaya bisa memiliki sifat dan warna cahayanya masing-masing, dan dapat dikombinasikan satu dengan lainnya untuk membentuk cahaya yang mendekati cahaya di dunia nyata.
Ambient lights tidak memiliki sumber atau arah cahaya tertentu.
Warnanya biasanya putih atau abu-abu.
Directional lights mirip seperti ambient lights,
memberikan cahaya dari seluruh tempat pada satu waktu.
Namun directional lights memberikan cahaya pada arah tertentu.
10
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-8
Point lights tidak memiliki arah tertentu, tapi memiliki lokasi, serta memancarkan cahaya ke seluruh arah dari satu lokasi tersebut.
Memancarkan ambient, diffuse, dan specular light.
12
Spot light memiliki arah dan lokasi.
Menghasilkan suatu sinar cahaya. S
E N G -H A N S U N
Suatu material adalah suatu penggambaran cara permukaan obyek memantulkan cahaya dan warna apa yang terlibat di dalamnya.
Jangan memberikan hanya 1 warna primer ke
materials. S
14
S E N G -H A N S U N
Suatu normal adalah suatu vektor yang tegak lurus terhadap permukaan sebuah bidang.
16
Direct3D menggunakan sudut dari normal dan sudut arah datang cahaya untuk menentukan seberapa besar cahaya di suatu permukaan diberikan.
Semakin sedikit perbedaan sudutnya, maka semakin besar intensitas cahaya di permukaan tersebut.
Sayangnya, Direct3D tidak memberikan normal suatu permukaan secara otomatis.
Kita harus menentukan normal bidang tersebut
sendiri.
Caranya dengan memberikan suatu normal vector ke setiap titik di permukaan → vertex normals.
18
Langkah-langkah untuk menerapkan lighting:
1. Setting Up a New Flexible Vertex Format 2. Turning the Lighting On
3. Setting the Ambient Light
4. Creating and Setting the Diffuse Light 5. Creating and Setting the Material
20
S E N G -H A N S U N
S E N G -H A N S U N
Set the ambient light
22
S E N G -H A N S U N
24
26
28
30
32
34
36
38
Directional light mewakili cahaya pada umumnya yang ada di semua tempat.
Bagaimana dengan cahaya-cahaya yang tidak ada di semua tempat?
Point lights dan Spot lights.
The Scaling Problem
40
Sebuah obyek dengan ukuran yang berubah-ubah akan memiliki sedikit masalah dengan pencahayaan.
Obyek makin kecil → makin terang.
Obyek makin besar → makin gelap.
Kenapa?
Saat obyek diskalasikan, maka normal-nya juga ikut diskalasikan.
Semakin kecil normal, maka semakin terang obyek. S
Merupakan cahaya yang memiliki lokasi tertentu dan
memancarkan cahaya ke seluruh arah dari lokasi itu.
Point light tidak meneruskan cahayanya tanpa batas.
Semakin jauh dari sumber cahaya, maka akan semakin terpencar ke segala arah.
Semakin jauh suatu obyek dari sumber cahaya, makin
42
Merupakan jarak suatu sumber cahaya.
Di luar batas range suatu sumber cahaya, tidak ada cahaya dari sumber itu yang ditampilkan.
Caranya dengan mengubah nilai range dari suatu
Mengendalikan bagaimana intensitas cahaya makin berkurang setelah melalui ruang jarak dan waktu tertentu.
S
Attenuation,
Constant values
44
Saat membuat point light, Anda dapat menggunakan fungsi attenuation dan menentukan nilai untuk setiap variabel.
Dapat juga dikombinasikan untuk memperoleh
efek-efek yang berbeda.
Perhatikan pula range dari sumber cahaya karena
range menentukan seberapa jauh Direct3D akan menghitung attenuation tersebut.
Catatan: mengatur range dan attenuation untuk suatu
46
Merupakan cahaya yang memiliki lokasi dan arah.
Memancarkan cahaya dari suatu titik tertentu dan ke arah tertentu.
Paling jarang digunakan, paling kurang efisien, dan
sulit diterapkan dibandingkan dua jenis cahaya lainnya.
48
Spot lights memiliki bentuk seperti kerucut. S
merepresentasikan
inner circle.
• Phi merepresentasikan
outer circle.
• Keduanya merupakan bilangan float yang
menyimpan sudut yang digunakan untuk
menentukan ukuran setiap lingkaran.
Merupakan suatu nilai yang digunakan untuk
mengendalikan seberapa cepat inner circle memudar ke dalam outer circle.
Biasanya ditentukan dengan suatu bilangan float, 1.0.
50
52
54
56
58
60
62
64
66
Color blending
merupakan suatu cara untuk
menggabungkan dua/ lebih warna untuk
menghasilkan warna baru.
Red + Blue
→
Purple
Bisa juga untuk membuat efek semi transparan.
Blend Operations
The Finished Program
DirectX menggunakan blend operation, yakni suatu persamaan dengan 2 nilai yang tidak diketahui, yang saat diisi, akan menghasilkan nilai ketiga.
Memiliki 5 bagian, yakni: warna sumber, faktor
sumber, operasi, warna tujuan, dan faktor tujuan. S
68
Color blending terjadi pada saat suatu obyek digambarkan ke back buffer.
Persamaan di atas akan dilakukan untuk setiap pixel
yang digambarkan.
Warna sumber (source color) adalah warna dari pixel
yang sedang digambarkan.
Warna tujuan (destination color) adalah warna dari
pixel yang berada di belakang obyek yang digambarkan.
70
Dalam color blending, setiap warna primer dikalikan dengan suatu faktor yang telah ditentukan terlebih dahulu.
Biasanya digunakan channel Alpha dari suatu obyek. Setelah memilih faktor apa yang akan digunakan,
Direct3D akan mengubah nilainya menjadi nilai float
antara 0.0 (fully transparent) dan 1.0 (fully opaque).
Jika digunakan channel Alpha (yang nilainya antara 0 dan 255), dan nilai Alpha adalah 192, maka setelah dikonversi akan menjadi 0.75.
Beberapa operasi yang dapat dilakukan:
1.
Penjumlahan
2.
Pengurangan
3.
Minimum (yang lebih gelap dari dua warna)
4.
Maximum (yang lebih terang dari dua warna)
S72
Langkah-langkah yang dibutuhkan untuk
membuat efek semi-transparan:
1.
Turn on Blending
2.
Set the Operation for the Blend Equation
3.
Set the Source and Destination Factors
Sebelum suatu
color blending
dapat dilakukan,
Direct3D harus diberitahu.
Gunakan fungsi SetRenderState().
S E N G -H A N S U N
74
S E N G -H A N S U N
Tell Direct3D to set an operation
76
Akan dipanggil 2 fungsi SetRenderState(), masing-masing untuk setiap faktor.
Terdapat 15 pilihan faktor berbeda yang dapat digunakan, tapi tidak semua akan diperlukan.
Semua nilai dalam faktor yang dipilih berada dalam
78
Cukup mengubah nilai alpha dari setiap warna dalam obyek yang digunakan.
80
82
84
86
88
90
http://directxtutorial.com/
http://wiki.blender.org/index.php/Doc:2.4/Books/Essen tial_Blender/11.2.Lighting:_Discussion
Other web resources.