Рисование тумана с использованием Core Graphics - PullRequest
3 голосов
/ 05 марта 2010

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

Но как нарисовать туман (дым) с помощью Core Graphics? Это сложная задача? И какие концепции для реализации этой задачи?

1 Ответ

3 голосов
/ 05 марта 2010

Мне не известно о какой-либо встроенной поддержке тумана в Core Graphics, за исключением того, что Core Graphics может предоставить вам доступ к окну просмотра OpenGL.

С точки зрения графики рисование тумана очень отличается от рисования дымом.

Рисование тумана концептуально просто: для каждого пикселя вы отслеживаете расстояние от камеры до ближайшей точки. Точки, которые находятся далеко от камеры (после произвольного «дальнего» обрезания), исчезают до какого-то однородного цвета, обычно светло-серого. Точки, которые находятся ближе, чем произвольная «ближняя» отсечка, вообще не модифицируются. А цвет точек между ними - это некоторая интерполяция естественного цвета точки и цвета тумана. Какой тип интерполяции вы делаете, это в основном художественный выбор.

Рисовать дым - сложная задача. Одним из распространенных подходов является использование системы частиц. Каждая частица в системе представляет собой клуб дыма. Более крупные частицы быстрее, но выглядят не так реалистично. Затем вы анимируете кусочки дыма, используя любой подход, который дает вам желаемый вид, и рисуете полупрозрачный шарик для каждой моделируемой частицы дыма.

...