Volumetric fog
Обзор
Покажите мне человека, который бы не любил смотреть на облака. Но как их сделать в 3D? Этому мы и посвятим эту статью. Очень сложно создать настоящие облака на компьютере, возможно этому поможет спецэффект, называемый volumetric fog.
Volumetric fog - это не просто туман (затенение точки в зависимости от расстояния до нее в соответствии с какой-либо функцией), это цветные облака тумана сквозь которые можно проходить (вспомните Unreal) и которыми можно просто затенять некоторые области уровня или сцены. Они могут быть везде. В статье мы рассмотрим два пути создания этого эффекта.
Раньше туман использовался скорее не как средство украшения а как средство увеличения производительности акселераторов. На открытых пространствах можно видеть настолько далеко, что аж компьютер тормозить начинает ;). Вот программисты и нашли выход: ставили поближе заднюю плоскость отсечения, а все покрывали "толстым-толстым слоем"…. тумана. Посмотрите на Turok: за туманом еле видно пистолет в руке ;) (утрирую).
Вот после этого отступления мы и перейдем прямо к делу, то есть к нашему туману.
Туман из частиц
Первая идея, которая приходит в голову - сделать туман из частиц. Тут есть одно преимущество - управлять можно каждой частицей, делая туман неоднородным, физически правильным, движущимся и т.д. Однако есть и недостаток: угадайте, сколько частиц нужно будет для создания облачка тумана? Девять тысяч? Не-а. Наверное даже больше тридцати. А теперь угадайте - какой акселератор вытянет такую нагрузку? (фанатов
Voodoo 3 просьба не кричать и не писать письма ;). Добавьте сюда еще то, что облачка будет, предположим, три. Придется вернуться к тем временам когда все играли в разрешении 320*240 ;).Может кто-нибудь и сделает такую программу, но это буду не я.
Математически просчитанный
volumetric fogИдея проста и стара как мир: вы создаете луч, соединяющий определенную вершину или точку и позицию наблюдателя. Затем определяете, пересекает ли он куб, которым ограничена область тумана, до столкновения с твердым телом, а затем определяете цвет заданной вершины или точки в соответствии с цветом, плотностью тумана и длиной пути, пройденного лучом сквозь туман (куб).
Посмотрим как это сделано в
Unreal (интервью с Tim'ом Sweeney):"…Unreal
использует карты тумана (fogmaps), которые по концепции совпадают с картами освещенности (lightmaps). Однако, карты тумана накладываются на многоугольники путем сложения, после слияния текстуры и карты освещенности. Попиксельное уравнение выглядит так:Pixel on screen = (Pixel from texture * Pixel
from lightmap) + Pixel from fogmap…
…Многие люди не понимают трюка, состоящего в том ,что двухмерная текстура наложенная на двухмерную поверхность образуют трехмерный спецэффект, однако это так. Главная задача - пересчитывать карту тумана для каждого кадра, основываясь на положении игрока…
…Единственный метод оптимизировать процесс - использовать карту тумана низкого разрешения…"
Заключение
Таким образом, если забыть о возможности использования карт тумана, можно предположить, что туман создается таким способом:
Однако этот вариант наверняка не самый лучший. Тема остается открыта. Если у вас есть материал по этому спецэффекту, наработки или просто вам есть что сказать или спросить, пишите мне.
Пример
Опять-таки, уже существует. Скоро будет здесь. Если кому надо - пишите. Отвечу.
Последнее обновление: 22/07/99