Bagaimana berbasis fisik perbedaan difus dan specular?


34

Cara klasik peneduhan permukaan dalam grafik komputer waktu-nyata adalah kombinasi istilah difusi (Lambertian) dan istilah specular, kemungkinan besar Phong atau Blinn-Phong.

Gambar dari Wikipedia

Sekarang dengan tren menuju rendering berbasis fisik dan dengan demikian model material dalam mesin seperti Frostbite , Unreal Engine atau Unity 3D , BRDF ini telah berubah. Sebagai contoh (yang cukup universal pada saat itu), Unreal Engine terbaru masih menggunakan Lambertian difuse, tetapi dalam kombinasi dengan model mikrofaket Cook-Torrance untuk refleksi specular (khususnya menggunakan GGX / Trowbridge-Reitz dan pendekatan Slick yang dimodifikasi untuk istilah Fresnel ). Selain itu, nilai 'Metalness' digunakan untuk membedakan antara konduktor dan dielektrik.

Untuk dielektrik, difus diwarnai menggunakan albedo material, sedangkan specular selalu tidak berwarna. Untuk logam, difus tidak digunakan dan istilah specular dikalikan dengan albedo material.

Mengenai materi fisik dunia nyata, apakah pemisahan ketat antara difus dan specular ada dan jika demikian, dari mana asalnya? Mengapa satu berwarna sedangkan yang lainnya tidak? Mengapa konduktor berperilaku berbeda?

Jawaban:


30

Untuk memulai, saya sangat menyarankan membaca presentasi Siggraph Naty Hoffman yang meliputi fisika rendering. Yang mengatakan, saya akan mencoba menjawab pertanyaan spesifik Anda, meminjam gambar dari presentasinya.

Melihat satu partikel cahaya yang mengenai titik pada permukaan material, ia dapat melakukan 2 hal: memantulkan, atau membiaskan. Cahaya yang dipantulkan akan terpental menjauh dari permukaan, mirip dengan cermin. Cahaya yang memantul memantul ke dalam di dalam material, dan mungkin keluar dari material agak jauh dari tempat ia masuk. Akhirnya, setiap kali cahaya berinteraksi dengan molekul material, ia kehilangan sejumlah energi. Jika ia kehilangan cukup energinya, kami menganggapnya sepenuhnya diserap.

Mengutip Naty, "Cahaya terdiri dari gelombang elektromagnetik. Jadi, sifat-sifat optik suatu zat sangat terkait dengan sifat listriknya." Inilah sebabnya kami mengelompokkan bahan sebagai logam atau non-logam.

Non logam akan menunjukkan refleksi dan refraksi. Non-Logam

Bahan logam hanya memiliki pantulan. Semua cahaya yang dibiaskan diserap. Logam

Akan sangat mahal untuk mencoba memodelkan interaksi partikel cahaya dengan molekul material. Kami sebaliknya, membuat beberapa asumsi dan penyederhanaan.

Penyederhanaan refraksi

Jika ukuran piksel atau area bayangan lebih besar dibandingkan dengan jarak masuk-keluar, kita dapat membuat asumsi bahwa jarak efektif nol. Untuk kenyamanan, kami membagi interaksi cahaya menjadi dua istilah yang berbeda. Kami menyebut istilah refleksi permukaan "specular" dan istilah yang dihasilkan dari refraksi, penyerapan, hamburan, dan refraksi ulang yang kami sebut "difus". Membagi menjadi menyebar dan specular

Namun, ini asumsi yang cukup besar. Untuk sebagian besar bahan buram, asumsi ini baik-baik saja dan tidak berbeda jauh dari kehidupan nyata. Namun, untuk bahan dengan segala jenis transparansi, anggapan itu gagal. Misalnya, susu, kulit, sabun, dll.

Warna yang diamati material adalah cahaya yang tidak diserap. Ini adalah kombinasi dari kedua cahaya yang dipantulkan, serta cahaya yang dibiaskan yang keluar dari material. Misalnya, bahan hijau murni akan menyerap semua cahaya yang bukan hijau, jadi satu-satunya cahaya yang sampai ke mata kita adalah lampu hijau.

Oleh karena itu seorang seniman memodelkan warna suatu material dengan memberi kita fungsi atenuasi untuk material tersebut, yaitu bagaimana cahaya akan diserap oleh material tersebut. Dalam model difus / specular kami yang disederhanakan, ini dapat diwakili oleh dua warna, warna difus, dan warna specular. Kembali sebelum bahan berbasis fisik digunakan, artis akan secara sewenang-wenang memilih masing-masing warna ini. Namun, harus jelas bahwa kedua warna ini harus terkait. Di sinilah warna albedo masuk. Misalnya, di UE4, mereka menghitung warna difus dan specular sebagai berikut:

DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)

di mana Metallic adalah 0 untuk non-logam dan 1 untuk logam. Parameter 'Specular' mengontrol specularity suatu objek (tetapi biasanya 0,5 untuk 99% material)


1
Mengapa sinar datang pecah setelah refleksi / pembiasan? Jika cahaya adalah sebuah partikel, apakah itu berarti bahwa partikel ini terbelah secara rekursif? Dan jika cahaya adalah gelombang apakah itu berarti terbelah oleh frekuensi (tetapi dalam kasus ini mengapa terbelah setelah hit kedua / ketiga / etc)?
nikitablack

5
Partikel tidak terpecah. Sebaliknya, gambar menunjukkan jalur potensial yang bisa diambil.
RichieSams

2
Banyak partikel akan mengenai titik yang hampir sama dari sudut yang hampir sama. Untuk setiap partikel yang keluar ada (biasanya) sebuah partikel yang masuk. Itu berarti bahwa rata-rata berkas partikel dari sudut tertentu di tempat tertentu akan terpecah dalam beberapa (banyak) refleksi.
ratchet freak

1
Jawaban yang bagus menjelaskan sebagian besar pertanyaan saya. Mengapa bagian specular dari non-logam tidak berwarna dan tidak terpengaruh oleh albedo? Bagaimana dan di mana polarisasi berperan?
David Kuri

1
"Warna yang diamati material adalah cahaya yang tidak diserap." Pada titik ini mungkin ada baiknya merujuk pada Apakah ada bahan umum yang tidak terwakili dengan baik oleh RGB? diskusi, saat bahan-bahan neon muncul dalam pikiran.
Simon F

23

Saya sebenarnya bertanya-tanya tentang hal ini beberapa hari yang lalu. Tidak menemukan sumber daya dalam komunitas grafis, saya benar-benar berjalan ke departemen Fisika di universitas saya dan bertanya .

Ternyata ada banyak kebohongan yang kami yakini oleh orang-orang.


Pertama, ketika cahaya menyentuh permukaan, persamaan Fresnel berlaku. Proporsi cahaya yang dipantulkan / dibiaskan tergantung padanya. Anda mungkin tahu ini.

Tidak ada yang namanya "warna specular"

Apa yang Anda mungkin tidak tahu adalah bahwa persamaan Fresnel bervariasi berdasarkan panjang gelombang, karena indeks bias bervariasi berdasarkan pada panjang gelombang. Variasi ini relatif kecil untuk dielektrik (dispersi, siapa?), Tetapi bisa sangat besar untuk logam (saya kira ini ada hubungannya dengan struktur listrik yang berbeda dari bahan-bahan ini).

Oleh karena itu, istilah refleksi Fresnel bervariasi berdasarkan panjang gelombang, dan oleh karena itu panjang gelombang yang berbeda tercermin secara istimewa . Terlihat di bawah iluminasi spektrum luas, inilah yang menyebabkan warna specular. Tetapi secara khusus, tidak ada penyerapan yang secara ajaib terjadi di permukaan (warna lain hanya dibiaskan).

Tidak ada yang namanya "refleksi difus"

Seperti yang dikatakan Naty Hoffman dalam pembicaraan yang dikaitkan dengan jawaban yang lain, ini benar-benar merupakan perkiraan untuk hamburan permukaan bawah yang tersebar.

Logam DO mentransmisikan cahaya

Naty Hoffman salah (lebih tepatnya, menyederhanakan). Cahaya tidak tidak bisa segera diserap oleh logam. Bahkan, ia akan melewati material yang cukup tebal setebal beberapa nanometer. (Misalnya, untuk emas, dibutuhkan 11.6633nm untuk menipiskan cahaya 587.6nm (kuning) setengahnya.)

Penyerapan, seperti dalam dielektrik, disebabkan oleh Hukum Beer-Lambert. Untuk logam, koefisien absorpsi hanya jauh lebih besar (α = 4πκ / λ, di mana κ adalah komponen imajiner dari indeks bias (untuk logam ~ 0,5 ke atas), dan λ diberikan dalam meter ).

Transmisi ini (atau lebih tepatnya SSS yang dihasilkannya) sebenarnya bertanggung jawab atas sebagian besar warna logam (walaupun memang benar bahwa penampilan logam didominasi oleh specularnya).


3
Terima kasih! Saya hanya tahu penyederhanaannya. Detail tambahan ini luar biasa
RichieSams

1
Ini jawaban yang menarik. Bisakah Anda menjelaskan / menautkan akronim SSS?
trichoplax

@trichoplax Terima kasih! SSS == hamburan sub-permukaan.
imallett

Terima kasih :) Jika Anda mengklarifikasi dalam pertanyaan, itu akan bertahan penghapusan komentar (yang tidak dijamin berumur panjang). Saya telah mengedit dalam tautan dan mengarahkan teks yang mudah-mudahan membiarkan presentasi yang Anda inginkan utuh.
trichoplax

2
Sementara saya sangat menghargai kesedihan dari jawaban ini. Hamburan sub permukaan dianggap sebagai efek skala mm sementara itu benar bahwa pada rentang molekul semuanya melewati permukaan sampai tingkat tertentu. Tetapi kendala dasarnya adalah bahwa kita umumnya menghitung efek skala mm dan mencoba untuk abstrak tingkat yang lebih rendah sebagai model statistik. Karenanya mikrometer sama dengan segera karena sebagian besar piksel melihat area yang jauh lebih besar dari ini. Hal yang sama berlaku untuk warna yang tidak ada secara berarti dalam fisika dengan cara yang sama seperti yang dilakukan mata dan otak kita
joojaa
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.