Как сделать сотовую версию перлинового шума?

Я желаю:

Превратить обычный двумерный перлиновый шум в квантованную, прямолинейную версию самого себя, где прямые линии составляют 60°.

Может быть, я могу квантовать вход функции шума Перлина, чтобы он находился на 3 осях 60 °?

Возможно, я мог бы переписать 2d симплексный шум так, чтобы он работал с 3 осями плоскости x-z, а не только с осями xz?

Менее хорошее решение — взять 3 неправильные пилообразные волны и умножить их по трем осям.

Цель: я тестирую перлиновые ландшафты, отображаемые с использованием изометрической 60-градусной регулярной треугольной сетки (т. е. шестиугольников). это лучше, чем квадратная сетка, и более эффективно использует пространство. Это выглядело бы очень красиво, используя шумы перлина на основе шестнадцатеричного lofi, потому что, например, на линии с углом 50 градусов вершины образуют зигзаги, поэтому, если я могу контролировать углы шума перлина, я могу контролировать качество мира на основе шестиугольника. .


person DeltaEnfieldWaid    schedule 06.02.2014    source источник
comment
Шум Перлина непрерывен, поэтому вы можете просто вычислить центр шестиугольников, а затем сэмплировать шум Перлина в этих точках.   -  person Richard Tingle    schedule 07.02.2014


Ответы (2)


Хорошо, я сделал сотовый перлиновый шум LOL!

это то же самое, что и perlin3d, за исключением того, что abs(vtx.xyz) — это Mathf.Abs(vtx.x), Mathf.Abs(vtx.x*.5-vtx.z*.866), Mathf.Abs(vtx.x*. 5+vtx.z*.866) ... вот фотографии шума перлина с использованием осей 60':

60' без кубической интерполяции без кубической интерполяции

60' с кубической интерполяцией с кубической интерполяцией

person DeltaEnfieldWaid    schedule 07.02.2014

Хорошо, вот еще один более интересный вариант... вместо того, чтобы использовать квадратную сетку xy, на которую генерируются и интерполируются случайные значения, просто превратите сетку xy в шестиугольную сетку, сдвинув каждую вторую строку на 0,5 в сторону и сделав каждую строку 0,866 , это создает треугольную решетку вместо квадратной со случайной точкой на каждом пересечении регулярной треугольной сетки.

После этого потребуется интерполяция между 3 точками. это были бы какие-то плоские треугольные горы.

person DeltaEnfieldWaid    schedule 09.02.2014