×
Menu

NiBSAnimationNode - parameters and flags

 
Примечание.
Верно и для NiBSParticleNode.
Т.е. все эти поля можно видеть и в настройках той ноды.
 
Animated
Определяет значение состояния анимации вложенных объектов.
 
Если True и контроллеры оных имеют флаг 8, то анимации будут проигрываться постоянно.
Если True и флаг контроллера 12, будет одноноразовый старт.
После завершения анимации, объект застынет в финальной позиции и останется в ней, пока ячейка не будут полностью перезагружена.
 
Если False, то не анимации не будут проигрываться даже если 8.
Но если используется КФ файл, то анимации будут работать.
Т.к. получают управление от "внешнего источника".
 
Управляется флагом.
 
NotRandom
Определят использование случайной поправку ко времени старта анимаций.
Т.е. если TRUE поправка ко времени старта анимации, НЕ БУДЕТ использоваться.
Все копии объекта в сцене будут проигрывать анимации синхронно.

Если False - будет добавляться некоторая задержка ко времени старта анимации.
Либо анимация, начинается со случайного кадра с некоторой поправкой от времени начала оной.
Время задержки, по видимости, определяется случайным образом и находится в строке Phase Init.
 
Управляется флагом.
 
FirstTime
Возможно флаг влияет на определение какой объект будет работать первым.
Т.е. чья анимация пойдет раньше других.
Либо какой объект появился в поле зрения камеры первым.
И также воздействует на его анимации.
Либо влияет на время старта контроллера, какой из контроллеров запуститься первым.
 
Смена флагов ноды, или назначение контроллера, а равно использования экстра свойств - никак не повлияли на смену этого значения.
Оно всегда = False.
Получить смену значения средствами нифскопа, т.е, не удалось.
 
Greatness7 писал:
when the mesh is rendered it checks the flag. if its the first time then it randomizes the phase stuff, if its not first time it leaves it alone
you can't set this flag in the actual nif file, it only exists ingame.
 
Т.е. (вероятно) этот флаг меняется только движком игры (во время сеанса) и вероятно один раз, после чего может сбрасываться.
МВСЕ может управлять значением этого флага.
 
Manage
По видимости, работает только в связке с первым значением:
Animated = true.
Если оно true то и manage тоже = true.
Иначе false.
По крайней мере, обратного получить не удалось.
Т.е. ни смена флагов, ни добавление контроллеров, или специальных нод, не показало возможности отдельного управления именно этой строкой.
 
Указывает NiBSAnimationManagerу не (?) управлять этой нодой, позволяя ей проигрывать анимации постоянно.
Или что-то вроде этого.
Т.е. значение показывает состояние этой ноды применительно к NiBSAnimationManager.
 
Greatness7
it just means the animation is being managed by an NiBSAnimationManager
 
Displayed
Отвечает за отображения объекта.
Если true - видим.
Если False - не видим.

Управляется флагом.
Стандартные значения.
Четные флаги объект отображается, нечетные - скрыт.
 
AlwaysUpdate
Похоже, отвечает за постоянное отслеживание состояния анимации.
Даже если объект находится вне поля зрения камеры и не имеет управляющих КФ файлов!
 
Значение флага ноды, на этот параметр оной, НЕ влияет!
 
Включается (true) только при наличии на этой ноде контроллера Невидимость, или Кейфрейм.
Если эти контроллеры наложены на ноду, то, вне зависимости от своего статуса*, активируют это поле.
Т.е. здесь будет значение True.
Если на этой ноде нет этих контроллеров, всегда = false.
 
Это полезно использоваться если требуется всегда проверять в каком фрейме находится анимация вложенных объектов.
Также, несколько сокращает появление зависающих после кончины существа частиц.
См. поднявшихся спящих, если они отыграют кончину за спиной игрока, то шанс увидеть болтающиеся в воздухе частицы, крайне высок.
Но если активировать это значение, у частиц больше шансов полностью исчезнуть.
К сожалению, не 100%.
Т.е. включение этого параметра в этой ноде (а равно и для ноды частиц) не решает эту проблему полностью.
 
*Контроллеры могут быть неактивны, т.е. с флагом 0 и даже без ключей в своей дате.
Т.е. контроллер не требуется как-то особенно настраивать задавая, те или иные, значения.
 
Greatness7 писал:
the thing with AlwaysUpdate is that I think it is setting selective update to always update seems to set the always update flag
alwaysupdate makes it update every frame.
 
That other mod I linked uses the same trick, but without using NiBSAnimationNode.
Because NiBSAnimationNode is only needed for non-creatures and that mod only messes with creatures.
But adding the NiVisController seems to achieve the same end result there, of making animation keep playing while off screen.
So I think that what ever logic that gets performed when NiVisController is attached that sets AlwaysUpdate to true is actually just setting something else on the NiAVObject that just so happens to also set AlwaysUpdate if it was a NiBSAnimationNode kinda convoluted
 
Phase Init
По видимости управляет задержкой от времени старта анимации.
Что и позволяет получать рандомный старт анимаций при флага 32 и подобных ему.
 
Т.е. работает также, как и для контроллеров анимации.
Если Animated = true и NotRandom = False (т.е. флаг 32).
 
Возможность ручного управления этим полем не известна.
Т.е. нет данных по воздействию на значения этого поля.
Разве что, МВСЕ может это использовать (?).
Ни в ниф файле, ни в 3д МАХе, не было найдено возможностей воздействовать на это значение.
Т.е. движок автоматически устанавливает здесь значения.
 
Greatness7 писал:
PhaseInit is global value, not part of any particular nif
the game calculates a random value for it on the first load and that gets assigned to all controllers under the NiBSAnimationNode
 
 
Примечание по флагам.
Строка AlwaysUpdate = true верна в случае наличия NiKeyframeController, или NiVisController на этой ноде.
Разное значение Phase Init по причине тестирования разных моделей.
32
42
64
96
106
128
130
164
172
202
234
256
382
512
56444
 
Примечание.
Самый ходовой флаг - 42, т.к. создается при экспорте этой ноды из МАХа.
Затем можно использовать - 32. Хотя, наверное лучше использовать именно 32 в качестве основного.
64 - для объектов типа магического щита (который призывается заклинанием "щит").
128 - для решения проблем с нодами частиц у существ (?). А равно полезно для щитов магии.
130 - аналогично. Используется для частиц.
164 - используется в частицах.
256 - также.
 
*128 - хотя значение Animated = false это не важно, в случае использования в файлах существ, или в магических щитах.
Т.к. в этих случаях, анимации активируются от подключения к базовой ноде НПС, или существа.
Что и позволяет работать ей более правильно.
Но нельзя использовать флаги с Animated = false для прочих случаев!
Т.в. в моделях предметов, или статиков.
Здесь анимации просто перестанут работать, т.к. не будут получать "внешнего триггера" на запуск.
 
Примечание.
Любые нечетные флаги приведут к скрытию ноды и всего того, что в ней.
 
Примечание.
При схожих флагах NiBillboardNode будет иметь иной тип воздействия на вложенные объекты.
Обращайте на это внимание, если преобразуете анимационную ноду в NiBillboardNode.
Флаг может сохраниться, если не был обновлен вручную.
NiBillboardNode может иметь режим с 42 флагом.
 
Примечание.
Если использован флаг 106, вместо 42, то, в этом случае, ВСЕ копии объекта в сцене будут играть анимацию синхронно!
Т.е. все копии объекта в локации будут одновременно проигрывать свои анимации.
Верно и для локального использования в ниф файле!
Если несколько вложенных анимационных нод, начали показывать рассинхрон своих анимаций - используйте 106ой флаг!
Вместо 42.
 
Примечание.
Возможны флаги 32, 42, 64, 128.
32 флаг можно использовать для снятия ряда ограничений в анимациях брони.
64 (128) были отмечены как крайне полезные в моделях магических щитов!
Здесь такое значение флага предотвращает дрожание модели при движении игрока (или НПС).
Также, в ванильных моделях, встречаются флаги 164, 202 и 234.
Это можно видеть в файлах частиц, например; в ex_lavacave_spout10.nif
Вероятно связано со сменой метода старта частиц. См. здесь.
 
Примечание.
Кроме работы анимации, флаг кодирует и настройки просчета коллизий!
Во многих случаях это единственное отличие...
Т.е. флаг 32 отличается от 42, только этим.
Это можно видеть в SceneGraph (SSG), вызывается по F10 в редакторе.
 
Примечание.
Было сообщение о работающем флаге 130.
Вероятно, число эффективных флагов может оказаться несколько больше, чем предполагалось изначально.
Отследить, на что влияет изменение флага, можно через SSG.
Но есть вероятность, что он показывает не все и, какие-то особенности остаются за кадром. (?)
32 флаг от 42го, отличается только методом детектирования коллизий, но были сообщения о его преимуществе в ряде случаев.
См. выше.
 
Примечание от Greatness7.
NiBSAnimationNode flags:
Animation properties are stored in the flags value, often 42 as commented by NifSkope. Value 32 or 42 is often needed for objects to animate, with exceptions for creatures or animated equipment worn by the player. Expand to see more flags:
 
1 = hidden (not rendered by default, may still be unhidden by a visibility controller)
2 = triangle collision detection, 4=bounding box collision detection (usefulness is unknown)
8 = ignore skin influence
16 = unknown, not used
32 = ignore parent animation (without this the animation will use keyframes from its parent node)
64 = no randomness (several NiBSAnimationNode nodes will start at different times without this)
128* = attach particles to parent (if the object's coordinates change, particles will move with it)
256 = unknown, only used on the par9ticles emitter of "smoke_green.nif"
 
Examples:
42 = 32+8+2
96 = 64+32
106 = 64+32+8+2
 
NiBSAnimationNode has flags 106, aka 2, 8, 32, 64.
First two are collision related,
32 is Animated and 64 is NotRandom