Tentang Shading Modelling Bab 2 Desain Pemodelan Grafik lanjutan.
Tugas Softskill
BABII
KONSEPDAN TEORI PADA SHADING MODELLING
Shading mengacu pada penggambarankedalaman suatu objek dalam contoh 3D atau gambaran menggunakan mengubah-ubahtingkat menurut kegelapan suatu object(darkness).
Menggambar Shading merupakan suatuproses yang digunakan dalam menggambar menggunakan tingkat darkness tertentu padasebuah kertas dengan memakai media yang lebih padat atau menampilkan bayanganyang lebih gelap buat area yg lebih gelap dan memakai media yang tidakterlalu padat atau menampilkan bayangan yg lebih terang untuk area yang lebihterang. Ada aneka macam macam teknik shading, misalnya cross hatching dimanagaris-garis tegak lurus menggunakan jarak satu sama lain (kedekatan) yangberbeda-beda digambar dalam pola grid buat membangun bayangan area. Semakindekat garis-garis tersebut, semakin gelap area yg ada. Begitu pulasebaliknya, semakin jauh garis-garis tersebut, semakin terang area yg muncul.
Pola-pola yg terperinci (contohnya objekyang mempunyai area jelas dan area berbayang) akan sangat membantu dalampembuatan ilusi kedalaman pada kertas serta layar komputer.
Komputergrafis
Pada komputer grafis, shading mengacu dalam prosesmengubah rona berdasarkan sudut terhadap cahaya dan jeda berdasarkan cahaya untukmenciptakan efek photorealistic. Shading dilakukan selama proses penggambaran.
Sudutterhadap sumber cahaya
Shading membarui rona tampilan dalammodel 3D dari sudut permukaan terhadap cahaya mentari atau sumbercahaya lainnya.
Gambar pertama di bawah ini menunjukkanpermukaan-bagian atas kotak yang digambar dimana semuanya mempunyai warna yangsama. Garis tepi telah digambar sehingga memudahkan gambar dicermati dandibedakan.
Gambar ke 2 adalah contoh yangsama, tetapi nir mempunyai garis tepi. Sangat sulit membedakan bagian atas kotakyang satu dengan yang lainnya.
Gambar ketiga memiliki shading dimanamembuat gambar menjadi lebih realistis serta lebih mudah dilihat dan dibedakan.
Sumbercahaya
Ada banyak sekali jenis cahaya:
• Ambientlight – Ambient light menyinari seluruh objek pada suatu scene secara merata,menciptakan objek menjadi terang tanpa menambahkan bayangan.
• Directionallight – Directional light menyinari seluruh objek secara merata dari suatu arahtertentu. Ia bagaikan suatu area terperinci menggunakan ukuran serta jeda yg tidakterbatas berdasarkan scene. Ada bayangan, namun itu bukan adalah distance falloff.
• Pointlight – Point light asal dari satu titik dan menyebar pada banyak sekali arah.
• Spotlight– Spotlight dari menurut satu titik dan menyebar mengikuti arah kerucut.
• Arealight – Area light asal menurut satu bidang datar dan menyinari semua objekdalam arah tertentu yang berasal menurut bidang datar tadi.
• Volumelight – Volume light adalah suatu ruang tertutup yg menyinari objek dalamruang tersebut.
Shading diinterpolasikan berdasarkanbagaimana sudut berdasarkan sumber cahaya mencapai objek pada suatu scene. Tentu sajasumber-asal cahaya tadi mungkin serta sering dikombinasikan dalamsebuah scene. Pelukis atau ilustrator kemudian menginterpolasikan bagaimanacahaya-cahaya ini dikombinasikan dan memproduksi gambar 2D yg akanditampilkan pada layar.
Distancefall off
Secara teoritis, 2 permukaanparalel disinari jumlah cahaya yg sama dari sumber cahaya yg jauh, sepertimatahari. Walaupun permukaan yang satu jauh, mata kita melihat permukaantersebut lebih banyak di ruang yg sama sebagai akibatnya penyinarannya tampak sama.
Perhatikan gambar pertama dimanawarna dalam bagian atas depan menurut ke 2 kotak benar-sahih sama. Tampaknya adasedikit disparitas waktu ke 2 permukaan tersebut bertemu, namun ini merupakanilusi optikal yg ditimbulkan sang garis tepi vertikal pada bawah dimana keduapermukaan ini bertemu.
Perhatikan gambar ke 2 dimanapermukaan kotak tampak lebih jelas pada bagian depan serta tampak lebih gelappada bagian belakang. Selain itu, bagian atas lantai juga tampak semakin gelapseiring makin jauhnya jeda.
Efek distance falloff menciptakan gambartampak lebih realistis tanpa wajib menambahkan cahaya tambahan untukmenimbulkan imbas yang sama. Distance falloff bisa dihitung dalam beberapacara:
• Tidakada
• Linier– Untuk setiap unit x jarak suatu titik dari sumber cahaya, jumlah cahaya yangditerima adalah unit x dikurangi bright.
• Kuadratik– Ini memperlihatkan bagaimana cahaya kira-kira bekerja pada kehidupan konkret. Suatutitik yg 2 kali jauhnya menurut asal cahaya dibandingkan titik lainnya akanmenerima cahaya empat kali lebih sedikit.
• Faktorn – Suatu titik yg jaraknya sebesar unit x dari suatu asal cahaya akanmenerima cahaya sebesar 1/xn.
• Fungsimatematis lainnya juga bisa dipakai.
Flatvs smooth shading
Flat shading adalah teknikpencahayaan yg digunakan dalam personal komputer grafis 3D. Ia menciptakan bayangansetiap polygon dari suatu objek berdasarkan sudut antara permukaan normalpolygon serta arah dari sumber cahaya, rona-warna respective, serta intensitassumber cahaya. Ini digunakan pada pembuatan gambar menggunakan kecepatan tinggidimana menggunakan teknik-teknik shading yg lebih sulit dan secaraperhitungan lebih mahal. Akan namun, di akhir abad ke-20, kartu grafis yangterjangkau memberikan smooth shading yg dapat dipakai pada prosespenggambaran cepat, menciptakan flat shading nir diharapkan lagi.
Kekurangan dari flat shading adalahia memberikan tampilan model yg low-polygon. Terkadang tampilan ini bisa menguntungkan pula, misalnya dalam membuatmodel objek berbentuk kotak. Pelukis terkadang menggunakan flat shading untukmelihat polygon berdasarkan contoh padat yang mereka ciptakan. Teknik-teknikpencahayaan dan shading lanjutan serta lebih realistis mencakup Gourad shadingdan Phong shading.
ModelShading
Model shadingmenentukan bagaimana suatu bagian atas objek timbul pada syarat pencahayaanyang berbeda-beda. Beberapa model matematis bisa digunakan buat menghitung shading.setiap contoh shading memproses rekanan berdasarkan permukaan normal terhadap sumbercahaya buat membentuk impak shading tertentu.
Phong
Menggunakan warna-warna ambient,diffuse, dan specular. Model shading ini membaca orientasi permukaan normal danmenginterpolasikannya buat membentuk tampilan smooth shading. Ia jugamemproses relasi antara normal, cahaya, dan sudut pandang kamera untukmenciptakan specular highlight.
Hasilnya adalah suatu objek denganbayangan smooth, bagian atas area yang disinari diffuse serta ambient, serta suatuspecular highlight sebagai akibatnya objek tampak bersinar misalnya bola biliar atau bolaplastik. Pemantulan, transparansi, refraksi, dan tekstur bisa diterapkan padaobjek yang menggunakan Phongshader.
Lambert
Menggunakan rona-rona ambient dandiffuse buat menciptakan bagian atas matte tanpa specular highlight. Iamenginterpolasikan normal berdasarkan bagian atas segitiga yg berdampingan sehinggashading berubah secara progresif, membangun suatu bagian atas matte.
Hasilnya adalah suatu objek dengansmooth shading, seperti telur atau bola ping-pong. Pemantulan, transparansi,refraksi, dan tekstur bisa diterapkan pada objek yg menggunakan Lambertshader.
Blinn
Menggunakan rona-warna diffuse,ambient, serta specular, dan refractive index buat menghitung specularhighlight. Model shading ini identik dengan contoh shading Phong, kecuali bentukspecular highlight-nya merefleksikan pencahayaan lebih akurat ketika terdapat suduttinggi antara kamera dan cahaya.
Model shading ini bermanfaat untuktepian yang kasar atau tajam dan buat mensimulasikan bagian atas logam. Specularhighlight-nya tampak lebih jelas dibandingkan contoh Phong. Pemantulan,transparansi, refraksi, serta tekstur dapat diterapkan pada objek yangmenggunakan Blinnshader.
Cook-Torrance
Menggunakan warna-rona diffuse,ambient, serta specular, dan refractive index buat menghitung specularhighlight. Ia membaca orientasi bagian atas normal serta menginterpolasikannyauntuk membangun tampilan smooth shading. Ia juga memproses relasi antaranormal, cahaya, serta sudut pandang kamera buat menciptakan specular highlight.
Model shading ini memproduksi hasilyang berada diantara contoh shading Blinn serta Lambert, serta bermanfaat untukmensimulasikan objek yg lembut dan reflektif misalnya kulit. Pemantulan,transparansi, refraksi, serta tekstur dapat diterapkan pada objek yangmenggunakan Cook-Torrance shader.
Karena contoh shading ini lebihkompleks buat dihitung, ia memakan ketika lebih usang pada deskripsi daripadamodel shading lainnya.
// Copyright (c) 2018 PIXAR. All rights reserved. This acara or
// documentation contains proprietaryconfidential information and trade
// secrets of PIXAR. Reverse engineering of object code isprohibited.
// Use of copyright notice isprecautionary and does not imply
// publication.
//
// RESTRICTED RIGHTS NOTICE
//
// Use, duplication, or disclosure by theGovernment is subject to the
// following restrictions: For civilianagencies, subparagraphs (a) through
// (d) of the Commercial ComputerSoftware--Restricted Rights clause at
// 52.227-19 of the FAR; and, for units ofthe Department of Defense, DoD
// Supplement to the FAR, clause52.227-7013 (c)(1)(ii), Rights in
// Technical Data and Computer Software.
//
// Pixar Animation Studios
// 1200 Park Avenue
// Emeryville, CA 94608
//
//------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------//
// SCRIPT: CookTorrance.sl
// AUTHOR: Scott Eaton
// DATE: July 3, 2018
//
// DESCRIPTION:A simple implementation of the Cook-Torrance
// shading model describe in:
// A Reflectance Model for Computer Graphics
// R. L. Cook, K. E. Torrance, ACM Transactions on Graphics 1982
//
//------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------//
surfaceCookTorrance(
floatKa = 1;
float Ks = .8;
floatKd = .8;
float IOR = 1.3;
float roughness = .2;
color opacity = 1;
colorspecularColor = 1;
colordiffuseColor = (.6, .6, .6);
floatgaussConstant = 100;
){
//the things we need:
// normalized normal and vector to eye
normalNn = normalize(N);
vectorVn = normalize(-I);
float F, Ktransmit;
float m = roughness;
fresnel( normalize(I), Nn, 1/IOR, F,Ktransmit);
color cook = 0;
floatNdotV = Nn.vn;
illuminance( P, Nn, PI/2 )
//half angle vector
vector Ln = normalize(L);
vector H = normalize(Vn+Ln);
floatNdotH = Nn.H;
floatNdotL = Nn.ln;
floatVdotH = Vn.H;
float D;
float alpha = acos(NdotH);
//microfacet distribution
D =gaussConstant*exp(-(alpha*alpha)/(m*m));
//geometric attenuation factor
float G = min(1,min((dua*NdotH*NdotV/VdotH), (dua*NdotH*NdotL/VdotH)));
//sum contributions
cook += Cl*(F*D*G)/(PI*NdotV);
cook = cook/PI;
Oi = opacity;
Ci = (Kd*diffuseColor*diffuse(Nn)+Ks*specularColor*cook)* Oi;
}
Strauss
Hanya menggunakan rona-warna diffuseuntuk mensimulasikan suatu bagian atas logam. Surface’s specular dikaitkan denganparameter smoothness serta “metalness” yang mengontrol rona-warna diffuseberdasarkan specular ratio misalnya pemantulan serta highlight.
Pemantulan, transparansi, refraksi, dan teksturdapat diterapkan pada objek yang memakai Strauss shader.
Anisotropic
Terkadang diklaim juga ward. Modelshading ini mensimulasikan permukaan glossy menggunakan memakai warna-warnaambient, diffuse, dan glossy. Untuk membangun efek “digosok” sepertialuminium yg diamplas, bisa menggunakan orientasi specular color berdasarkanorientasi permukaan objek. Specular dihitung menggunakan koordinat UV.
Pemantulan, transparansi, refraksi, dantekstur dapat diterapkan dalam objek yg menggunakan anisotropic shader.
Constant
Hanya memakai rona-warnadiffuse. Ia mengabaikan orientasi bagian atas normal. Semua bagian atas segitigaobjek dipercaya memiliki orientasi yg sama dan mempunyai jarak yang sama daricahaya.
Ia membentuk suatu objek yangpermukaannya nir terdapat shading, tampak misalnya suatu potongan kertas. Iniberguna apabila kita ingin menambahkan static blur dalam suatu objek sehingga tidakada cahaya specular atau ambient. Ia pula mendukung tekstur karena tidak adaatribut yg mengganggu definisi tekstur.
Model shading Blinn–Phong (disebutjuga model pemantulan Blinn–Phong atau model pemantulan Phong termodifikasi)adalah suatu modifikasi berdasarkan model pemantulan Phong yg dikembangkan olehJim Blinn.
Blinn-Phong merupakan model shadingdefault yg dipakai di OpenGL serta Direct3D fixed-function pipeline (sebelumDirect 3D 10 dan OpenGL tiga.1), dan dipakai pada setiap vertex selagi iamelewati pipa grafis; nilai piksel antara diantara vertice diinterpolasikanoleh Gouraud shading by default, daripada memakai Phong shading yg lebihmahal.
Dalam Phong shading, secara kontinuharus menghitung ulang produk skalar diantara viewer (V) serta sinar menurut asal cahaya (L) reflected (R) padasuatu permukaan.
Jika kita menghitung halfway vector antara vectorviewer serta sumber cahaya,
Kita bisa mengubah menggunakan dimana merupakan bagian atas normalyang telah dinormalisasikan. Padapersamaan pada atas, serta adalah vector yg telah dinormalisasikan,dan adalah solusi terhadappersamaan dimana merupakan matriks Householder yg merefleksikansuatu titik di hyperplane yg memiliki origin dan mempunyai normal.
Produk dot ini merepresentasikancosinus berdasarkan suatu sudut yang adalah 1/2 berdasarkan sudut yangdirepresentasikan sang produk dot Phong apabila V, L, N, dan R semuanya berada dibidang datar yg sama. Relasi antara sudut-sudut tersebut diperkirakan benarjika vektor-vektor tidak berada di bidang datar yg sama, terutama ketikasudut-sudutnya mini . Oleh karenanya, sudut antara N serta H terkadang disebuthalfway angle.
Dengan pertimbangan bahwa sudutantara halfway vector serta permukaan normal kemungkinan lebih mini daripadasudut antara R serta V yang dipakai dalam model Phong (kecuali permukaanditampilkan berdasarkan sudut yg sangat curam atau bersudut akbar) serta karena Phongmenggunakan eksponen ditetapkan seperti yg lebih mendekati expression sebelumnya.
Untuk permukaan front-lit (pemantulanspecular dalam permukaan berhadapan menggunakan viewer), akan membentuk specular highlight yangsangat dekat kecocokannya menggunakan pemantulan Phong. Namun demikian, pada saatpemantulan Phong selalu bulat buat permukaan datar, pemantulan Blinn-Phongmenjadi elips waktu bagian atas ditinjau berdasarkan sudut yang curam. Ini dapatdibandingkan terhadap kasus dimana mentari dipantulkan di bagian atas bahari yangdekat dengan horizon atau saat lampu lalu lintas yg sangat jauh dipantulkandi trotoar yg basah dimana pantulannya akan selalu tersebar lebih vertikaldari pada horizontal.
Walaupun contoh Blinn-Phong menyerupaimodel Phong, dia membentuk contoh yg lebih seksama secara empiris dari fungsibidirectional reflectance distribution. (lihat: Experimental Validation of AnalyticalBRDF Models, Siggraph 2018).
Dalam banyak masalah, model pelukisanini kurang efisien dibandingkan Phong shading lantaran terdapat perhitungan kuadratdan akar. Apabila contoh Phong original hanya memerlukan pemantulan vektor yangsimple, bentuk modifikasi ini memerlukan lebih poly perhitungan. Namundemikian, karena poly CPU dan GPU telah memiliki fungsi kuadrat serta akar yanglebih akurat (menjadi fitur baku), serta instruksi lain yang dapatmempercepat proses pelukisan, perkara ketika telah tidak terlalu dipermasalahkanlagi.
Model Blinn-Phong akan lebih cepatdigunakan pada masalah dimana viewer serta cahaya tidak memiliki keterbatasan. Iniadalah model masalah untuk directional light. Dalam masalah ini, half-angle vectorbebas berada pada posisi dan permukaan apapun. Vektor dapat dihitung satu kaliuntuk setiap cahaya, lalu digunakan buat holistik frame atau ketikacahaya serta sudut pandang nisbi tetap berada di posisi yang sama. Hal initidak berlaku bagi vektor cahaya dipantulkan pada contoh Phong dimana ia vektorbergantung pada homogen tidaknya bagian atas dan wajib dihitung ulang buat setiappiksel gambar (atau buat setiap vertex contoh pada kasus pencahayaan vertex).
Pada kasus dimana cahaya terbatas,misalnya waktu menggunakan point light, contoh Phong original akan lebih cepatdigunakan.
Sampel pada bawah ini dalam High LevelShader Language merupakan suatu metode penentuan cahaya diffuse dan speculardari suatu point light. Struktur cahaya, posisi dalam ruang dalam suatupermukaan, tampilan arah vektor dan permukaan normal adalah faktor penentu.
A Lighting structure is returned;
struct Lighting
{
float3 Diffuse;
float3 Specular;
};
structPointLight
{
float3 position;
float3diffuseColor;
floatdiffusePower;
float3specularColor;
floatspecularPower;
};
Lighting GetPointLight(PointLight light,float3 pos3D, float3 viewDir, float3 normal )
{
Lighting OUT;
if(light.diffusePower>0)
{
float3lightDir=light.position- pos3D;//3Dposition in space of the surface
float distance = length(lightDir);
lightDir=lightDir/ distance;// =normalize( lightDir );
distance= distance * distance;//This linemay be optimised using Inverse square root
//Intensity of the diffuse light. Saturateto keep within the 0-1 range.
floatNdotL= dot( normal,lightDir);
float intensity = saturate(NdotL);
// Calculate the diffuse light factoringin light color, power and the attenuation
OUT.diffuse= intensity*light.diffuseColor*light.diffusePower/ distance;
//Calculate the half vector between thelight vector and the view vector.
//This is faster than calculating theactual reflective vector.
float3 H = normalize(lightDir+viewDir);
//Intensity of the specular light
floatNdotH= dot( normal, H );
intensity=pow(saturate(NdotH),specularHardness);
//Sum up the specular light factoring
OUT.specular= intensity*light.specularColor*light.specularPower/ distance;
}
return OUT;
}