Использование шума Perlin для создания молнии?

На самом деле у меня есть несколько вопросов, связанных с предметом, приведенным в названии темы.

Я уже использую функции Perlin, чтобы создать молнию в моем приложении, но я не полностью доволен моей реализацией.

Следующие вопросы основаны на начальных и улучшенных реализациях шума Perlin.

Чтобы упростить проблему, давайте предположим, что я создаю простую 2D молнию, модулируя высоту горизонтальной линии, состоящей из N узлов на этих узлах с использованием функции 1D Perlin.

  1. Насколько я понял, два последующих значения, передаваемые в функцию Perlin, должны отличаться по меньшей мере по одному, или полученные два значения будут идентичны. Это связано с тем, что при простых реализации Perlin случайная функция работает с аргументом INT, и в улучшенных значениях реализации отображаются на [0..255] и затем используются в качестве индекса в массиве, содержащем значения [0..255 ] в случайном распределении. Это верно?

  2. Как добиться этого первого и последнего значения смещения (то есть для узлов 0 и N-1), возвращаемого функцией Perlin, всегда 0 (ноль)? Прямо сейчас я модуляцию синусоида (0 .. ПИ) с моей функцией Perlin для достижения этого, но это не так, как я хочу. Просто настроив их до нуля, не то, что я хочу, так как я хочу, чтобы приятный путь молнии с щиткой на его концах.

  3. Как мне варьироваться функцию Perlin (чтобы я получил два разных пути, которые я мог бы использовать в качестве начала анимации и конечные рамки для молнии)? Конечно, я мог бы, чтобы добавить фиксированное случайное смещение на вычисление пути к каждому значению узла или использовать таблицу перестановки на установку по-разному для улучшенного шума Perlin, но есть лучшие варианты?

5
задан karx11erx 1 September 2011 в 22:45
поделиться