Комментарий к Статье Реализация процедурных текстур методом Шума Перлина
Статья повествует от построении процедурных текстур методом Шума Перлина на примере динамических облаков. Пояснения демонстрируются исходным кодом.
Не вдаваясь в мат. подробности, одна из лучших статей на gamedev.ru.
Тока вот с инлайнами автор немного перемудрил :)
Все это имхо.
Немного буквоедство, но: слово шум, написаное с большой буквы, дает понять, что возможно, речь идет о неком Шуме Ивановиче Перлине, который изобрел какой-то супер метод. :)
Разве Perlin читается как Перлин?! Всегда думал, что Перлен.
Я не понял одну вещ:
я читал собственно текст Perlin'а, и по ней, Perlin Noise это только про использование его "интерполирующей" функции и стабильного генератора нойса . При использовании других функций,это не Perlin Noise. А сложение многих шумов вроде до него придумали.
Так что я теперь вовсе не знаю что есть Perlin Noise а что нет.
First
:-))
Coriolan
AFAIK - Перлин читается ...Если хочеш иди на www.google.com или на www.yandex.ru и попробуй поискать "Кен Перлен".
Dmytry
я тоже читал текст Кена...Главная фишка Шума придуманого им это его когерентность + сложение слоев шума.
А еще надо сказать что оригинальный шум был придуман 1983.Много воды с тех пор утекло...
Например вот Кен усовершенствовал шум(Improved Noise)
http://mrl.nyu.edu/~perlin/noise/index1.html -там даже есть Java апплет Бамп+шум Перлина рилтайм...
Шумом Перлина иногда называют просто тот шум который складывается с несколиких слоев...Это не есть совсем правильно..
CyberDemon
thnx, за инлайны я знаю , плохо их использовать , но ШП не есть самый быстрый алгоритм, точнее он совсем медленный...
Можна бы было убрать "_inline" (кстати какая разница от "inline"?) но это ИМХО бы нарушыло структурный вид програмы...
1)Может я чего-то не понял, но в скачаном примере я вижу хаотически меняющиеся облака, а на небе они должы "перетекать" друг в друга. Смотрится красиво, но на бегущие облака не похоже. Может выложишь полноценное небо? хотелось бы посмотреть.
2)извините за ламерский вопрос, но "конергентность" - это что?
JK Viking
>2)извините за ламерский вопрос, но "конергентность" - это что?
Да, это у меня всё руки не доходили поправить.
В скачаном примере есть файл Readme.txt в не м описано все управление, там можно немного настроить это перетикание, "бегущие" облака было сделано простым добавлением некоторого числа для смещения текстуры.
"конергентность" это ошибка ворда для спелчека орфографии ;-) это слово должно звучать как "когерентность" и означает постояность значения шума для одного и тоже элемента...
Полноценое небо это какое в твоем понимании :-) ?
по моему когерентность должна означать что один элемент статистически связан с другим... чето типа этого.Типа просто заполнить все постоянным рандомом,некогерентно.А добавить к рандому фильтр 1/f (амплитуд)
(например при помощи FFT) , и он уже когерентный вродебы...
По поводу неба: Сходным способом делаются облака в моем voxel world. ,но уже давно(до статьи) ,и там складываются,вычитаются,итп друг-с-другом многооктавные шумы, притом отнють не перлиновские. Ну это не суть как важно,перлинские они или нет.
Кстати,Перлин взял идею про сумму из идеи преобразования Фурье.Так-что, не думаю что заслуга Перлина именно в суммировании.
to WDW:
а ты пробовал сравнивать fps для многооктавных шумов и обычной анимированной текстуры? Я имею ввиду, что если я захочу использовать для своих облаков десяток заранее нарисованных текстур, которые будут сменять друг-друга (изображая клубящиеся облака)+ изменение координат (для имитации движения). То насколько твой метод окажется быстрее?
По моему(пардон,я кон. не WDW это раз,и не делал точно по статье это два),тут как всегда:можно сделать так,что намного быстрее.Можно и так,что не намного. Можно сделать промежуточный,складывать пару,тройку,итд анимаций,так что тут четкой границы нет.
Давай не будем брать промежуточные варианты. Если сравнивать примерно равные по качеству (зрелищности) отображения облаков, то который из вариантов будет быстрее? (текстуры или шум).
JK Viking
Начнем с того что анимированые текстуры-СТАТИЧНЫ это раз, а счас все больше и больше людей стремятся к уникальности своего игрового мира
http://www.gamedev.ru/forum/?action=showtopic&group=9&topic=1114
Два это то что их надо разроботать перед тем как вводить в проект это требует времени еще до работи программы.Шум требует времени только на разработку алгоритма , а потом с его помощю можно делать не только облака...
Три это то что анимированые текстуры занимают память - но правда шум занимает проц .
Скорость зависит очень сильно от разшырения текстуры и от количества октав - а от этого зависит и качество текстур.
Я не знаю насколько быстр твой метод аним. текстур, но я считаю что скорость качественого шума может немного отставать по нескольким причинам .1)это то что проц будет зайнят в то время когда регенерируются текстуры
(правда я розтянул процес реге-цыи на все время роботы программы-чтобы не было резких падений fps ) 2)это то что у меня еще есть алгоритмы удаления шва.
По скорости шум может немного отставать но по качеству - уникальности шум форева...
А как сделать так, чтобы при использовании метода генерации шума указанного в статье, полученные текстуры можно было бы тайлить. Например в фотошопе, эффект render->clouds сгенерирует тайлющуюся текстуру если размер текстуры будет степень двойки. Может быть есть другой алгоритм?
Тема в архиве.