Що таке сферичні гармоніки та світлові зонди?


14

Що таке сферичні гармоніки та світлові зонди ? Наскільки вони корисні в комп'ютерній графіці? Що саме вони роблять? Я чув слова сферичних гармонік та легких зондів скрізь - від презентацій вивісок до публікацій блогу.

Нещодавно Метт Петтінео опублікував на них серію з 6 частин блогу, але я все ще не розумію, що вони є.

Це ще один спосіб покращити освітлення навколишнього середовища?

Відповіді:


11

Основи сферичної гармоніки

Сферична гармоніка - це спосіб зобразити 2D-функцію на поверхні кулі. Замість просторової області (як кубічна карта), SH визначається в частотній області з деякими цікавими властивостями та операціями, що стосуються освітлення, які можна виконувати ефективно. Зі збільшенням "порядку" SH ви можете представляти більш високі частоти (деталі) функцій, як показано на зображенні нижче ( - порядок SH). Шляхом масштабування та підсумовування наведених нижче "базових функцій" ви можете представляти будь-який вид 2D функції на сфері до частоти, визначеної функціями. Основні функції визначаються " асоційованими поліномами Легенда ", але зазвичай їх не потрібно виводити самостійно, але можна використовувати існуючі похідні для справжніх сферичних гармонік . лвведіть тут опис зображення

Одна з таких операцій, яка може бути ефективно виконана в SH, називається " згорткою ", що означає інтегрування добутку двох сферичних 2D функцій над сферою. Це звичайна операція при обчисленні освітлення, наприклад, однією з функцій може бути аварійне освітлення та одна функція BRDF. Якщо представити як SH, ця операція є просто крапковим добутком двох векторів коефіцієнта SH.

Ще одна цікава операція - можливість робити ефективну низькочастотну фільтрацію. Оскільки SH представлений у частотній області, це просто питання масштабування або нулювання деяких коефіцієнтів SH. Деякі інші операції з іншого боку можуть бути важкими для виконання в SH порівняно з просторовою областю, наприклад, якщо ви хочете повернути функцію, представлену як SH, вона може отримати досить дорогий для SH вищого порядку. Тож це дійсно залежить від проблеми, чи підходить вона для виконання в SH чи ні.

SH зазвичай використовується для представлення лише низькочастотних функцій (тобто плавно змінюваних функцій), оскільки більш високі частоти вимагають збільшення обсягу зберігання (коефіцієнтів SH) та обробки. Ось чому ви не бачите, як SH використовується, наприклад, для заміни дзеркальних відображень на блискучих поверхнях. Існують також зональні сферичні гармоніки , які можна використовувати для зменшення зберігання та обчислення для двовимірних функцій, які обертаються симетрично щодо осі z, просто зберігаючи діагональні елементи матриці коефіцієнта SH. Також можуть використовуватися напівсферичні гармоніки, якщо вам потрібно займатися лише півсферичними функціями (також поширеними в освітленні) з перевагою можливості представити подібні частоти, як SH з меншими коефіцієнтами.

Однією з операцій, яку також потрібно виконати, є "проекція SH" для перетворення даних просторового домену в SH. Ви можете виконати цю операцію, виконавши згортання просторових даних домену з функціями основи SH. Цікавою властивістю SH є те, що на відміну від просторових представлень домену SH не страждає від згладжування, тому у вас немає арсенальних артефактів навіть при проектуванні на SH дуже низького порядку.

Легкі зонди

Тепер, коли ви розумієте основні операції та властивості SH, ми можемо подумати, як їх застосувати до GI. Світловий зонд фіксує, скільки світла надходить з кожного напрямку до точки, де знаходиться зонд. Це 2D функція на кулі і може бути представлена ​​як SH (або 3 SH функція для червоного, зеленого та синього). Залежно від кількості деталей освітлення, які ми хочемо закодувати в зонди, ми можемо вибрати порядок SH.

Для світлових зондів, які використовуються лише для дифузного освітлення Ламбертіана, досить низького рівня SH, оскільки згортання виконується з косинусною часткою, яка може бути представлена ​​порядком-2 SH (9 коефіцієнтів). Коефіцієнти SH для світлових зондів можна генерувати, просто подаючи кубічну карту в точку зонда, а потім проектуючи її на SH.

Під час візуалізації геометрії береться декілька найближчих світлових зондів і їх результати інтерполюються для отримання функції падаючого освітлення в точці простору. Це можна зробити, наприклад, безпосередньо інтерполюючи коефіцієнти SH сусідніх зондів, а потім виконавши згортку з нормально орієнтованим пікселем косинусної долі в домені SH.


Які переваги використання цього методу над більш простим освітленням на основі зображень?
Арджан Сінгх

Ви можете мати якісне низькочастотне освітлення з аналогічними вимогами до зберігання та продуктивності, ніж скажімо, використовуючи кубічні карти.
JarkkoL

16

Сферичні гармоніки

f(х)f(θ,ϕ)

Якщо ви не знаєте, що таке перетворення Фур'є, вам потрібно щось знати, перш ніж ви зможете зрозуміти сферичні гармоніки. Перетворення Фур'є дозволяє представляти сигнал у вигляді серії синусоїдних і косинусних хвиль, кожна з яких вдвічі перевищує частоту останньої. Тобто, ви можете представити сигнал як його середній плюс плюс синусоїда, довжина хвилі якої така ж, як довжина сигналу, плюс синусоїда вдвічі більша за довжину хвилі тощо. Оскільки перетворення Фур'є фіксує вас саме до цих довжин хвиль, вам потрібно лише записати амплітуду кожної з них.

Ми зазвичай використовуємо перетворення Фур'є для зображення зображень, які є лише двовимірними цифровими сигналами. Це корисно, тому що ви можете викинути частину синусоїди (або зменшити точність, з якою ви зберігаєте їх амплітуду), не змінюючи значно того, як зображення виглядає для людських очей. OTOH, викидання пікселів сильно змінює вигляд зображення.

У зразковому сигналі, як у зображенні, якщо ви використовуєте таку ж кількість синусоїди, що і зразки (пікселі) в оригінальному зображенні, ви можете реконструювати зображення точно, тому щойно ви починаєте скидати будь-які частоти, ви робите зображення займає менше місця.

Сферичні гармоніки подібно до перетворень Фур'є, але замість синусоїд вони використовують сферичну функцію, тому замість лінійних функцій (таких як зображення) вони можуть представляти функції, визначені у сфері (наприклад, карти середовища).

Світлові зонди

Так само, як стандартне зображення записує все світло, що досягає певної точки через площину зображення, світловий зонд записує все світло, що досягає певної точки з усіх напрямків. Вони вперше вийшли з кіноефектів. Якщо ви хочете додати об’єкт, створений комп'ютером, до сцени реального світу, вам потрібно мати можливість освітлити синтетичний об'єкт за допомогою освітлення реального світу. Для цього потрібно знати, яке світло сягає точки в сцені, де буде знаходитися синтетичний об’єкт. (Примітка. Хоча я кажу "освітлення", ви записуєте зображення всього світла, тому його можна використовувати і для відображення.)

Оскільки ви не можете мати камеру зі сферичним об'єктивом, яка записує все світло, що досягає однієї точки з усіх напрямків, ви записуєте це, роблячи звичайні фотографії сферичного дзеркала, а потім повторно відтворюючи зображення на сферу.

Поза кіноефектами частіше використовувати світлові зонди, створені на штучній сцені. Уявіть, що у вас є якийсь дорогий алгоритм для обчислення глобальної освітленості (GI) на сцені, а також у вас є деякі менші об'єкти, що рухаються в цій сцені (наприклад, рівень гри з гравцями в ній). Ви не можете запускати весь алгоритм GI кожного разу, коли будь-який об’єкт рухається, тому ви запускаєте його один раз зі статичною сценою та зберігаєте світлові зонди, зроблені в різних точках рівня. Тоді ви можете отримати гарне наближення до GI, освітлюючи плеєр залежно від того, який світловий зонд їм найближчий.

Використовуючи їх разом

Як правило, ви хочете все-таки відфільтрувати гострі краї у вашій глобальній освітленості, тому ви хочете представити їх компактно і легко дозволяє викинути високі частоти. Ось у чому насправді хороші сферичні гармоніки! Тому ви почуєте ці два терміни, які вживаються разом багато.

Ви обчислюєте світлові зонди за допомогою дорогого алгоритму GI - як правило, в інструменті рівня дизайну, або, можливо, раз на секунду (замість одного разу на кадр), якщо ви хочете включити свої динамічні об'єкти до. Ви зберігаєте їх дешево зі сферичними гармоніками - 16 поплавків вистачає для досить якісного освітлення, але не відбитків. Потім для кожного динамічного об'єкта, який ви хочете засвітити, ви вибираєте найближчий світловий зонд (або лінійно інтерполюєте кілька разом) і використовуєте його як рівномірний або постійний вхід у ваш шейдер. Також звичайно використовувати сферичні гармоніки для представлення даних про оклюзію навколишнього середовища, і це дуже дешево пов'язувати це з допомогою зонда світла, хоча є деякі складності навколо обертових сферичних гармонічних функцій.


Чудова відповідь це справді все прояснило! Тому в основному Light Probes - це простий спосіб розрахунку освітлення рухомих персонажів, який заважає нам перерахувати GI для всієї сцени. Сферичні гармоніки з іншого боку використовуються для фільтрації високих частот. (Виправте мене, якщо я помиляюся, я просто намагаюся зрозуміти, чи правильно розумію).
Арджан Сінгх

"якщо ви використовуєте таку ж кількість синусоїд, що і в оригінальному зображенні, були зразки (пікселі), ви можете точно реконструювати зображення", насправді це неправда. Наприклад, квадратна хвиля вимагає нескінченної кількості частот для точного подання
JarkkoL

@JarkkoL Звичайно, справжня квадратна хвиля. Але якщо ви дискретизували це шляхом вибірки, то вам потрібно лише однакову кількість частот, щоб помилка була меншою, ніж помилка вибірки. Це корисний результат теореми Найкіста (про те, що найвища частота, що присутня у вибірковому сигналі, становить половину швидкості вибірки).
Dan Hulme

Так, це правда, звичайно. Я припускаю, що вам потрібні половина частоти, але складні (проти реальної) результати частотної області. Або використовувати DCT і реальний домен з подвоєною частотою DFT.
JarkkoL

5

Сферичні гармоніки

Скажімо, у вас є деякі дані в масиві, але ви хочете представити ці дані з меншою кількістю байтів.

Одним із способів цього можна було б виразити дані як функції замість необроблених значень.

у=ах+б

аб

Проблема в тому, що лінійне рівняння, ймовірно, є поганим наближенням до ваших даних.

у=ах2+бх+c

абабc

Ми збільшили накопичувач пам’яті, а також складність обчислення для зберігання та отримання ваших даних порівняно з лінійним рівнянням, але це краще наближення до вашого масиву даних. Ми також можемо взяти його до кубічної функції або вище. Збільшення замовлення збільшує зберігання, обчислення та точність.

f(х)

Як і в наведених вище прикладах, ви можете використовувати сферичну гармоніку нижчого порядку, щоб зробити щось із меншим сховищем та меншим обчисленням для обчислення даних, але й меншою точністю.

З іншого боку, ви можете збільшити порядок і краще наблизитись до своїх вихідних даних, але ціною, необхідною для зберігання, потрібно більше обчислень, необхідних для обчислення точки даних.

В крайньому випадку, ви можете використовувати стільки термінів сферичної гармоніки, скільки ви мали зразки у своєму масиві, і тоді можете точно реконструювати свій початковий масив, але ви витрачаєте багато обчислень, роблячи це, і ви використовуєте стільки ж місця для зберігання як ви почали з.

Через це, на практиці, сферичні функції гармонік не приносять великої користі, якщо вам потрібно представити дрібні деталі - наприклад, різке відображення сфери - але вони можуть бути дешевими для даних, які не мають тонких деталей (даних, які не мають не мають значно високочастотного вмісту). Вони також корисні для обчислення частотних домен, таких як спектральний аналіз або згортка.

Одними з таких даних, які вони добре зберігають, є "опромінення", тобто кількість світла, що потрапляє на точку з інших напрямків. Він має тенденцію виглядати трохи розмито, а це означає, що він має лише низькочастотний вміст, і є хорошим кандидатом для зберігання у функції сферичних гармонік.

Пояснення світлових зондів я залишу іншій особі: с


Чому голосування "за"? : P
Алан Вулф

Це неправда, що сферичні гармоніки не добре представляти дрібні деталі. Як і перетворення Фур'є, вони можуть точно реконструювати вихідний сигнал, якщо зберегти всі частоти. Просто вони дозволяють легко економити місце, викидаючи високі частоти, якщо вони вам не потрібні.
Dan Hulme

І вибачте, я вважав, що після голосування я подумав, що в противному випадку корисно відповісти за єдине сумнівне твердження, але мій голос був заблокований тим часом, коли я подумав.
Dan Hulme

Ага. Так, можливо так само, як можна представляти будь-який набір даних поліномом, але на практиці обидва є поганим вибором для необхідності близькості до багатьох точок даних. Для полінома вам потрібно N термінів функції N порядку, щоб точно відповідати N точкам даних, наприклад, що робить його гіршим вибором, ніж просто масив, оскільки це обчислення, а не пошук для отримання точки даних. Так само на практиці сферичні гармоніки є поганим вибором для сферичних даних з високочастотним вмістом, які ви хочете зберегти. Це не вдалий вибір у тих ситуаціях.
Алан Вулф

Це вірно, якщо ви хочете мати можливість реконструювати окремі зразки, але не всі види використання Фур'є вимагають цього - аналогічно не для всіх застосувань SH. Якщо ви збираєтеся робити згортання, це набагато дешевше зробити це в частотній області перед тим, як перетворитись на зразки. Чи не заперечуєте я запропонувати редагування, щоб зробити це зрозумілішим у вашій відповіді, після того як я закінчую власну відповідь?
Dan Hulme
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.