Терасинг гірських особливостей


10

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

Терасова місцевість

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

Мені було цікаво, чи зможе хтось надати більш технічний приклад чи процедуру для цього? Протягом минулого тижня я багато досліджував та дізнавався багато про процедурні методи місцевості / текстури та методи, але все ще не натрапив на щось, що детально пояснює, що таке «затискання», і я починаю засмучуватися.


Так, це дійсно акуратно. Я не можу зрозуміти, що він також має на увазі. Ви спробували надіслати письму електронний лист (він доступний у розділі "контакт")?
Draco18s більше не довіряє SE

FYI: У вашій цитаті та джерелі термін "демпфірує", але пізніше у запитанні ви натомість використовуєте "затискання".
Пікалек

Відповіді:


11

Я не знаю, що робить їхній проект, але ви можете застосувати функцію перестановки на висоту. Ось приклад, який займає hвід 0,0 до 1,0 і повертає нову висоту від 0,0 до 1,0:

function R(h) {
    var W = 0.4; // width of terracing bands
    var k = Math.floor(h / W);
    var f = (h - k*W) / W;
    var s = Math.min(2 * f, 1.0);
    return (k+s) * W;
}

Це функція, яка виглядає приблизно так, коли нанесено графік - вісь x - це початкова висота, а вісь y - нова висота:

Функція перестановки висоти

Я застосував його до власного коду і отримав таке:

Вихід функції терасування

Можна отримати будь-яку функцію перестановки або зв'язати їх між собою, щоб отримати акуратні ефекти. Ви отримуєте тераси, коли є плоскі ділянки виходу.


Я клянусь, у питанні запитувача є рівний шлях, який піднімається на терасу, але, дивлячись на це знову, я майже впевнений, що це ілюзія. Але мої очі все ще наполягають, що ні, там є зміна висоти (центр зображення до верхнього кута / верхній лівий край). Якщо підйому немає, то ця відповідь правильна.
Draco18s більше не довіряє SE

1

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

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

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

Третім варіантом може бути використання методів ерозії. Ось один для створення комбінації скелі та пляжу , скинувши ділянку похилої землі. Ось ще один, який може розмити вершини на плато .


0

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

  • Початкова карта висоти місцевості
  • Визначення 'діапазону' тераси, при цьому найнижча висота тераси h1, а найвища висота тераси h2
  • Значення демпфування, яке вирівнює землю в межах висоти тераси
  • Друга карта з висотою більшого діапазону для зміни значень h1 і h2, так формуються безперервні рампи між терасами (третя карта висоти може бути використана для збільшення або зменшення h1 і h2 незалежно від інших, створюючи більші або менші тераси)

Ось процедура створення ефекту:

h1 = 1
h2 = 2
damp = .01

h = gen_noise(position)
hm = heightmod_noise(position)
if h1+hm <= initial_terrain_height =< h2+hm
  th = h * damp
elseif h2+hm < h
  th = h - (h2-h1) * damp
else
  th = h

(звичайно, це висота місцевості після застосування ефекту терасування)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.