2011-12-26 5 views
0

Существует не так много простых в использовании инструкций по Perlin Noise и, конечно же, не на Java или 2D. Я следовал за this учебным пособием, но он вообще не объясняет 2D-шум. Я знаю, что вы должны сгенерировать массив чисел, а затем интерполировать их и все такое. Моя проблема в том, что я не знаю, как реализовать частоту, настойчивость или амплитуду, чтобы помочь повлиять на результат чисел. Может ли кто-нибудь дать мне некоторые основные функции шума Perlin или ссылку на 2D-курс Perlin Noise на Java или аналогичных языках? Благодаря!Java: 2D Создание шума в Perlin

EDIT: Может ли кто-нибудь лишь кратко объяснить процесс по крайней мере или как реализовать частоту, амплитуду и настойчивость, чтобы влиять на поколение? Пожалуйста :)

+0

В чем ваш вопрос? На странице, на которой вы ссылаетесь, есть (псевдо) код, который показывает, как бороться с перлином, включая постоянство. Вы можете напрямую перевести это на любой язык, который вам нравится. – Howard

+0

Да, я знаю, но у меня проблемы с пониманием этого полностью. Я полностью перевел его на Java, но у меня проблема с пониманием того, как это получается математически. Мне нужно какое-то четкое объяснение того, как работает этот процесс. – MrDrProfessorTyler

ответ

2

Amplitude и частоты нет свободных переменных в генерации шума Перлина. Вместо этого они параметризуются чем-то под названием persistence.

Функция шума представляет собой сумму по нескольким основным функциям.

n(x) = sum(n_i(x*f_i) * a_i, i=0..N-1) 

Каждая функция называется октаву и, следовательно, пронумерованы индексом i. Значения f_i обозначают частоты и a_i амплитуды. Как упоминалось прежде, чем они полностью определяются индексом i самой, параметризованных персистенцииp:

f_i = 2^i 
a_i = p^i 

В то время как каждая функция шума n_i(x) нормализуется для частоты 1 и амплитуды 1, общий термин n_i(x*f_i) * a_i теперь имеет частоту и амплитуда, заданная выражениями выше.

Другими словами, функция шума n(x) является суммой октав, где первый имеет частоту 1 и амплитуду 1, второй имеет частоту 2 и амплитуду p, третий имеет частоту 4 и амплитуду p^2, и так далее.

+0

Спасибо, это помогло многим Говарду. На данный момент я отскочил назад до 1-мерного шума Perlin и попытался это сделать, и, похоже, он работает хорошо. Еще раз спасибо! – MrDrProfessorTyler

+0

Кроме того, когда в статье говорилось, что вам нужно добавить шум вместе, и это делает шум Perlin, значит ли это, что средний шум вместе? – MrDrProfessorTyler

+0

Просто добавьте в ответ выражение 'n (x)'. – Howard