Симплекс-шум (англ. Simplex noise) — метод побудови n-вимірної функції шуму, подібно до шуму Перлина («класичного шуму»), але з меншою кількістю артефактів і кращою продуктивністю. Кен Перлин розробив алгоритм у 2001 році щоб усунути обмеження класичної функції шуму, особливо за великої кількості вимірів.
Переваги симплекс-шуму над шумом Перлина:
- Симплекс-шум має меншу обчислювальну складність і вимагає менше операцій множення.
- За більшої кількості вимірів (4D, 5D) симплекс-шум є продуктивнішим, складність — для вимірів, в той час як у класичного шуму — .
- Симплекс-шум не має помітних артефактів (візуально вони ізотропні), проте шум, згенерований для різних вимірів візуально відрізняється (наприклад, двовимірний шум виглядає інакше, ніж переріз тривимірного шуму; вигляд погіршується зі збільшенням кількості вимірів).
- Симплекс-шум має добре визначений неперервний градієнт, який обчислюється доволі швидко.
- Симплекс-шум легко реалізувати на машинному рівні.
В той час як класичний шум інтерполює значення градієнтів вузлових точок сітки (тобто північно-східного, північно-західного, південно-східного й південно-західного для двовимірної сітки), симплекс-шум поділяє простір на симплекси (тобто -вимірні трикутники). Це зменшує кількість вузлів. Гіперкуб у вимірах має кутів, симплекс — лише . У 2D трикутники рівносторонні, але за більшої кількості вимірів симплекси лиш близькі до правильної форми.
Симплекс-шум корисний для програм комп'ютерної графіки, які будують шуми для двох, трьох, чотирьох чи п'яти вимірів. За більшої кількості вимірів n-вимірні сфери навколо кутів симплекса знаходяться недостатньо щільно, тим самим занулюючи функцію на вільних ділянках простору.
Деталі алгоритму
Симплекс-шум зазвичай реалізують як дво-, три-, чи чотиривимірну функцію, проте він може бути визначений для довільної скінченної кількості вимірів. Реалізація складається з чотирьох кроків: відхилення координат, поділ на симплекси, вибір градієнта і сумування ядер.
Відхилення координат
Вхідні координати трансформують за допомогою формули:
де
Результатом є розміщення координати на решітці A*n, яка, по суті, є розміщенням вершин стільникового гіперкуба, розплющеного вздовж своєї головної діагоналі настільки, щоб відстань між точками (0, 0, …, 0) і (1, 1, …, 1) дорівнювала відстані між (0, 0, …, 0) і (1, 0, …, 0).
Вихідні координати (x', y', …) дозволяють визначити, в яку комірку зміщеного одиничного гіперкуба потрапляє вхідна точка, (xb'=floor(x'), yb'=floor(y'), …), і її внутрішні координати (xi'=x'-xb', yi'=y'-yb', …).
Поділ на симплекси
Коли вищезгадане визначено, значення внутрішніх координат (xi', yi', …) сортуються за спаданням, щоб визначити, якій ортосхемі Шлефлі симплекса належить точка. Тоді результуючий симплекс складають з вершин, що відповідають впорядкованому обходу від (0,0, …, 0) до (1, 1, …, 1), і є n! варіантів, що можуть відповідати одній перестановці координат. Іншими словами, починаємо від нульової координати, потім послідовно додаємо ті, що відповідають найбільшому значенню внутрішньої координати, закінчуючи відповідником найменшого значення.
Наприклад, точка (0.4, 0.5, 0,3) буде лежати всередині симплекса з вершинами (0, 0, 0), (0, 1, 0), (1, 1, 0), (1, 1, 1). Значення по осі ординат найбільше, тому визначення координат симплекса починатимемо з нього. Потім збільшуємо значення по осі абсцис, і так далі.
Вибір градієнта
Кожна вершина симплекса додається до базової координати відхиленого гіперкуба, потім хешується у псевдовипадковий градієнтний вектор. Хеш можна реалізувати багатьма способами.
Варто звертати увагу на вибір множини градієнтів, щоб мінімізувати появу артефактів.
Сумування ядер
Внесок кожної з n+1 вершин симплекса враховується за допомогою суми радіально симетричних ядер з центром у кожній вершині. Спочатку за допомогою оберненої формули визначаються невідхилені координати:
де
Ця точка віднімається від вхідних координат, щоб отримати невідхилений вектор переміщення. Цей вектор потрібен для двох цілей:
- Порахувати екстрапольоване значення градієнта з використанням скалярного добутку
- Визначити d2, квадрат відстані до точки
Далі внесок ядра кожної суми визначається з рівняння
де r2 зазвичай обирають рівним 0,5 чи 0,6. 0,5 забезпечує відсутність розривів, в той час як 0,6 може покращити зовнішній вигляд у застосунках, де розриви непомітні. 0,6 використовувався у оригінальній реалізації Кена Перлина.
Правовий статус
Використання реалізації у 3D and higher для textured image synthesis покривається патентом U.S. Patent 6 867 776, якщо алгоритм реалізований з використанням специфічних методик, описаних у будь-якому з пунктів патенту.
Див. також
Посилання
- Ken Perlin, Making noise. Based on a talk presented at GDCHardcore (Dec 9, 1999). (url) [ 17 лютого 2015 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Simpleks shum angl Simplex noise metod pobudovi n vimirnoyi funkciyi shumu podibno do shumu Perlina klasichnogo shumu ale z menshoyu kilkistyu artefaktiv i krashoyu produktivnistyu Ken Perlin rozrobiv algoritm u 2001 roci shob usunuti obmezhennya klasichnoyi funkciyi shumu osoblivo za velikoyi kilkosti vimiriv Perevagi simpleks shumu nad shumom Perlina Simpleks shum maye menshu obchislyuvalnu skladnist i vimagaye menshe operacij mnozhennya Za bilshoyi kilkosti vimiriv 4D 5D simpleks shum ye produktivnishim skladnist O n 2 displaystyle O n 2 dlya n displaystyle n vimiriv v toj chas yak u klasichnogo shumu O 2 n displaystyle O 2 n Simpleks shum ne maye pomitnih artefaktiv vizualno voni izotropni prote shum zgenerovanij dlya riznih vimiriv vizualno vidriznyayetsya napriklad dvovimirnij shum viglyadaye inakshe nizh pereriz trivimirnogo shumu viglyad pogirshuyetsya zi zbilshennyam kilkosti vimiriv Simpleks shum maye dobre viznachenij neperervnij gradiyent yakij obchislyuyetsya dovoli shvidko Simpleks shum legko realizuvati na mashinnomu rivni V toj chas yak klasichnij shum interpolyuye znachennya gradiyentiv vuzlovih tochok sitki tobto pivnichno shidnogo pivnichno zahidnogo pivdenno shidnogo j pivdenno zahidnogo dlya dvovimirnoyi sitki simpleks shum podilyaye prostir na simpleksi tobto n displaystyle n vimirni trikutniki Ce zmenshuye kilkist vuzliv Giperkub u n displaystyle n vimirah maye 2 n displaystyle 2 n kutiv simpleks lishe n 1 displaystyle n 1 U 2D trikutniki rivnostoronni ale za bilshoyi kilkosti vimiriv simpleksi lish blizki do pravilnoyi formi Simpleks shum korisnij dlya program komp yuternoyi grafiki yaki buduyut shumi dlya dvoh troh chotiroh chi p yati vimiriv Za bilshoyi kilkosti vimiriv n vimirni sferi navkolo kutiv simpleksa znahodyatsya nedostatno shilno tim samim zanulyuyuchi funkciyu na vilnih dilyankah prostoru Detali algoritmuSimpleks shum zazvichaj realizuyut yak dvo tri chi chotirivimirnu funkciyu prote vin mozhe buti viznachenij dlya dovilnoyi skinchennoyi kilkosti vimiriv Realizaciya skladayetsya z chotiroh krokiv vidhilennya koordinat podil na simpleksi vibir gradiyenta i sumuvannya yader Vidhilennya koordinat Vhidni koordinati transformuyut za dopomogoyu formuli x x x y F displaystyle x x x y F y y x y F displaystyle y y x y F displaystyle de F n 1 1 n displaystyle F frac sqrt n 1 1 n Rezultatom ye rozmishennya koordinati na reshitci A n yaka po suti ye rozmishennyam vershin stilnikovogo giperkuba rozplyushenogo vzdovzh svoyeyi golovnoyi diagonali nastilki shob vidstan mizh tochkami 0 0 0 i 1 1 1 dorivnyuvala vidstani mizh 0 0 0 i 1 0 0 Vihidni koordinati x y dozvolyayut viznachiti v yaku komirku zmishenogo odinichnogo giperkuba potraplyaye vhidna tochka xb floor x yb floor y i yiyi vnutrishni koordinati xi x xb yi y yb Podil na simpleksi Koli vishezgadane viznacheno znachennya vnutrishnih koordinat xi yi sortuyutsya za spadannyam shob viznachiti yakij ortoshemi Shlefli simpleksa nalezhit tochka Todi rezultuyuchij simpleks skladayut z vershin sho vidpovidayut vporyadkovanomu obhodu vid 0 0 0 do 1 1 1 i ye n variantiv sho mozhut vidpovidati odnij perestanovci koordinat Inshimi slovami pochinayemo vid nulovoyi koordinati potim poslidovno dodayemo ti sho vidpovidayut najbilshomu znachennyu vnutrishnoyi koordinati zakinchuyuchi vidpovidnikom najmenshogo znachennya Napriklad tochka 0 4 0 5 0 3 bude lezhati vseredini simpleksa z vershinami 0 0 0 0 1 0 1 1 0 1 1 1 Znachennya po osi ordinat najbilshe tomu viznachennya koordinat simpleksa pochinatimemo z nogo Potim zbilshuyemo znachennya po osi abscis i tak dali Vibir gradiyenta Kozhna vershina simpleksa dodayetsya do bazovoyi koordinati vidhilenogo giperkuba potim heshuyetsya u psevdovipadkovij gradiyentnij vektor Hesh mozhna realizuvati bagatma sposobami Varto zvertati uvagu na vibir mnozhini gradiyentiv shob minimizuvati poyavu artefaktiv Sumuvannya yader Vnesok kozhnoyi z n 1 vershin simpleksa vrahovuyetsya za dopomogoyu sumi radialno simetrichnih yader z centrom u kozhnij vershini Spochatku za dopomogoyu obernenoyi formuli viznachayutsya nevidhileni koordinati x x x y G displaystyle x x x y G y y x y G displaystyle y y x y G displaystyle de G 1 n 1 1 n displaystyle G frac 1 sqrt n 1 1 n Cya tochka vidnimayetsya vid vhidnih koordinat shob otrimati nevidhilenij vektor peremishennya Cej vektor potriben dlya dvoh cilej Porahuvati ekstrapolovane znachennya gradiyenta z vikoristannyam skalyarnogo dobutku Viznachiti d2 kvadrat vidstani do tochki Dali vnesok yadra kozhnoyi sumi viznachayetsya z rivnyannya r 2 d 2 4 lt D x D y gt lt g r a d x g r a d y gt displaystyle r 2 d 2 4 lt Delta x Delta y gt cdot lt grad x grad y gt de r2 zazvichaj obirayut rivnim 0 5 chi 0 6 0 5 zabezpechuye vidsutnist rozriviv v toj chas yak 0 6 mozhe pokrashiti zovnishnij viglyad u zastosunkah de rozrivi nepomitni 0 6 vikoristovuvavsya u originalnij realizaciyi Kena Perlina Pravovij statusVikoristannya realizaciyi u 3D and higher dlya textured image synthesis pokrivayetsya patentom U S Patent 6 867 776 yaksho algoritm realizovanij z vikoristannyam specifichnih metodik opisanih u bud yakomu z punktiv patentu Div takozhShum PerlinaPosilannyaKen Perlin Making noise Based on a talk presented at GDCHardcore Dec 9 1999 url 17 lyutogo 2015 u Wayback Machine