Алгоритм генерации света для облаков на платформе iOS
Я хотел бы заполнить фон моего приложения анимированными облаками. Я провел небольшое исследование и наткнулся на алгоритм перлин-шума, который кажется подходящим. Однако даже в первом тесте было чрезвычайно дорого генерировать карту облака 512x512 (2D). Я пробовал симплексный шум, но это не помогло.
Согласно http://freespace.virgin.net/hugo.elias/models/m_clouds.htm генерация облаков выполняется путем добавления нескольких карт шума perlin/simplex. Невозможно сделать это на iPhone в моем приложении: мне нужна плавная графика (мои оптимистичные ожидания - 60 FPS на A4).
Итак, мой вопрос: существует ли более легкий алгоритм для создания анимированных облаков, который не слишком снижает частоту кадров?
Заранее спасибо!
Павел
2 ответа
Если все, что вы делаете, - это генерирование облаков, вы определенно захотите, чтобы они были предварительно вычислены. Шум Перлина может создавать приятные 2-мерные анимации, проходя через набор трехмерных данных, но вы можете просто прокрутить 2-мерное изображение некоторого шума, или алгоритм, подобный фракталу, генерируется алгоритмом алмазного квадрата. В любом случае, вы, вероятно, должны предварительно вычислить это.
Если вы хотите еще больше вариантов, я бы поэкспериментировал с наложением шумового фильтра на предварительно вычисленные облака.
Предварительно сгенерируйте облака и создайте 2D спрайты, используя базовую анимацию или иным способом. Вы можете тогда оживить это вокруг дешево. Вы можете не получить 60 кадров в секунду, но вы должны приблизиться в зависимости от того, какое сложное движение вы хотите или какие другие анимации происходят в данный момент. В любом случае, это будет быстрее, чем создавать облака самостоятельно.