×
Menu

NiTextureEffect - notes


Важно!
Такого рода "конструкция" гарантированно приводит к КТД!
Т.е. слот текстурных эффектов не может быть пустым!
Если кол-во Num effect чему-то равно, то равное кол-во текстурных эффектов должно быть прописано! Т.е. либо "все" либо ничего.
Т.е. нельзя указывать количество эффектов и не указать их номера.
Если эффекты не используются, Num Effect всегда должен быть равен нулю (0).
Однако!
В ОпенМВ  такие модели, с пустыми слотами эффектов не будут вызывать вылетов на рабочий стол (КТД).
Т.е. есть шанс получить рабочую под ОпМВ модель, которая при этом, не будет работать в чистом МВ.
*Спасибо уважаемому Shadow_Mimicry за отмеченный момент.
Будем надеяться, что это будет поправлено, тем или иным образом.
 
Представление текстурного эффекта по Графику Сцены (SSG F10 в редакторе).
Фактически сам эффект, как таковой, начинается после строки niDynamicEffect.
Все строки выше, подобны настройкам для шейпов и нод.
Т.е. текстурный эффект является подклассом обычной ноды...
Можно даже прописать ББ!
Если он включен в настройках эффекта, то появляется строка ....ModelABV.
На в игре, это ни на что не влияет.
Т.е. можно только изменять положение и поворот эффекта в этом разделе.
Но ни свойства, ни включения ББ не окажут на сам эффект явно заметного влияния.
 
Примечание.
Наличие развертки текстуры может повлиять на поведение текстурных эффектов.
Т.е. если на модели нет развертки вовсе, текстурные эффекты могут начать себя вести несколько иначе, чем с ее наличием.
 
Примечание.
Включение, выключение, или поворот нормалей в шейпдате, также серьезно влияют на поведение текстурных эффектов.
Поворот нормалей в отличные от значений по умолчанию положения может помочь корректно отобразить текстурный эффект типа SP_CUBE.
А равно будет влиять и на все прочие режимы.
Помимо этого, наличие текстуры бампа (ака нормалей) также будет оказывать влияние на текстурные эффекты, но только для EFFECT_ENVIRONMENT_MAP.
Поворот же нормалей в шейпдате, окажет влияние на все режимы эффектов.
 
Примечание.
Некорректное положение шейпа, может приводить к потере эффекта.
Т.е. если эффект не хочет проявляться на модели, можно попробовать выбрать шейп и нажать Apply.
Это сбросит точку опоры оного в нулевые координаты.
Касается некоторых случаев использования текстурных эффектов в режиме Light.
Т.е. проекция текстурного эффекта и поверхность НА которую он работает, должны менее более пересекаться.
Иначе, эффект будет работать вне поля зрения, так сказать.
 
Примечание.
Текстура назначенная в качестве эффекта ВСЕГДА использует один мип-уровень!
Т.е. всегда загружается самый большой уровень текстуры, никаких оптимизаций с поправкой на удаление камеры от объекта не происходит.
Т.е. можно уменьшать размер файлов текстур не создавая им мип-уровни в 2д редакторе.
 
Проверено в игре.
Была создана текстура с измененными мип-уровнями, однако при любом ракурсе и удалении от объекта сохранялся рисунок только первого уровня.
 
Поправка!
Это верно, но... все-таки не совсем!
Т.е. как показали тесты от 2022 года, мип-уровни все же, могут использоваться!
Но не для всех режимов!
CG_SPHERE_MAP действительно всегда использует только 1 самый большой уровень текстуры.
Но вот другие режимы, могут подгружать и мип-уровни!
Однако, эффект получается странным...
Впрочем это можно использовать!
См. здесь.
Т.е. если использовать измененные лоды в текстуре для "звезды", то, по видимости можно будет получить большее кол-во оттенков лучей!
CG_SPECULAR_CUBE_MAP
WRAP_S_WRAP_T
EFFECT_ENVIRONMENT
С разных ракурсов
 камеры.
Текстура с измененным мип-уровнями.
CG_WORLD_PERSPECTIVE
CLAMP_S_CLAMP_T
Текстура с измененным мип-уровнями.
Обратите внимание на кол-во оттенков!
А здесь текстура с обычными мип-уровнями, без изменений.
Как видно, кол-во вариаций цвета стало меньше.
Добавлен бамп, текстур с измененными мип-уровнями.
Но их влияние уже не столь заметно.
 
Для CG_SPHERE_MAP см. выше.
Для CG_WORLD_PARALLEL - эффект возникает, но не столь заметно.
Т.е. фактически, только SPHERE_MAP не может использовать мип-уровни.
 
 
Примечание.
Текстурные эффекты не умеют работать в качестве уровней у ЛОДнод.
Т.е. если в качестве детей в ЛОДах указать текстурные эффекты, работать будет только один, без учета воздействия настроек дистанции в ЛОДах.
Собственно был проведен подобный тест, впрочем заведомо ожидалось, что это не сработает.
Что впрочем не удивительно, но такой тест проводился, ради "науки". ))
 
Примечание.
При использовании проекции текстурного эффекта в режиме _PERSPECTIVE по массиву плоскостей, карта бампа, может оказывать негативный эффект.
Особенно, если в качестве текстуры использовалась базовая карта.
Эффект слишком сильно гаситься
Но это же, способно давать интересный эффект искажения текстурного эффекта.
Т.е. можно как все испортить, так и получить нечто интересное.
Также, следует учитывать МСР, который всегда сильно гасит яркость эффекта Блеска.
 
Примечание.
Текстурные эффекты не могут быть прописаны во Флип Контроллер.
Равно как и текстуры, или же сам этот контроллер, не могут использовать в слотах и настройках текстурных эффектов.
Единственное, чем можно воспользоваться для анимации смены текстур в эффектах текстурных - МВСЕ.
Которая, по идее, должна уметь перехватывать вызовы текстуры и менять одни на другие.
Примерно таким образом работает эффект зачарования.
Т.е. на уровне движка.
Которые меняет текстуры с наложенном на модель текстурном эффекте согласно внутренним командам.
 
Примечание.
Контроллер цвета фонариков можно назначить на текстурный эффект.
Т.е. указав номер оного в слоте target.
Это приведет к странного рода поведению текстурного эффекта, но не к вылету...
При этом значения в контроллере надо ставить, как 00001.
 
Примечание.
Если нода, в детях которой указаны текстурные (или световые) эффекты, находится вне корня файла, то эффекты не будут работать!
Т.е. если в разделе эффектов нод находящихся, как и положено, в корне файла, прописаны некоторые эффекты находящиеся за приделами корня файла.
 
Эффект находится, как в детях корневой ноды, так и в разделе эффектов. Это правильные настройки.
Эффект и его нода и целевые ноды, располагаются внутри корня файла.
Здесь, эффект хотя и прописан в эффектах корневой ноды, но фактически находится вне корня файла, состоя в детях другой ноды.
Настройки неправильные, эффект не будет работать!
Т.е. следите за тем, чтобы все активные элементы находились строго в корневой (niNode0) ноде!
 
Взято с одного форума:
к вопросу анимации текстуры зачарования  в игре.
Т.е. здесь это имеет анимацию ФлипКонтроллером, который, однако, нельзя применить к текстурным эффектам в моделях.
mr 007 писал:
How working the effect of enchanting in game? It's applying as texture effect? Or with another way? Like additional textures on gloss map slot. I've look on it and understood, that can't understand how it's applied on meshes in game :D Here is an animated textures, but texture effects can't work with Flipp controller. How it's Working??? 0_0
 
Hrnchamd писал:
Enchanting adds a NiTextureEffect (dynamic texture effect)
It's applied with the "environment map" mode.
The NiTextureEffect texture is manually cycled by the engine
 
mr 007 писал:
Yes, thanks! )) I've always thought like it, but the animation of this textures made me suddenly stuck. It's only from engine side? I can't see way how to apply animated textures on texture_effects in regular meshes.
 
Hrnchamd писал:
Yeah, it needs a timer and checks to stop it cycling during pause.
NiTextureEffects aren't designed to have flip style textures. I think they expect you to use render targets for that stuff.
 
Примечание.
NiTextureEffect с режимами WRAP_S_CLAMP_T и CG_WORLD_PERSPECTIVE в массиве частиц
при упаковке эффекта в билбордную ноду может давать весьма затейливые эффекты!
 

 Выдержка из оригинальной справки. (NDL Gamebryo 1.1)
 
This default constructor creates an effect with identity model and world projection and translation matrices, a filter mode of FILTER_NEAREST, a clamp mode of WRAP_S_WRAP_T, a texture mode of PROJECTED_LIGHT, and a texture coordinate generation mode of WORLD_PARALLEL.
 
Texture Coordinate Generation
 
Dynamic texture coordinate generation is the heart of the NiTextureEffect. The automatic dynamic generation of texture coordinates determines whether the effect appears to be a spotlight, a sunbeam, or the reflection of the surrounding scene. Three settings control this behavior: the texture model-space projection matrix, the model-space texture projection translation, and the texture coordinate generation type.
 
The texture coordinate generation type controls the basic source texture coordinates and the type of transform applied:
 
·         WORLD_PARALLEL: This mode takes as its inputs the world-space object vertices, transforms them by the world-space projection matrix and translation, and uses the X and Y components of the output as U and V. This mode tends to create parallel projections for sunbeam/infinite/directional lighting effects.
 
·         WORLD_PERSPECTIVE: This mode takes as its inputs the world-space object vertices, transforms them by the world-space projection matrix and translation, and uses the X/Z and Y/Z components of the output as U and V. This mode tends to create perspective transformations for spotlight or "movie projector" effects.
 
·         SPHERE_MAP: This mode transforms camera-space object normals into texture coordinates using a spherical projection. This is used to create environment-mapping effects.
 
·      DIFFUSE_CUBE_MAP: In this mode, texture coordinates are generated for each affected object by transforming the world-space object-normal vectors directly into the texture as a cube map – this capability is detailed in the System Details -- Texturing manual, but is generally used for diffuse environment mapping and projected lights.  This mode is only supported for NiRenderedCubeMap- and NiSourceCubeMap-based NiTextureEffect objects on hardware that supports cube mapping.
 
·      SPECULAR_CUBE_MAP: In this mode, texture coordinates are generated for each affected object by transforming the world-space reflection vectors directly into the texture as a cube map – this capability is detailed in the System Details -- Texturing manual, but is generally used for specular environment mapping and projected lights.  This mode is only supported for NiRenderedCubeMap- and NiSourceCubeMap-based NiTextureEffect objects on hardware that supports cube mapping.
(примечание - NiRenderedCubeMap - вероятно требуется этот элемент в движке, для нормальной работы СпекуларКуба, увы, в коде МВ такой элемент не был замечен).
 
Note that the world transforms of an NiTextureEffect affect the generation of texture coordinates in WORLD_PARALLEL and WORLD_PERSPECTIVE mode. The specified model projection matrix and translation specify a mapping from the model-space of the NiTextureEffect into texture space. The world scale, rotate and translate transforms of the NiTextureEffect are used to transform the respective model-space transformations that map world-space vertices into texture space.