Суперпозиція: Метафора суперпозиції
Функція хвилі (WFC), впроваджена Максимом Гуміним у 2016 році, представляє процедурне генерування як задачу пошуку шляхів, запозичену з квантово-механічної метафори. Уявіть собі сітку, де кожен елемент все ще може бути будь-яким із T типів плиток — його «суперпозиція» можливостей. Мета полягає у призначенні точно однієї плитки кожному елементу так, щоб будь-яка пара сусідніх плиток задовольняла правилу суміжності, подібно до того, як «спостереження» колапсує квантовий механізм в єдиний власний стан і цей вибір поширюється на взаємопов'язаних сусідів.
Ентропія обирає наступну клітинку
Алгоритм ніколи не розв’язує клітин у фіксному порядку. Замість цього він завжди стискає найменш стиснуту клітину, тобто з найменшою кількістю доступних варіантів плиток, враховуючи їхню поширеність:
H(x,y) = −Σₜ p(t)·log₂ p(t), p(t) = вага[t] / Σ ваг[t′] Стиснута клітинка → H = 0. Всі ваги рівні → H = log₂(|можливостей|) Вирішення найобмеженішої клітинки першим є такою ж жадібною евристикою, що й у загальних розв’язувачах CSP — це мінімізує ймовірність того, що генератор буде загнаний в кут пізніше.
H(x,y) = −Σₜ p(t)·log₂ p(t), p(t) = weight[t] / Σ weight[t′] Collapsed cell → H = 0. All weights equal → H = log₂(|possibilities|)
Распространение и обратный отсчёт
Как только ячейка схлопывается до одной плитки, её соседи могут больше не поддерживать определённые плитки своего набора. WFC удаляет эти неподдерживаемые варианты в ширину-первый проход, похожий на алгоритм AC-3 арк-последовательности из теории CSP, заставляя любого соседа, чьи набор возможностей уменьшился, переходить в очередь до тех пор пока очередь не опустеет. Если набор возможностей ячейки когда-либо полностью пуст — противоречие — оригинальная версия Gumin's перезапускается с нуля с новым семенем; более продвиженные реализации сохраняют стек снимков и отступают по хронологии вместо того, чтобы выбрасывать весь прогресс.
Тілесна модель проти перекритної моделі
Існує два способи визначити правила суміжності. Тілесний зразок використовує явний, вручну створений набір плиток із визначеним парним суміжністю — швидкий, повністю контрольований і стандартний вибір для більшості генераторів рівнів ігор. Перекритний зразок замість цього навчається невеликих N×N шаблонів безпосередньо з зображення з вибірки: кожне вікно N×N у згенерованому виході повинно було бути присутнім десь у вхідних даних. Він потребує нульового ручного авторства правил і виробляє текстури, які статистично нагадують приклад, але це відбувається за рахунок швидкості та контролю творчого процесу. Обидва природним чином розширюються до 3D з шістьогранних сусідів (±X ±Y ±Z) для світів вокселів.
Области применения
WFC и его наследники генерируют планировки подземелий и городов с последовательным визуальным стилем, бесшовные бесконечные текстуры для рельефа и растительности, 3D фасады зданий и структуры из вокселей (предваряя академическую работу Пола Меррелла 2007 года на ту же тему), а также музыкальные последовательности нот, ограниченные правилами гармонии и ритма. Недавние расширения включают ограничено-ориентированную WFC, где дизайнер рисует ячейки «должно быть вода» или «должно быть стена» перед началом генерации, иерархическую WFC, которая сначала генерирует планировку комнаты, а затем заполняет каждую комнату независимо.
Frequently asked questions
Як Wave Function Collapse обирає наступну клітинку для розв'язання?
Воно завжди обирає нерозв’язану клітинку з найнижчим Шеннонівським ентропією – ту, що має найменшу кількість можливих плиток. Розв’язування найбільш обмеженої клітинки першим мінімізує ймовірність подальшого суперечництва, використовуючи ту ж жадібну евристику, що й у розв’язувачах задачі обмежень.
Що відбувається, коли Wave Function Collapse стикається з суперечністю?
Суперечність виникає, коли пропонуюче розповсюдження обмежень вичерпує набір можливостей клітинки до нуля плиток. Оригінальний алгоритм Гуміна просто перезапускає процес з нуля з новою випадковою початковою величиною; більш просунуті реалізації зберігають стовпчик попередніх виборів і відкочуються назад за часом, намагаючись повторно вибрати наступну найкращу плитку замість того, щоб відкинути весь прогрес.
Яка різниця між моделью з плиток та перекритною моделлю?
Модель з плиток використовує явний, вручну створений набір плиток із визначеними правилами сусідства – швидкий і повністю контрольований, і є стандартним вибором для генерації рівнів гри. Перекритна модель замість цього навчається невеликих квадратів N×N закономірностей безпосередньо з вибіркового зображення, що потребує нульового ручного авторства правил, але працює повільніше і лише відтворює статистику прикладу, який їй було показано.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію the simulation