Pencahayaan harmonik bola - apa fungsinya?

8

Dari pemahaman saya, harmonik bola terkadang digunakan untuk memperkirakan aspek pencahayaan tertentu (tergantung pada aplikasinya).

Misalnya, sepertinya Anda dapat memperkirakan penyebab pencahayaan difus dengan sumber cahaya arah pada titik permukaan, atau bagian-bagiannya, dengan menghitung koefisien SH untuk semua pita yang Anda gunakan (untuk akurasi apa pun yang Anda inginkan) ke arah tersebut. permukaan normal dan penskalaan dengan apa pun yang Anda butuhkan untuk skala dengan (misalnya intensitas warna terang, titik (n, l), dll.).

Yang belum saya pahami adalah apa yang seharusnya dicapai. Apa keuntungan sebenarnya dari melakukannya dengan cara ini dibandingkan dengan mengevaluasi BRDF difus dengan cara normal. Apakah Anda menyimpan perhitungan di suatu tempat? Apakah ada beberapa informasi tambahan yang terkandung dalam representasi SH yang Anda tidak bisa dapatkan dari hasil skalar dari evaluasi normal?

TravisG
sumber
jika Anda pikir ada sesuatu yang tidak Anda sukai dengan jawaban, mungkin saya bisa menguraikannya?
concept3d

Jawaban:

10

Alasan untuk menggunakan harmonik bola adalah untuk memperkirakan distribusi cahaya yang masuk di sekitar suatu titik — biasanya cahaya tidak langsung yang dihitung oleh beberapa algoritma iluminasi global. Kemudian BRDF juga diperkirakan dengan harmonik bola, untuk memungkinkan secara efisien menghitung cahaya keluar yang dilihat oleh penonton, dengan mengambil produk titik dari koefisien SH cahaya yang masuk dengan koefisien SH BRDF. Ini mendekati konvolusi cahaya yang masuk dengan BRDF, seperti yang terlihat dalam persamaan rendering.

Jika Anda hanya ingin menerima cahaya dari sumber titik, Anda tidak perlu SH. Lampu point lebih akurat ditangani dengan hanya mengevaluasi BRDF secara langsung. Juga, jika Anda memiliki lingkungan tetap (langit dll.) Yang Anda inginkan untuk menerima cahaya, Anda dapat membuat cubemaps offline yang sudah terkonvolusi (menggunakan CubeMapGen misalnya) yang melakukan pekerjaan yang cukup baik dalam memperkirakan konvolusi peta lingkungan dengan BRDF. Tidak perlu untuk SH di sini juga.

Di mana SH benar-benar berguna adalah ketika Anda memiliki pemandangan yang kompleks dan Anda menginginkan pencahayaan tidak langsung, yaitu pencahayaan bouncing. Dalam hal ini distribusi cahaya bervariasi dari satu tempat ke tempat lain. Pada prinsipnya, setiap titik individu dalam pemandangan memiliki lingkungan pencahayaan yang berbeda berdasarkan lingkungannya. Dalam praktiknya, kami mengambil sampel pencahayaan pada titik-titik diskrit menggunakan beberapa algoritma penerangan global. Ada banyak cara untuk melakukannya - Anda dapat mencicipi pencahayaan di setiap titik permukaan, misalnya, atau di setiap texel dari peta cahaya. Atau buat representasi volumetrik menggunakan kisi, atau jaring tetrahedral .

Intinya adalah, ada sejumlah besar titik di mana pencahayaan sampel, dan karenanya kita membutuhkan representasi pencahayaan yang fleksibel namun sangat kompak di sekitar titik, untuk menghindari konsumsi terlalu banyak memori. SH mengisi peran ini dengan baik. Ini juga memiliki properti praktis yang berfungsi baik dengan interpolasi, yaitu koefisien SH dapat diinterpolasi dari satu titik sampel ke titik lainnya dan pencahayaan di antaranya akan berperilaku wajar. Dan karena menangkap distribusi sudut keseluruhan cahaya yang masuk, bukan hanya cahaya dari satu arah, Anda dapat menggunakannya dengan permukaan yang dipetakan normal dan mendapatkan hasil yang cukup bagus.

Perlu dicatat, bahwa SH benar-benar hanya berguna untuk pencahayaan difus. Kecuali jika Anda menggunakan jumlah koefisien SH yang benar-benar gila, itu akan mengaburkan distribusi sudut cahaya yang masuk terlalu banyak. Untuk penerangan tidak langsung specular berkualitas tinggi, diperlukan hal lain, seperti cubemaps yang dikoreksi paralaks dan / atau raytracing ruang layar.

Nathan Reed
sumber
> Intinya adalah, ada sejumlah besar titik di mana pencahayaan sampel, dan karenanya kita membutuhkan representasi pencahayaan yang fleksibel namun sangat kompak di sekitar titik, untuk menghindari konsumsi terlalu banyak memori. SH mengisi peran ini dengan baik <Inilah yang membingungkan saya. Tampak bagi saya bahwa Anda dapat mewakili cahaya di sekitar titik (ini adalah radiasi, bukan?) Sama seperti representasi intensitas normal, dan Anda memerlukan lebih sedikit memori untuk itu juga karena bahkan hanya 2 band SH menggunakan 4 koefisien per warna sedangkan intensitas hanya 3 total.
TravisG
Nah, mari kita ambil contoh spesifik: Apakah Anda kebetulan akrab dengan algoritma Volume Propagasi Cahaya yang digunakan dalam Cryengine 3? Saya bertanya-tanya mengapa itu tidak praktis untuk mewakili pencahayaan di LPV hanya sebagai intensitas.
TravisG
@ TravisG Ini bukan hanya nilai intensitas RGB tunggal karena jumlah cahaya yang berbeda berasal dari arah yang berbeda. Idenya adalah untuk mewakili distribusi sudut dari cahaya yang masuk, bukan hanya cahaya dari satu arah tertentu, atau rata-rata dari semua arah. Pertimbangkan jika Anda memiliki lampu hijau di sebelah kiri dan lampu merah di sebelah kanan. Permukaan yang dipetakan secara normal harus memantulkan warna hijau di mana normals menunjuk ke kiri, dan merah di mana mereka menunjuk ke kanan. Intensitas RGB tunggal tidak dapat mewakili situasi ini, tetapi basis SH 2- atau 3-band dapat.
Nathan Reed
@ TravisG Demikian juga dengan LPV, Anda perlu melacak arah di mana cahaya merambat. Itu tidak hanya menyebar ke segala arah (kecuali itu tersebar oleh partikel di udara atau semacamnya); itu terus berjalan ke arah itu dipancarkan. Misalnya, satu simpul di LPV dapat berisi lampu merah yang bergerak ke kanan, dan lampu hijau yang bergerak ke kiri, pada saat yang sama. Jadi setiap node perlu melacak distribusi sudut cahaya yang melewatinya.
Nathan Reed
3

Apa yang saya belum mengerti adalah apa yang harus dicapai ini?

Jawaban singkat, perhitungan cahaya fisik yang lebih akurat. (Sehubungan dengan beberapa karakteristik interaksi permukaan cahaya).

Mengapa tidak mengevaluasi semuanya dengan BRDF difus dengan cara biasa?

Sayangnya masalahnya terletak pada definisi cara normal . Model refleksi phong "normal" telah dianut sejak lama oleh komunitas rendering waktu nyata dari awal dan telah menjadi standar de facto karena kesederhanaannya yang membuatnya sesuai untuk penggunaan rendering waktu nyata.

Masalahnya , interaksi cahaya / material kehidupan nyata begitu rumit sehingga tidak dapat benar-benar dimodelkan oleh BRDF tunggal.

BRDF adalah abstraksi bagaimana interaksi cahaya yang sebenarnya seharusnya terjadi. phong hanyalah salah satu dari banyak lainnya, yang memiliki keunggulan kesederhanaan.

Tapi apa keuntungan sebenarnya?

Dalam grafik komputer ada beberapa BRDF berbeda yang termasuk dalam dua kategori utama:

  1. Berdasarkan teori fisik.
  2. Dirancang agar sesuai dengan kelas tipe permukaan tertentu dan biasanya digunakan dalam rendering waktu nyata.

Berbicara tentang kategori kedua, masing-masing BRDF berusaha untuk mencapai karakteristik tertentu dengan interaksi permukaan cahaya. BRDF yang paling sederhana yang mungkin adalah Lambertian yang mencoba memodelkan hamburan bawah permukaan dan sering digunakan dalam grafik komputer, Nilai reflektansi konstan dari BRDF Lambertian biasanya disebut sebagai warna difus.

Dalam grafik komputer waktu nyata biasanya BRDF dipilih secara manual dan parameternya diatur untuk mencapai tampilan yang diinginkan (misalnya menggunakan Phong dengan nilai-nilai tertentu untuk memodelkan permukaan plastik atau krom).

Di sisi lain, kadang-kadang BRDF diukur langsung dari permukaan yang diinginkan (dan tidak diwakili oleh persamaan matematika). Ini memberi kami data yang jauh lebih akurat secara fisik tentang permukaan yang sulit untuk dilakukan secara analitis.

Salah satu metode agar sesuai dengan data yang ditangkap adalah memilih BRDF analitik dan memasukkan data ini ke dalamnya. Spherical Harmonics hanyalah teknik yang digunakan untuk mewakili jumlah yang diukur, dan menyesuaikannya menjadi model BRDF analitik.

Sumber daya terbaik untuk teori BRDF dapat ditemukan dalam rendering waktu nyata

  • 7.5 Teori BRDF.
  • Pada harmonik bola, revisi 7.7.2 Representasi untuk BRDF Terukur.
concept3d
sumber
Terima kasih atas jawabannya, tetapi sedikit melewatkan apa yang saya cari. Sejauh yang saya mengerti, Anda dapat memperkirakan fungsi apa saja f (x) menggunakan harmonik bola, dan untuk beberapa alasan orang memutuskan untuk memperkirakan bagian-bagian dari model pencahayaan menggunakan harmonik bola (apa yang sebenarnya tergantung pada aplikasi, tetapi misalnya istilah difusi lambertian adalah sesuatu yang sering saya temui). Saya bertanya-tanya mengapa demikian, menurut saya harmonik bola hanya merupakan representasi lossy yang mewakili data yang sama tetapi bahkan tidak memiliki keunggulan memori.
TravisG
Yah, itu tergantung apa yang Anda bandingkan. Jika Anda membandingkannya dengan model analitik, ini lebih terlibat dan mahal. Tetapi model analitik tidak memperhitungkan lingkungan setempat. Namun hari ini saya lebih sering melihat orang menggunakan peta kubus. Mereka mencapai hasil yang serupa dan memiliki dukungan perangkat keras yang lebih baik.
drxzcl