Lab · потрогать руками
Шум Перлина и рельеф вживую
2D-шум Перлина → карта высот, раскрашенная как рельеф. Крути частоту, октавы, lacunarity и persistence — и смотри, как из плавных холмов проступают горы и мелкие детали. Это fBm вживую: сумма октав шума растущей частоты и падающей амплитуды.
Как пользоваться
Начни с 1 октавы — увидишь гладкие «блобы» (одна частота шума). Добавляй октавы: каждая кладёт поверх более мелкий и слабый шум → проступают горные хребты и рябь (фрактальный рельеф Minecraft). Частота — крупность базовых форм; lacunarity — во сколько раз растёт частота на октаву (обычно 2); persistence — во сколько падает амплитуда (обычно 0.5; больше → более «шумно/рвано»). Seed — другой мир из той же формулы.
вода
песок
трава
лес
скалы
снег
Попробуй: поставь октавы=1 и медленно добавляй по одной — увидишь, как поверх крупных форм ложатся всё более мелкие детали. Это ровно
Σ pⁱ·noise(lⁱx): крупные октавы = горы, высокие = камни и рябь.Что заметить
Октавы = фрактальные детали
Одна октава — только плавные холмы одного масштаба (гладко, «пусто»). Каждая добавленная октава кладёт поверх шум вдвое (lacunarity) выше частотой и вдвое (persistence) слабее амплитудой — появляются детали меньшего масштаба, не меняя крупных форм. Так природный рельеф и устроен: горы, на них хребты, на них камни. Нормировка по сумме амплитуд держит контраст, поэтому картинка не «выцветает» с ростом октав.
Persistence меняет «характер» ландшафта
Малый persistence (~0.3) → высокие октавы почти не видны: плавный, «сглаженный» рельеф (пологие холмы). Большой (~0.7) → мелкие октавы сильны: рваный, шероховатый, «злой» ландшафт (скалы, обрывы). Одна ручка задаёт всё — от мягких дюн до острых гор. Lacunarity влияет тоньше: как быстро растёт частота деталей между октавами.
Мир не хранится — он вычисляется
Весь этот рельеф — не мегабайты тайлов, а функция от координат и seed'а:
height(x,y). Смена seed даёт другой мир мгновенно, без хранения. Это «храни функцию, а не выход» из урока про железо: Minecraft/No Man's Sky так вмещают «бесконечные» миры в крошечный seed. И это детерминированно: тот же seed+координаты → тот же кусок мира на любом устройстве.