×
Menu

Texture Effect - Fog

 
Создаем слой тумана над полом посредством ОДНОЙ плоскости (шейпа) и текстурного эффекта.
 
Пожалуй, это самый простой в плане использования ресурсов вариант.
Т.е. используется только одна поверхность, как следствие кол-во вызовов минимально.
Хотя, создания тумана посредством спрайтов выглядит более интересным, их можно дополнительно анимировать и более гибко настроить.
Но в плане простоты, описываемый здесь метод, намного проще.
Кроме, собственно создания тумана над полом, его можно применять на строения и на другие объекты.
 
Примечания.
 
Дополнительные скриншоты и примечания в картинках.

Настройки для тумана над полом.
Создайте простейшую плоскость (шейп) размера 512х512 ед (к примеру). (Размер имеет значение!)
Разместите оную по нулевым координатам и упакуйте в ноду.
Т.е. Корневая нода (0) затем еще одна нода (2) и в ней уже лежит шейп (3).
 
Ноду (2) преобразуйте в NiCollisionSwitch (флаг 8) - дабы иметь возможность свободно проходить через этот объект.
 
Назначьте материал (прозрачность 0.0), альфа свойства (флаг 4845), туман (флаг 4, 0.800), z-буфер (флаг 1)
 
Т.е. в данном случае поверхность должна быть полностью прозрачной.
При полностью прозрачном материале, значение флага альфы перестает играть решающую роль, т.е. флаг 1, или 13 не добавят ничего нового к объекту.
Он так и останется прозрачным.
Но если повысить значение прозрачности материала до 0.0100 - флаги альфы начнут играть заметную роль! Т.к. поверхность объекта станет видимой.
 
z-буфер является опциональным.
 
Равно как и свойства тумана нужны лишь для предотвращения возникновения самосветимости поверхности под водой, или в локациях с плотным туманом.
 
В корень файла внедрите еще одну ноду, в ней будет находиться эффект.
Т.е. нода будет служить контейнером для управления позицией эффекта.
 
Также добавьте экстра свойства Маркера.
И скопируйте шейп (3) в корень файла.
Здесь удалите с него все свойства кроме материала и задайте правильное название.
Tri EditorMarker
Это и будет маркер.
 
Получаем примерно такой вид сцены.
 
Ноду можно не добавлять, а менять положение эффекта на прямую в его настройках.
В разделе Translation.
Но, использовать дополнительную ноду, будет удобнее.
 
На вторую ноду!
Т.е. здесь это номер 8. Обычная niNode.
Т.е. эффект будет находиться в детях этой ноды, что позволит удобно менять его положение в сцене.
 
Далее пропишите номер эффекта в дети NiCollisionSwitch ноды.
Здесь это номер 11.
Это наложит текстурный эффект на целевую поверхность.
 
Флаг на текстурном эффекта, как отмечалось, не играет явно заметной роли.
Т.е. оставляем как есть.
 
 
текстура такого вида предпочтительнее для создания тумана.
*и ее альфа канал.
В настройки эффекта пропишите текстуру.
Оптимально если она будет в виде "равностороннего пятна".
Т.е. иметь черные поля по краю и повторять сама себя по всем осям.
Текстура обязательно должна иметь альфа канал!
 
- Текстура может быть как ДДС так и ТГА.
- При этом ДДС5 (кажется) лучше чем АРГБА32.
- Размер текстуры, для четкости, лучше брать больше 512х512.
- Рисунок текстуры и ее цвет могут быть любыми, в зависимости от целей.
- Текстуры без альфа канала (тоже) можно использовать, но эффект будет другим...
Т.е. теперь используйте текстуру с альфа каналом показанного на скриншотах вида.
 
- К сожалению, в наборе ванильных текстур ничего подходящего не нашлось.
Текстуры в 64х и 128х практически не отображались, т.е. размер имеет значение.
*показанная на скриншоте текстура есть в полной версии архива с примерами и видео файлами.
Формат DXT5 512x512, лоды и прочее в обычном порядке.
 
- По видимости, не получиться использовать полностью черную текстуру, т.к. черный фон работает как прозрачность.
Собственно, как можно видеть далее на скриншотах, виден только красный цвет этой текстуры.
 
Итоговой вид сцены.
 
- КолиженСвитч нода (2) для свободы хождения через объект.
- Маркер (12) для возможности движения объекта в редакторе.
- Нода (8) контроля положения эффекта.
- Сам (11) эффект.
- И шейп (3) по которому он работает.
 
*дополнительная нода 10 не является обязательной.
Здесь это (была) Билборд нода, которая (могла бы) показывать некоторый результат на действие эффекта. Но как показали тесты, в данном случае, результат был около нулевым. Т.е. билборднода не оказывает явно заметного действия на эффект с используемыми здесь настройками.
 
А теперь самое главное!
К чему (мы) ШЛИ долгие годы (увы, без шуток).
Настройки хотя и простые на вид, но именно такую комбинацию подобрать методом тыка оказалось не очевидным.
 
FILTER_TRILERP - если какой иной, эффект может исчезнуть.
Фильтрация должна быть качественной. Но можно и поменять позже.
CLAMP_S_CLAMP_T - самое не очевидное, т.е. эффект используется без тайлинга в одном экземпляре! Включение иных режимов приводит к совершенно разным результатам!
Поиграйте с этим при случае.
EFFECT_FOG_MAP - и да фог, ака туман. Именно этот режим "герой" заметки (этой).
CG_WORLD_PARALLEL - совсем странное на вид решение, но именно они и есть ключ.
Второй.
Первый ключ это CLAMP_S_CLAMP_T.
 
Model Projection Transform оставить по нулям.
 
Хотя, как было замечено, изменение этих параметров влияет на реакцию эффекта относительно камеры. Особенно если выбрать режим CG_WORLD_PERSPECTIVE.
Т.е. поставить 0.5 0.5 1.0
даст немного иной результат (реакции) чем 0.0 0.0. 0.0.
Сейчас оставить все по нулям, да.
 
Model Projection Matrix - также оставить по нулям (сейчас).
 
И... возвращаемся к ноде номер 8!
Установить ее координаты на угол шейпа.
Здесь это: X 240 Y 240 Z 0.
Если объект имеет Z размер, то по оси Z смещаем ноду выше объекта.
Т.е.
Если объект - плоскость, поднимать по оси Z может оказаться ошибочной идеей.
Эффект может "исчезнуть".
Но для объемного объекта, поднятие по оси Z необходимо для правильно работы эффекта.
 
Такое смещение позволяет убрать эффект "перекрестья" и "градиента".
Т.е. если оставить эффект в нулевых координатах объекта, будут видны линии исходящие из центра проекции, но если убрать точку проекции за объект, это помогает избавиться от такого "артефакта".

Как отмечалось выше, можно менять позицию эффекта непосредственно в его настройках, но вариант с ноду выглядит предпочтительнее.
Либо просто "удобнее".
 
 
Собственно все, переходим в редактор!
 
Как видно, ближний угол всегда светлее, чем дальний.
При этом, вне зависимости от положения шейпа, подобное поведение сохраняется!
 
Если дублировать объект, можно повысить "плотность" тумана.
Вот это (бывает) если не сместить ноду с эффектом на "угол" шейпа.
Крестообразные линии исходящие из центра проецирования текстуры!
 
Если сместить только в одну сторону, будет одна полоса, вместо перекрестья.
 
Ноду  с эффектом можно дополнительно преобразовать в билборд ноду, впрочем, в данном случае, это не дает более интересного эффекта.
 
Т.е. использование билборд ноды, похоже, что никак не влияет на поведение этого эффекта.
Множественные тесты не показали никакой разницы в поведении эффекта при использовании этой ноды.
 
 
Model Projection Transform 0.0 0.0 5.000 и 0.0 0.0 1.000
CG_WORLD_PERSPECTIVE
Т.е. видно влияние смещения проекции на скорость удаления тумана от камеры.
Чем значение выше, тем дальше будет находиться туман.
Т.е. на скриншотах ракурс камеры НЕ изменен!
 
В целом, CG_WORLD_PERSPECTIVE работает более мягко.
Туман получается более "тонкий" за счет большей дистанции реакции на камеру.
Т.е. он быстрее начинает рассеивается, чем для режима CG_WORLD_PARALLEL.
 
Обращайте внимание, размер объекта также имеет значение!
Чем больше поверхность, тем дальше от камеры будет сгущаться туман.
И CG_WORLD_PARALLEL позволяет уменьшить это значение.
 
 
Для "3д" объекта нода с эффектом поднята на уровень верхней грани.
Для плоских объектов, только смещение XY.
При этом, если ноду с эффектом, в данном случае, поднять над поверхностью +Z, эффект перестанет работать в желаемом виде.
Т.е. положение ноды имеет весьма важное значение.
 
Но для кубических объектов, ноду следует поднимать!
Т.е. для объектов имеющих Z значение, нода ДОЛЖНА быть поднята на уровень их верхнего угла.
Иначе возникнет эффект полосы.
 
Это был основной пакет по настройке эффекта тумана.
Различные примечания по параметрами и текстурам, см. здесь.
Т.е. еще много скриншотов набежало.