MOM(MINUTES OF MEETING) SOFTSKILL
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 gameHARVESTMOON 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 gameHARVESTMOON 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 tipescanline 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 Typemenjadi 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.
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.
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
wah informasi yang sangat bermanfaat kang, terima kasih atas ilmunya kang.. ^^
ReplyDelete