🌀 Деформація області
Згортання шуму в течію
Вигляд: Деформований
Вигляд
Вивід
Параметри
Керування
Статистика
Октави
5
Проходи
2
Кадр, мс
0
Стан
Готово
Довідка та теорія

Деформація області спотворює вхід функції шуму ще більшим шумом. Замість f(p) ви обчислюєте f(p + зсув), де зсув — це теж шум.

fBm — сировина

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

Згортання назад

Фірмовий рецепт — f(p + a·f(p + b·f(p))) — шум подає власні координати. Один прохід згинає поле; другий прохід деформує вже деформовані координати у турбулентну течію.

Керування

  • Сила деформації — наскільки штовхаються координати.
  • Октави — тонкість деталі fBm.
  • Проходи — одна чи дві вкладені деформації.

Звичайний проти деформованого

Перемкніть вигляд Звичайний fBm, щоб побачити неспотворене поле, потім назад на Деформований — різниця і є сенсом техніки, популяризованої Іньїго Кілесом.

Поширені запитання

Що таке деформація області?

Деформація області — це техніка, коли перед вибіркою функції шуму ви спотворюєте її вхідні координати за допомогою ще більшого шуму. Замість f(p) ви обчислюєте f(p + зсув(p)), і сам зсув походить із шуму — згортаючи поле у завихрення й течію.

Що таке fBm-шум?

fBm (фрактальний броунівський рух) підсумовує кілька октав базового шуму: кожна октава подвоює частоту й удвічі зменшує амплітуду. Результат — природне, хмароподібне поле з деталями на багатьох масштабах, стандартний вхід для деформації області.

Що означає формула f(p + f(p + f(p)))?

Це деформація області, застосована двічі. Найвнутрішнє f(p) згинає координати, результат подається на наступний шар, а зовнішнє f бачить двічі деформований вхід. Кожен вкладений прохід додає текстурі складнішу завихрену структуру.

Що контролює сила деформації?

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

Що роблять октави?

Більше октав додає тоншу деталь у базовий fBm: додаткові шари вищочастотного, нижчоамплітудного шуму. Мало октав дають м'які плями; багато — чітку, заплутану текстуру, ціною вищої вартості рендерингу.

Яка різниця між одним і двома проходами деформації?

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

Навіщо порівнювати звичайний fBm із деформованим результатом?

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

Це справжній шум чи текстура-таблиця?

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

Хто популяризував деформацію області?

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

Що робить анімація?

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

Про деформацію області

Деформація області — це техніка процедурних текстур, за якої вхідні координати функції шуму зміщуються результатом іншого обчислення шуму ще до самої вибірки. Конкретніше, замість вибірки f(p) ви обчислюєте f(p + a·f(p + b·f(p))), подаючи поле назад у власні координати. Результат перетворює просте поле фрактального броунівського руху (fBm) на завихрені, мармуроподібні, хмароподібні візерунки, які виглядають набагато складнішими й органічнішими, ніж сам базовий шум.

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

Поширені запитання

Що таке деформація області у процедурній графіці?

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

Як користуватися елементами керування в цій симуляції?

Використовуйте повзунок «Сила деформації», щоб контролювати, наскільки далеко зміщуються координати — нуль дає звичайний fBm, вищі значення дають сильніше завивання й мармуровість. Повзунок «Октави» додає чи прибирає шари деталей у базовому fBm-шумі. Перемикач «Проходи» перемикає між однією ітерацією деформації та двома вкладеними ітераціями, причому два проходи дають набагато багатшу турбулентність. Перемикайте вигляди «Деформований» і «Звичайний fBm», щоб побачити, що саме додає деформація.

Яку візуальну зміну спричиняє збільшення сили деформації?

За низької сили деформації (0–1) поле виглядає як злегка хвилястий fBm. Коли сила зростає до 3–5, з'являються плинні мармурові жилки й хмароподібні завихрення. За дуже високої сили (6–8) поле стає сильно спотвореним із тугими завитками й майже турбулентною течією. Немає єдиного порогу, за яким ефект раптово вмикається — перехід плавний, тому повзунки в реальному часі так корисні для дослідження простору параметрів.

Яка математика стоїть за формулою f(p + f(p + f(p)))?

Формула представляє два шари спотворення координат. Найвнутрішнє f(p) — це звичайне обчислення fBm, що дає 2D-вектор зсуву. Цей вектор масштабується коефіцієнтом сили й додається до p, утворюючи деформовану координату, яка подається у другий fBm для отримання другого вектора зсуву. Зовнішнє f потім обчислюється в точці p плюс цей двічі деформований зсув. Кожен шар підпорядковується формулі fBm: сума по октавах amplitude_i * noise(frequency_i * p), де амплітуда зменшується вдвічі, а частота подвоюється з кожною октавою.

Де деформація області використовується в реальному виробництві?

Деформований шум є основою незліченних процедурних матеріалів у виробничих VFX та ігрових рушіях. Шейдери хмар у кінорендерингу (використані у стрічках великих студій) покладаються на ітеровану деформацію області для досягнення реалістичної турбулентності. Генератори рельєфу використовують її для патернів річкової ерозії каньйонів. У таких ігрових рушіях, як Unreal і Unity, деформований fBm — стандартний будівельний блок для вузлів графів матеріалів, що створюють воду, лаву, дим і деталізацію поверхні каменю.

Чи деформація області — це те саме, що шум турбулентності?

Ні, хоча вони пов'язані. Шум турбулентності бере абсолютне значення знакового шуму на кожній октаві перед підсумовуванням, створюючи гребенеподібні складки. Деформація області — це спотворення координатного простору, застосоване до або довкола обчислення шуму, а не зміна самого підсумовування. Ці дві техніки можна поєднувати: можна деформувати шум турбулентності або застосувати турбулентність до вже деформованого поля, отримавши ще складніші візерунки.

Хто запровадив деформацію області і коли вона стала популярною?

Загальна ідея спотворення координат у процедурних текстурах передує сучасному використанню, з'являючись в оригінальній статті Кена Перліна 1985 року на SIGGRAPH про процедурні текстури як форма координатного збурення. Однак деформацію області, коли fBm подає сам себе, систематично досліджував і популяризував Іньїго Кілес у своїх статтях 2002–2013 років та експериментах на ShaderToy, які стали визначальними джерелами для процедурних художників. Його формулювання q = fBm(p), r = fBm(p + q), result = fBm(p + r) тепер є канонічним рецептом.

Які інші явища чи симуляції пов'язані з деформацією області?

Деформація області тісно пов'язана з полями течії, де поле шуму визначає вектори швидкості, за якими рухаються частинки з часом. Вона також пов'язана з шумом завихрення (curl noise), який отримує бездивергентну течію з потенційного поля шуму для симуляції руху частинок, схожого на рідину. Шум Ворлі (клітинний) також можна деформувати для отримання тріщинуватої скелі чи органічних клітинних патернів. Загалом деформація області є окремим випадком карт зміщення (displacement mapping), які використовуються по всій комп'ютерній графіці для додавання деталей поверхні без збільшення роздільної здатності геометрії.

Як деформація області використовується в шейдерному програмуванні сьогодні?

У сучасних шейдерах GLSL і HLSL деформація області реалізується кількома рядками: вибірка vec2-зсуву з двох викликів fBm зі зміщеними сід-координатами (наприклад, fBm(p + vec2(0.0, 5.2)) для x, fBm(p + vec2(1.3, 8.7)) для y), масштабування силою, а потім обчислення фінального fBm у деформованій позиції. Виконання на GPU робить навіть двопрохідну деформацію реальночасовою на повній роздільній здатності екрана. Такі шейдерні платформи, як Shadertoy, і вузлові редактори матеріалів в ігрових рушіях виставляють ці параметри як зручні для художників елементи керування.

Які поточні дослідницькі напрями розширюють деформацію області?

Дослідники вивчають диференційовну деформацію області для нейронного синтезу текстур, де оптимізація на основі градієнтів навчає поля деформації, що відповідають цільовій статистиці зовнішнього вигляду. Ще один активний напрям — деформація з урахуванням фізики, коли поле зміщення обмежене рівняннями рідини (Нав'є-Стокса чи Ейлера), даючи текстури, які не просто візуально правдоподібні, а й фізично узгоджені. Розріджені нейронні представлення, такі як NeRF і 3D Gaussian Splatting, теж використовують навчувані координатні деформації, які концептуально є розширеннями деформації області, застосованими до об'ємних полів радіанс.