ГоловнаСтаттіГенеративне Мистецтво

Зливальна Сфера: Виготовлення Поверхні за допомогою Шумів Сімплекс

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

mysimulator teamОновлено — червень 2026≈ 7 хв читання▶ Відкрити симуляцію

Сфера, зміщена вздовж власних нормалей

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

displaced = position + normal * noise3D(position * frequency + vec3(0,0,time*speed)) Оскільки зміщення додається вздовж нормалі замість фіксованого напрямку, поверхня випирає та утворює ями таким чином, що завжди виглядає закріпаною до сфери, а не розрізаною вбік — такий самий трюк, який використовується для створення висотних карт рельєфу, лише обгорнутий навколо кулі замість площини.

displaced = position + normal * noise3D(position * frequency + vec3(0,0,time*speed)) * amplitude
жива демонстрація · пов'язана симуляція● LIVE

Чому використовується сімплексний шум, а не класичний шум Перліна

Шумову функцію майже завжди використовують як сімплексний шум, спадкоємець 2001 року від оригінального шуму Перліна 1985 року. Класичний шум Перліна інтерполює псевдо випадкові векторів градієнту, розміщені у кутах квадрата (2D) або куба (3D) сітки; в n вимірах ця сітка клітин має 2ⁿ кутів, тому вартість оцінки одного зразка шуму зростає зі збільшенням розмірності — 8 кутів у 3D, 16 у 4D. Сімплексний шум замість цього використовує сімплекс, найпростішу можливу форму, яка заповнює простір у n вимірах з найменшою кількістю вершин — трикутник у 2D, тетраедр у 3D, тому для зразка 3D потрібно лише 4 оцінки кутів замість 8. Він також візуально чистіший: сітка квадрата/куба, що лежить в основі класичного шуму Перліна, залишає слабкі орієнтовані артефакти вздовж осі, тоді як сітка сімплекса набагато ізотропніша, тому отримані буграми не схильні віддавати перевагу осі x, y або z.

Неперервність: чому морфінг виглядає плавно, а не з переривами

Обидва шумові поля побудовані як C¹ безперервні — функція та її перша похідна змінюються плавно всюди, без різких стрибків між клітин сітки. Це має значення двічі: просторово, щоб сусідні вершини зміщувалися приблизно однаковими величинами і поверхня не розривалася на фасети; і тимчасово, оскільки поступово збільшується вхідне значення (час) четвертого прихованого входу функції шуму на невеликий постійний крок, що призводить до планового еволююючого поля замість нового незалежного випадкового шаблону кожного кадру. Зразок 3D шуму в (x, y, z + t·швидкість) є поширеною технікою для дешевого анімаційного 3D шуму — це фактично 4D шум, що перерізаний 3D зрізом, без необхідності платити за повну реалізацію 4D.

Багато октав для органістичної деталізації

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

n = 0
amp = 1; freq = 1
for octave in 0..3:
    n += amp * noise3D(p * freq + t)
    freq *= 2
    amp  *= 0.5   // each octave contributes half the previous amplitude

Перерахування нормалей після зміщення

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

Frequently asked questions

Чому сфера згладко коливається замість того, щоб хаотично тремтіти на кожному кадрі?

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

Яка точна відмінність між шумом Сімплекс (simplex noise) та оригінальним шумом Перлін (Perlin noise)?

Класичний шум Перлін інтерполює градієнти на квадратно-кубічній сітці, що потребує 2ⁿ оцінок кутів на зразок і показує слабкі орієнтовані на осі артефакти. Шум Сімплекс використовує трикутну/чотиригранну решітку замість цього, що вимагає лише n+1 кутів на зразок і забезпечує більш ізотропний візуальний результат – дешевше та чистіше, особливо в 3D та вищих розмірностях.

Чому зміщення застосовується вздовж нормалі замість випадкового напрямку?

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

Спробуйте наживо

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

▶ Відкрити симуляцію Morphing Sphere

Що ви знайшли?

Додати кроки відтворення (опційно)