BAB 4
KASUS/CONTOH
PEMANFAATAN TERSEBUT UNTUK KONSEP SHADING MODELLING
Goraud Shading
Grafik 3-D, sebuah teknik yang
dikembangkan oleh Henri Gouraud pada awal tahun 1970. Teknik ini menampilkan
kesan gelap terang dari sebuah permukaan objek dengan memperhitungkan warna dan
penyinaran dari tiap sudut segitiga. Gouraud shading adalah metode rendering
sederhana jika dibandingkan dengan Phong shading. Teknik ini tidak menghasilkan
efek shadow dan refleksi.
Pada grafik 3D, poligon yang membentuk
citra perlu diwarnai sehingga terlihat dengan baik. Gouraud shading adalah
salah satu proses yang menggunakan algoritma tertentu untuk membuat gradasi
warna. Pewarnaan (shading) ini dapat digunakan pada games.
Sebuah teknik yang dikembangkan oleh Henri
Gouraud pada awal tahun 1970. Teknik ini menampilkan kesan gelap terang dari
sebuah permukaan objek dengan memperhitungkan warna dan penyinaran dari tiap
sudut segitiga. Gouraud shading adalah metode rendering sederhana jika
dibandingkan dengan Phong shading. Teknik ini tidak menghasilkan efek shadow
dan refleksi. Metode ini digunakan dalam
grafik komputer untuk mensimulasikan efek cahaya yang berbeda dan warna di
permukaan benda.Dalam prakteknya, Gouraud shading digunakan untuk mencapai
pencahayaan halus rendah-poligon permukaan tanpa berat menghitung kebutuhan
komputasi pencahayaan untuk setiap pixel.
Contoh
gambar Gouraud Shading:
Flat shading
Flat
shading : suatu teknik shades masing-masing polygon dari suatu objek
berdasarkan pada polygon “normal” dan posisi serta intensitas sumber cahaya.
Pemberian bayangan rata (flat) merupakan
cara termudah untuk dibuat. Bayangan rata mempunyai karakteristik sebagai
berikut :
· Pemberian tone yang sama untuk setiap
polygon
· Penghitungan jumlah cahaya mulai dari
titik tunggal pada permukaan
· Penggunaan satu normal untuk seluruh
permukaan.
Contoh
gambar Flat Shading:
Secara
garis besar perbedaan antara Gouraud shading dengan flat shading adalah seperti
gambar dibawah ini :
CEL
SHADING
Cel Shading (dalam penjelasan yang paling sederhana)
adalah sebuah teknik dalam merender gambar 3D agar hasilnya tampak seperti
kartun dengan ciri-ciri adanya outline/garis pinggir dan pencahayaan yang
sederhana/kurang realistis.
Cara
Pertama:
Pada cara yang pertama, saya akan berusaha
menjelaskan bagaimana menghasilkan effect
ini dengan menggunakan program Anim8or. Pagi pengguna program 3D modeller yang lain bisa menyesuaikan. Pertama-tama siapkan sebuah model.
ini dengan menggunakan program Anim8or. Pagi pengguna program 3D modeller yang lain bisa menyesuaikan. Pertama-tama siapkan sebuah model.
Bila model ini terdiri dari beberapa mesh, sebaiknya
semua mesh tersebut di satukan dengan perintah Join Solid (Build > Join
Solid). Buat
duplikat dari model tersebut dan letakkan duplikatnya pada object yang
terpisah. Seterusnya
kita akan mengedit model yang kedua
Pilih semua faces/trianggle-nya.
Extrude semua faces/trianglen-ya dengan menggunakan
perintah (Extrude Faces
connected) sehingga modelnya akan tampak menggembung. Sebaiknya jangan terlalu
besar saat meng-extrude face-nya agar efek yang dihasilkan juga tidak terlalu tebal.
Perintah Extrude Faces Connected akan membuat object membesar secara proporsional.
Perintah ini sedikit berbeda dengan Scale. Pada perintah Scale, object diperbesar dengan
menggunakan pusat object sebagai pusat scale. Dengan menggunakan Extrude Faces
Connected, tiap object akan di scale dengan menggerakkan tiap vertex searah dengan
arah normalnya.
connected) sehingga modelnya akan tampak menggembung. Sebaiknya jangan terlalu
besar saat meng-extrude face-nya agar efek yang dihasilkan juga tidak terlalu tebal.
Perintah Extrude Faces Connected akan membuat object membesar secara proporsional.
Perintah ini sedikit berbeda dengan Scale. Pada perintah Scale, object diperbesar dengan
menggunakan pusat object sebagai pusat scale. Dengan menggunakan Extrude Faces
Connected, tiap object akan di scale dengan menggerakkan tiap vertex searah dengan
arah normalnya.
Untuk melihat perbedaannya, bisa mencoba sendiri
kedua perintah diatas.
Setelah itu set materialnya. Untuk menghasilkan effect cel shading kita perlu material
yang bersifat bolak balik. Bagian depan di set transparant, sedangkan bagian belakang di
set dengan warna hitam. Untuk lebih jelasnya perhatikan gambar berikut:
Setelah itu, kita tinggal menggabungkan object pertama dan kedua:
Hasilnya adalah sebuah model dengan outline yang tampak seperti gambar pada game HARVESTMOON 2: SAVE THE HOMELAND
Setelah itu set materialnya. Untuk menghasilkan effect cel shading kita perlu material
yang bersifat bolak balik. Bagian depan di set transparant, sedangkan bagian belakang di
set dengan warna hitam. Untuk lebih jelasnya perhatikan gambar berikut:
Setelah itu, kita tinggal menggabungkan object pertama dan kedua:
Hasilnya adalah sebuah model dengan outline yang tampak seperti gambar pada game HARVESTMOON 2: SAVE THE HOMELAND
Cara
Kedua:
Pada cara kedua, kita akan membuat effect yang sama
dengan bahasa pemrograman.
Untuk itu sebaiknya dirimu memiliki dasar pengetahuan tentang pemrograman dan model
3D. Kodenya adalah sebagai berikut. Kode ini ditulis dengan menggunakan Blitz3D. Bisa
mendownload Blitz3D disini.
Untuk itu sebaiknya dirimu memiliki dasar pengetahuan tentang pemrograman dan model
3D. Kodenya adalah sebagai berikut. Kode ini ditulis dengan menggunakan Blitz3D. Bisa
mendownload Blitz3D disini.
Code:
[Select]
Graphics3D 640,480,16,2
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
PositionEntity camera,0,70,-100
TurnEntity camera,10,0,0
CameraClsColor camera,255,255,255
;load model
model=LoadAnimMesh("nana.b3d")
EntityFX model,1
model2=LoadAnimMesh("nana.b3d",model)
EntityFX model2,2
FlipMesh model2
EntityColor model2,0,0,0
Animate model,1
Animate model2,1
;scale model
For count=1 To CountSurfaces(model2)
surf=GetSurface(model2,count)
For a=0 To CountVertices(surf)-1
xm#=VertexNX(surf,a)*1.5
ym#=VertexNY(surf,a)*1.5
zm#=VertexNZ(surf,a)*1.5
x#=VertexX(surf,a)
y#=VertexY(surf,a)
z#=VertexZ(surf,a)
VertexCoords surf,a,x-xm,y-ym,z-zm
VertexColor surf,a,0,0,0
Next
Next
;render
While Not KeyHit(1)
Cls
TurnEntity model,0,1,0
RenderWorld
UpdateWorld
Flip
Wend
End
Penjelasan program.
Program
ini terdiri dari 3 bagian: load, fx, dan render
Pada bagian load kita meload 2 buah model yang berasal dari file yang sama. Pada bagian FX, kita mengedit model yang diload kedua. Model ini di edit per vertex. Prosesnya sama dengan proses yang dilakukan dengan Anim8or, hanya saja disini kita menggunakan code untuk menghasilkan FX secara realtime. Kita membesarkan model sedikit dengan cara menggerakkan tiap vertexnya searah dengan arah normal dari vertex tersebut. Kemudian modelnya dibalik dan diberi warna hitam atau warna yang lainnya
Pada bagian load kita meload 2 buah model yang berasal dari file yang sama. Pada bagian FX, kita mengedit model yang diload kedua. Model ini di edit per vertex. Prosesnya sama dengan proses yang dilakukan dengan Anim8or, hanya saja disini kita menggunakan code untuk menghasilkan FX secara realtime. Kita membesarkan model sedikit dengan cara menggerakkan tiap vertexnya searah dengan arah normal dari vertex tersebut. Kemudian modelnya dibalik dan diberi warna hitam atau warna yang lainnya
Yang
perlu diperhatikan disini adalah kita tidak bisa menzoom modelnya secara
langsung. Menzoom model akan menyebabkan model diperbesar relative terhadap
origin. Hal ini tidak akan menghasilkan FX yang bagus. Untuk menghasilkan FX
seperti cel shade maka tiap vertex harus digerakkan searah dengan arah normal
dari vertex tersebut.
Pada bagian render, prosesnya berjalan seperti biasa. Kedua model dianimasikan secara bersama-sama. Model yang kedua akan tampak dari belakang, sehingga warnanya tampak hitam dan karena ukurannya yang sedikit besar maka akan tampak seperti outline.
Pada bagian render, prosesnya berjalan seperti biasa. Kedua model dianimasikan secara bersama-sama. Model yang kedua akan tampak dari belakang, sehingga warnanya tampak hitam dan karena ukurannya yang sedikit besar maka akan tampak seperti outline.
Bayangan adalah proses penentuan
warna dari semua pixel yang menutupi permukaan menggunakan model illuminasi.
Metodenya melliputi :
-
Penentuan permukaan tampak pada setiap pixel
-
Perhitungan normal pada permukaan
-
Mengevaluasi intensitas cahaya dan warna menggunakan model illuminasi.
Jaring poligon secara umum sering
digunakan untuk merepresentasikan permukaan yang kompleks. Informasi geometri
yang tersedia hanyalah vertice dari polygon. Interpolasi dari model bayangan
dapat digunakan untuk meningkatkan substansi secara lebih efisien.
Unsur yang mempengaruhi bayangan
adalah
1. Normal Vektor
Normal Vector adalah vector yang
arahnya tegak lurus pada luasan (face). Normal Vector dapat diperoleh dari
perkalian silang (cross-product) dari dua vector yang berada pada face. Besar
dari Normal Vector Vector tegantung pada hasil perkalian silangnya.
2. Unit Vektor
Unit Vector adalah vektor yang
besarnya adalah satu satuan dan arahnya tergantung arah vektor asalnya. Besar
suatu vektor dapat diperoleh dengan Agar vektor v menjadi unit vektor maka
semua koefisien (vx,vy,vz)
3. Optical Vektor
Sebuah konsep mengenai
pencahayaan yang jatuh pada sebuah benda. Model bayangan dibagi menjadi dua
yaitu :
A.
Direct Line
Flat shading
Satu face mempunyai warna yang sama dan flat shading
menggunakan model Phong untuk optical view. Pemberian bayangan rata (flat)
merupakan cara termudah untuk dibuat. Bayangan rata mempunyai karakteristik
sebagai berikut :
·
Pemberian tone yang sama untuk setiap polygon.
·
Penghitungan jumlah cahaya mulai dari titik tunggal pada permukaan.
·
Penggunaan satu normal untuk seluruh permukaan.
Pemberian bayangan rata ini mengasumsikan bahwa setiap
muka polygon dari sebuah objek adalah rata dan semua titik pada permukaan
mempunyai jarak yang sama dengan sumber cahaya.
Gouraud shading
Sebuah teknik yang dikembangkan oleh Henri Gouraud
pada awal tahun 1970. Teknik ini menampilkan kesan gelap terang dari sebuah
permukaan objek dengan memperhitungkan warna dan penyinaran dari tiap sudut segitiga.
Gouraud shading adalah metode rendering sederhana jika dibandingkan dengan
Phong shading. Teknik ini tidak menghasilkan efek shadow dan refleksi. Metode
ini digunakan dalam grafik komputer untuk mensimulasikan efek cahaya yang berbeda
dan warna di permukaan benda.Dalam prakteknya, Gouraud shading digunakan untuk
mencapai pencahayaan halus rendah-poligon permukaan tanpa berat menghitung
kebutuhan komputasi pencahayaan untuk setiap pixel.
Phong shading
Terdapat perbedaan antara
phongshading dengan phonglighting. Phonglighting merupakan model empiris untuk
menghitung iluminasi pada titik pada permukaan sedangkan Phongshading merupakan
interpolasi linear permukaan normal di segi itu, menerapkan model Phonglighting
pada setiap pixel. Phong shading mengacu pada seperangkat teknik dalam komputer
grafis 3D.Phong shading meliputi model bagi refleksi cahaya dari permukaan dan
metode yang
kompatibel memperkirakan pixel
warna oleh interpolating permukaan normal dirasterized poligon.
Model refleksi juga mungkin disebut
sebagai refleksi Phong model, Phong Phong iluminasi atau encahayaan.Ini mungkin
disebut Phong shading dalam konteks pixel shader, atau tempat lain di mana
perhitungan pencahayaan dapat disebut sebagai "shading". Metode
interpolasi juga mungkin disebut Phong interpolasi, yang biasanya disebut
dengan "per-pixel pencahayaan".Biasanya disebut "pelindung"
bila dibandingkan dengan metode interpolasi lain seperti Gouraud pelindung atau
flat shading.Refleksi yang Phong model tersebut dapat digunakan bersama dengan
salah satu metode interpolasi.
2. Indirect Line
- Ray Tracing
- Radiosity
suatu medium dengan sejumlah
diskrit. Masalah sederhana dapat dianalisis dengan menyebarkan beberapa sinar dengan menggunakan
matematika sederhana. Analisis yang lebih detailnya dapat dilakukan dengan
menggunakan komputer untuk menyebarkan banyak sinar.
Ray tracing bekerja dengan
mengasumsikan bahwa partikel atau gelombang dapat dimodelkan sebagai sejumlah
besar berkas sinar yang sangat sempit, dan bahwa ada beberapa sinar yang
melewati batas jarak seperti sinar yang bertempat datar. Sinar pelacak akan
mepercepat sinar yang melewati jarak ini, dan kemudian menggunakan daerah turunan
dari medium untuk menghitung arah sinar baru. Dari lokasi ini, sinar yang baru
akan dikirim keluar dan proses akan diulang sampai jalan yang lengkap
dihasilkan. Jika simulasinya mencakup benda padat, sinar dapat diuji pada
persimpangan dengan setiap langkahnya, melakukan penyesuaian pada arah sinar
jika ditemukan adanya suatu tabrakan. Properti lain dari sinar dapat diubah
sebagai pencepatan simulasi juga.,
seperti intensitas, panjang gelombang, atau polarisasi. Contoh kegunaan Ray
Tracing (physics) ada pada sinyal radio, samudra akustik, dan desain optis.
2. Ray Tracing (graphics), yang digunakan untuk generasi
gambar 3D.
Dalam grafik komputer, ray
tracing adalah teknik untuk menghasilkan sebuah gambar dengan menelusuri
jalan cahaya melalui pixel dalam gambar pesawat. Teknik ini mampu menghasilkan
tingkat ketajaman gambar yang sangat tinggi – biasanya lebih tinggi dari pada
metode tipe scanline rendering, tetapi pada biaya komputasi yang lebih
besar. Hal ini membuat ray tracing paling cocok untuk aplikasi di mana
gambar dapat di-render perlahan terlebih dahulu, seperti pada gambar diam dan
film dan special effects televisi, dan kurang lebih cocok untuk
real-time aplikasi seperti game komputer, di mana kecepatan sangat penting.
Ray tracing mampu mensimulasikan berbagai efek optis, seperti refleksi dan pembiasan
penyebaran, dan aberasi kromatik. Ray tracing telah digunakan dalam lingkungan
produksi untuk off-line rendering selama beberapa dekade sekarang – yaitu
rendering yang tidak perlu menyelesaikan seluruh adegan dalam waktu kurang dari
beberapa milidetik. Tentu saja kita tidak boleh men-generalisasi dan membiarkan
pengguna mengetahui bahwa beberapa implementasi raytracer telah mampu menekan
tanda “interaktif”. Sekarang juga disebut “real-time ray tracing”, yaitu bidang
yang sangat aktif sekarang, karena sudah dianggap sebagai hal yang besar bahwa
akselerator 3D perlu dipercepat. Raytracer sungguh menyukai daerah-daerah yang
kualitas refleksinya penting. Banyak efek yang tampaknya sulit dicapai dengan
teknik lain yang sangat alami menggunakan raytracer : refleksi, pembiasan,
kedalaman bidang, tingginya tingkat kualitas bayangan. Tentunya hal tersebut
tidak selalu berarti bahwa raytracer cepat.
Terdapat 2 metode pada Ray
Tracing yaitu:
1.
Forward Ray Tracing
2.
Backward Ray Tracing
Dalam
pemrograman shader terdapat 3 macam standar pencahayaan (ligthing model) yang
sering digunakan, yaitu :
- Ambient Lighting : Merupakan salah satu ligthing model yang digunakan tanpa memperhatikan arah datangnya cahaya / sumber cahaya (light source). Jadi pada Ambient Lighting, permukaan object akan mendapatkan cahaya dari segala arah dengan nilai dan intensitas yang sama.Dimana seluruh permukaan object akan memiliki warna yang sama.
- Diffuse Lighting : Merupakan lighting model yang memperhatikan arah datangnya cahaya dan akan memantulkan/menyebarkan cahaya ke berbagai arah. Jadi pada Diffuse Lighting, permukaan object yang berhadapan dengan sumber cahaya akan memerima cahaya dan menyebarkannya ke berbagai arah.
- Specular Lighting : Sama seperti Diffuse Lighting, Specular Lighting merupakan lighting model yang memperhatikan arah datangnya cahaya. Akan tetapi pada Specular Lighting, cahaya yang datang hanya akan dipantulkan pada 1 arah.
Pada kesempatan
kali ini, kita akan membahas tentang Diffuse Lighting. Salah metode /
teknik yang paling bagus untuk membuat Diffuse Lighting adalah dengan
menggunakan metode Lambertian Reflection atau biasa disebut juga dengan Lambert
Shading. Secara umum, rumus dari metode Lambert adalah sebagai berikut :
Dimana,
ID =
Intensity Diffuse (Intensitas cahaya dari hasil Diffuse)
L = normalized
Light Direction (Vector arah datangnya cahaya / sumber cahaya yang telah
dinormalisasi)
N = Normal
Vector (Vector yang tegak lurus dengan permukaan object)
(N . L) =
perkalian dot product antara Vector Normal dengan Vector Light Direction
C = Color
(Warna)
IL =
Instensity Light (Intensitas cahaya)
Jadi, lambert
shading diperoleh dari perkalian dot product antara vector normal dengan vector
light direction.
Selanjutnya,
kita akan mengimplementasikannya pada RenderMonkey. Setelah membuka
RenderMonkey, kemudian kita tambahkan DirectX Effect dengan cara Effect
Group => Effect Group w/ DirectX Effect. Kemudian terlebih dahulu kita ganti
model/object sphere menjadi model Teapot dengan cara klik kanan Model pada
Effect1 kemudian pilih Change Model => Teapot.3ds, seperti gambar berikut :
Setelah itu,
pastikan model yang tampil pada layar anda adalah model teapot bukan lagi
sphere, seperti gambar di bawah ini :
Dikarenakan
pada lambert shading kita harus menggunakan Vector Normal, maka untuk
mendapatkan Vector Normal dari object dapat dilakukan dengan menambahkan node
pada Stream Mapping Node dengan cara double klik pada Stream Mapping atau
klik kanan Stream Mapping => Edit. Kemudian klik Add, dan
pilih NORMAL, ubah Data Type menjadi FLOAT3, seperti
gambar di bawah ini :
Stream Mapping
Node di atas mendefinisikan informasi apa saja yang bisa kita peroleh dari
model dan dapat kita digunakan pada render engine.
Setelah kita
mendefiniskan Normal, selanjutnya kita harus mendefinisikan lampu menggunakan
Vector Light. Pada pemrograman shader terdapat 3 tipe lampu (sumber cahaya)
yang bisa digunakan, diantaranya adalah :
- Directional Light : Merupakan type lampu (sumber cahaya) yang memiliki komponen warna dan arah, tetapi tidak memiliki komponen posisi. Sehingga intensitas cahaya yang diterima object tidak dipengaruhi oleh jarak antara object dengan sumber cahaya. Akan tetapi hanya dipengaruhi oleh arah dari sumber cahaya.
- Point Light : Merupakan sumber cahaya yang memiliki komponen warna dan posisi, tetapi tidak memiliki komponen arah. Point Light didefinisikan sebagai sumber cahaya yang memancar dari satu titik dan memancarkan cahaya merata ke segala arah. Intensitas cahaya yang diterima object dari point light akan dipengaruhi oleh posisi dan jarak object dari sumber cahaya.
- Spot Light : Merupakan sumber cahaya yang memiliki komponen warna, arah dan posisi. Sehingga intensitas cahaya yang diterima object dari selain dipengaruhi arah sumber cahaya juga dipengaruhi oleh jarak object dengan sumber cahaya. Spot Light juga mempunyai efek kerucut dimana intensitas cahaya di tepi kerucut akan lebih kecil dibandingkan dengan pusat kerucut.
Pada percobaan
kali ini, sumber cahaya yang akan kita gunakan adalah sumber cahaya dengan tipe
Directional Light. Untuk membuatnya pada RenderMonkey dilakukan dengan membuat
variable float3 dengan cara klik kanan pada Effect1 => Add Variable =>
Float => Float3. Lalu kita ganti nama variablenya menjadi
lightDirection. Karena kita menggunakan Directional Light, maka nilai dari
x,y, dan z adalah nilai arah datangnya sumber cahaya. Kita misalkan saja
arahnya (0, 0, -1), seperti gambar berikut :
Setelah itu,
jangan lupa juga menambahkan variabel Color. Variabel Color digunakan untuk
warna dari Lambert shading. Untuk menambahkan variabel Color bisa dilakukan
dengan cara klik kanan pada Effect1, lalu pilih Add Variable =>
Color, ubah nama variabelnya menjadi Color. Sedangkan nilai
Intensitas Cahaya pada tutorial kali ini kita anggap tetap, yaitu 1.
Kemudian ganti
code pada vertex shader dengan code di bawah ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
float4x4
matWorldViewProjection; float4x4
matWorld; struct
VS_INPUT { float4
Position : POSITION0; float3
Normal : NORMAL; }; struct
VS_OUTPUT { float4
Position : POSITION; float3
Normal : TEXCOORD0; }; VS_OUTPUT
vs_main( VS_INPUT Input ) { VS_OUTPUT
Output; Output.Position
= mul (Input.Position, matWorldViewProjection ); Output.Normal
= mul (float4(Input.Normal,0), matWorld); return(
Output ); } |
sehingga pada
kesempatan kali ini hanya akan dijelaskan code-code yang belum dijelaskan pada
artikel sebelumnya.
1
|
float4x4
matWorld; |
Merupakan
variabel matriks yang digunakan untuk mentransformasi suatu nilai variabel dari
object space ke world space. Perbedaan object space dan world
space terletak pada titik pusatnya. Pada object space yg menjadi
titik pusatnya adalah titik pusat object. Sedangkan pada world space yg
menjadi titik pusatnya adalah titik pusat origin (0,0,0). Secara default pada
Render Monkey, tidak ada perbedaan antar object space dan world space
dikarenakan titik pusat object space dan world space berhimpitan. Akan tetapi,
hal ini bisa berbeda jika kita menggunakan software lain, misalnya saja
Blender. Gambar di bawah ini adalah contoh perbedaan titik pusat antara object
space dengan world space (pada software Blender 3D) :
Untuk dapat menggunakan
variabel matWorld, kita harus terlebih dahulu menambahkannya ke dalam program
kita dengan cara klik kanan Effect1 => Add Variable => Matrix =>
Predefined => matWorld. Agar program dapat berjalan lancar pastikan kita
sudah terdapat variable matWorld pada Effect1.
1
|
float3
Normal : NORMAL; |
Mendefinisikan
variable Normal dengan semantik NORMAL yang telah kita tambakan pada Stream
Mapping, digunakan untuk mendapatkan normal vector dari model.
1
|
float3
Normal : TEXCOORD0; |
Variable untuk
menampung nilai vector Normal dan vector Light Direction. Nilai yang ditampung
dalam variabel ini merupakan Output dari proses Vertex Shader.
1
2
|
Output.Position
= mul (Input.Position, matWorldViewProjection ); Output.Normal
= mul (float4(Input.Normal,0), matWorld); |
Mengubah nilai
variable Normal pada struct Output untuk menampung nilai vector Normal. Vector
Normal diperoleh dari input model (Input.Normal). Dikarenakan Normal yg kita
peroleh dari stream mapping berada pada object space maka untuk mentransformasi
ke world space kita harus mengalikannya dengan matWorld. dengan terlebih dahulu
mengubahnya menjadi float4 karena matriks matWorld berukuran 4×4. Penambahan
nilai 0 untuk perkalian variable Input.Normal dikarenakan variable
tersebut adalah vector, sedangkan apabila variable tersebut berupa posisi maka
nilai yg ditambahkan pada adalah 1.
Setelah
mengganti code pada vertex shader, langkah selanjutnya adalah mengganti code
pada pixel shader dengan code berikut ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
float4
Color; float3
lightDirection; struct
PS_INPUT { float4
Position : POSITION; float3
Normal : TEXCOORD0; }; float4
ps_main(PS_INPUT Input) : COLOR0 { float
NdotL =
dot(Input.Normal,normalize(lightDirection;)); float4
Diffuse = NdotL * Color; return
Diffuse; } |
Berikut adalah
penjelasan dari code pada pixel shader di atas :
1
|
float4
Color; |
Mendefinisikan
variabel Color yang telah kita tambahkan sebelumnya.
1
|
float3
lightDirection; |
Mendefinisikan
variable light Direction yang sudah kita tambahkan sebelumnya. Variabel
lightDirection berada pada world space.
1
2
3
4
5
|
struct
PS_INPUT { float4
Position : POSITION; float3
Normal : TEXCOORD0; }; |
Struct PS_INPUT
merupakan struct untuk menampung variabel-variabel yang akan dijadikan sebagai
input pada pixel shader. Karena input yang digunakan pada pixel shader
merupakan output dari vertex shader, sehingga variabel dan nilai yang ada dalam
struct PS_INPUT sama dengan variabel yang ada pada struct VS_OUTPUT.
1
2
3
4
5
6
7
|
float4
ps_main(PS_INPUT Input) : COLOR0 { float
NdotL =
dot(Input.Normal,normalize(lightDirection;)); float4
Diffuse = NdotL * Color; return
Diffuse; } |
Variabel NdotL
digunakan untuk menampung nilai perkalian dot product antara Vector Normal
dengan Vector Light Direction yang telah dinormalisasi. Yang terakhir adalah
Variabel Diffuse merupakan variabel yang untuk menampung nilai Lambert
Shading yang diperoleh dari perhitung rumus yang telah dijelaskan di atas
(ID=(N . L) C IL) dengan nilai IL
adalah 1. Nilai variabel Diffuse inilah yang digunakan untuk menampilkan object
dengan metode Lambert Shading.
Setelah kita
membuat code pada vertex shader dan pixel shader, selanjutnya kita tinggal
menjalankan code-code yang telah kita buat tersebut dengan mengklik ikon Compile
All Shader in Workspace () pada RenderMonkey. Selanjutnya kita akan
melihat bahwa model teapot telah berubah tampilannya menjadi seperti gambar di
bawah ini :
Bagian teapot
yang terang adalah bagian yang menghadap ke arah cahaya, sedangkan bagian yang
membelakangi sumber cahaya.
Kita bisa
mengatur dan mengubah nilai dari variabel-variabel lightDirection, dan Color,
untuk mendapatkan tampilan sesuai dengan apa yang kita inginkan. Gambar berikut
ini adalah output dari lambert shading dengan nilai lightDirection= (1.5, 0.5,
-1.0), Color (RGBA) = (126,255,21,255).
•
Metodenya melliputi : Penentuan
permukaan tampak pada setiap pixel, Perhitungan normal pada permukaan, dan
Mengevaluasi intensitas cahaya dan warna menggunakan model illuminasi.
•
Metode pembuatan bayangan cukup
mahal, untuk membuatnya lebih efisien dilakukan melalui kustomisasi untuk
merepresentasikan permukaan yang spesifik.
•
Jaring poligon secara umum sering
digunakan untuk merepresentasikan permukaan yang kompleks.
•
Informasi geometri yang tersedia
hanyalah vertice dari poligon.
•
Interpolasi dari model bayangan
dapat digunakan untuk meningkatkan substansi secara lebih efisien.
6 Ragam Teknik Bayangan
• Constant Shading
• Gouraud Shading
• Phong Shading
Flat shading
Pemberian bayangan rata (flat)
merupakan cara termudah untuk dibuat. Bayangan rata mempunyai karakteristik
sebagai berikut :
·
Pemberian tone yang sama untuk setiap polygon
·
Penghitungan jumlah cahaya mulai dari titik tunggal pada permukaan
·
Penggunaan satu normal untuk seluruh permukaan.
Contoh gambar Flat Shading:
1)
Gouraud shading
Sebuah teknik yang dikembangkan
oleh Henri Gouraud pada awal tahun 1970. Teknik ini menampilkan kesan gelap
terang dari sebuah permukaan objek dengan memperhitungkan warna dan penyinaran
dari tiap sudut segitiga. Gouraud shading adalah metode rendering sederhana
jika dibandingkan dengan Phong shading. Teknik ini tidak menghasilkan efek shadow
dan refleksi. Metode ini
digunakan dalam grafik komputer untuk mensimulasikan efek cahaya yang berbeda
dan warna di permukaan benda.Dalam prakteknya, Gouraud shading digunakan untuk
mencapai pencahayaan halus rendah-poligon permukaan tanpa berat menghitung
kebutuhan komputasi pencahayaan untuk setiap pixel.
Contoh gambar Gouraud Shading:
Phong shading
Phong shading mengacu pada
seperangkat teknik dalam komputer grafis 3D. Phong shading meliputi model bagi
refleksi cahaya dari permukaan dan metode yang kompatibel memperkirakan pixel
warna oleh interpolating permukaan normal di rasterized poligon. Model refleksi
juga mungkin disebut sebagai refleksi Phong model, Phong Phong iluminasi atau
pencahayaan.Ini mungkin disebut Phong shading dalam konteks pixel shader, atau
tempat lain di mana perhitungan pencahayaan dapat disebut sebagai
"shading". Metode interpolasi juga mungkin disebut Phong interpolasi,
yang biasanya disebut dengan "per-pixel pencahayaan".Biasanya disebut
"pelindung" bila dibandingkan dengan metode interpolasi lain seperti
Gouraud pelindung atau flat shading. Refleksi yang Phong model tersebut dapat
digunakan bersama dengan salah satu metode interpolasi. Metode ini dikembangkan
oleh Phong Bui Tuong di Universitas Utah.
Secara Garis besar, gambar perbedaan dari Flat shading, Gouraud shading dan Phong shading:
CONTOH
saya mempunyai konsep untuk
membuat sebuah replika planet Bumi dengan menyertakan tulisan UNIVERSITAS
GUNADARMA. Saya akan menjelaskan tentang tahap pembuatannya.
Tahap Pembuatan :
Tahap Pembuatan :
- Buka software BLENDER, kemudian buat sebuah bola. Caranya klik Add - Mesh - UVsphere. Kemudian set Segment : 32, Ring : 32, Radius : 3.00.
- Langkah berikutnya adalah menambahkan gambar permukaan Bumi pada bola tersebut. Pada panel Shading klik Material buttons lalu pilih Add New.
Selanjutnya
pada bagian Texture buttons pilih Add New.
Lalu pada Texture
Type pilih Image.
Klik Load
untuk membuat gambar permukaan Bumi. Gambar yang saya pakai adalah : Sebenarnya ketika di Render, gambarnya berporos pada sumbu Y. Jadi saya
akan mengubahnya menjadi sumbu Z. Caranya adalah klik Material buttons pada
panel Shading, kemudian klik pada Map Input lalu
klik Sphe.
- Langkah selanjutnya adalah membuat background angkasa. Rasanya kurang jika hanya membuat replika planet Bumi tanpa adanya bintang-bintang. Caranya adalah klik World buttons pada panel Shading, lalu buat warnanya menjadi hitam.
- Gambarnya sudah hampir jadi, hanya saja masih agak kasar. Jadi saya akan membuatnya lebih halus dengan cara klik Editing panel lalu klik Set Smooth pada tab Links and Materials.
- Langkah terakhir adalah membuat tulisan UNIVERSITAS GUNADARMA. Caranya klik Add - Text. Untuk mengedit kata-kata maka kita tekan tombol Tab setelah itu kita bisa memasukkan kata/kalimat yang kita inginkan. Lalu untuk membuat tulisan menjadi lebih tebal maka kita atur pada bagian Extrude. Hasilnya akan tampak seperti ini
- Langkah terakhir adalah proses rendering. Klik Render - Render Current Frame. Hasilnya akan tampak seperti ini.
Shader Subsurface Scattering
Subsurface scattering (SSS)
adalah effek pantulan cahaya sekitar bawah permukaan material, dan umumnya
terdapat pada bahan seperti kulit, lilin, dan marmer. Hasil pada tepi
bayangan tampak agak kabur, karena
cahaya berdifusi keluar dari daerah terang ke area bayangan. Sebagai hamburan
cahaya, sebagian diserap, dengan cahaya yang tersisa biasanya mengambil warna
dari bahan yang mendasarinya. Dalam kasus kulit, daging dan darah dibawah kulit
menyebabkan persebaran cahaya yang muncul berwarna jingga merah
Menghubungkan Teks dengan Bayangan 3D
Sebelumnya, klik menu Layer > Rasterize
> Type. Selanjutnya gunakan Polygonal Lasso Tool (L) dan
hubungkanlah sudut setiap huruf dengan bayangan 3D, isilah area seleksi dengan
wrna merah tua (#990000) sehingga membentuk teks 3D berbentuk balok,
seperti yang ditunjukkan di bawah ini.
Menambahkan
Bayangan Pada Layer Teks
Sekarang kita telah mendapatkan teks 3D yang
diinginkan, untuk menambahkan efek bayangan, pastikan Anda masih berada pada
layer teks yang berwarna merah gelap, klik menu Layer > Layer
Style > Gradient Overlay, ikuti seting Gradient Overlay
serta Color Overlay seperti gambar di bawah ini.
Menambahkan Bayangan
Teks
Untuk menambahkan
bayangan di bawah teks, pergi ke layer teks warna merah terang, buat duplikat
layer dengan menekan tombol Cmd/Ctrl+J, selanjutnya isi layer baru
dengan warna hitam (#000000). Pindahkan layer ini tepat dibawah
layer teks yang berwarna merah gelap, gunakan Transform Tool (T) atau tekan Cmd/Ctrl+T,
tarik kotak Transform Tool ke atas, bawah, kiri atau kanan untuk mendapatkan
bayangan teks yang sesuai, seperti gambar di bawah.
Selanjutnya klik menu Layer
> Rasterize > Type, kemudian pilih menu Filter > Blur
> Motion Blur, ikuti gambar dibawah untuk mengatur blur bayangan
teks. Untuk mendapatkan bayangan yang lebih kuat, gandakan layer dengan
menekan tombol Cmd/Ctrl+J, kemudian gabungkan kedua layer ini dengan memilih
menu Layer > Merge Down.
Membuat Blur Shadow
Buat lagi duplikat layer untuk layer shadow,
selanjutnya gabungkan kedua layer ini dengan memilih menu Layer > Merge
Down, pilih menu Filter > Blur > Gaussian Blur
dan sesuaikan Radius ke 12.0
BAB 5
PENUTUP
5.1 PENUTUP
Demikian
materi yang dapat kami paparkan mengenai materi yang menjadi pokok bahasan dalam
penulisan makalah ini, tentunya masih banyak kekurangan dan kelemahan dalam
penulisan ini, dikarenakan kurangnya referensi atau rujukan tentang apa yang
menjadi judul dari makalah ini.
Penulis berharap dengan adanya
makalah ini, maka dapat membantu pembaca yang ingin membuat objek 3D dengan
bantuan metode shading atau sekedar menyalurkan kreatifitas.
Penulis juga berharap kepada para
pembaca agar memberi kritik dan saran yang membangun kepada penulis demi
sempurnanya makalah ini dan penulisan-penulisan selanjutnya. Penulis juga
mengharapkan kepada yang membaca makalah ini dapat termotivasi oleh makalah ini
dalam mencapai keinginannya dalam memajukan dunia animasi di Indonesia.
Sekian penutup dari kami, semoga
makalah ini berkenan di hati pembaca dan kami ucapkan terima kasih yang
sebesar-besarnya.
5.2 KESIMPULAN
Berdasarkan
penulisan tentang shading modeling diatas, maka dapat ditarik beberapa
kesimpulan sebagai berikut:
- Shading merupakan proses untuk membuat suatu objek yang kita buat terlihat lebih hidup.
- Metode shading dapat digunakan pada aplikasi yang berorientasi pada pembuatan objek-objek 3D.
- Shading dibagi menjadi beberapa ragam, seperti flat shading, phong shading, gouraud shading dan blinn shading.
- shading mengacu pada proses mengubah warna berdasarkan sudut terhadap cahaya dan jarak dari cahaya untuk menciptakan efek photorealistic.
- Model shading menentukan bagaimana suatu permukaan objek muncul dalam kondisi pencahayaan yang berbeda-beda.
- Model 3D adalah perwakilan dari setiap objek tiga dimensi (nyata atau bayangan) dalam lingkungan perangkat lunak 3D.
5.3 SARAN
Berdasarkan kesimpulan diatas, adapun
saran yang dapat penulis sampaikan adalah sebagai berikut:
- Perlu adanya ilmu lebih lanjut yang mempelajari tentang model shading.
- Perlu ditingkatkan lagi pengajaran pada bidang ini, agar kita dapat memajukan animasi Indonesia.
- Perlu adanya aplikasi-aplikasi yang dapat membantu lebih lanjut dalam pembuatan objek berorientasi 3D dengan metode shading.
- Adanya aplikasi yang compatible dengan hampir semua perangkat.
DAFTAR PUSTAKA
Tidak ada komentar:
Posting Komentar