NiBSAnimationNode - notes
Примечание.
NiBSAnimationNode - уникальное творение Беседки, т.е. по справкам к движку нигде не значится.
Используется только в коде Морровинда, в коде прочих игр на NetImmerse\Gamebryo замечен не был.
Анимационная нода, оказывает эффект на всех своих потомков!
Т.е. на все объекты (ноды и шейпы) вложенные в ее состав.
Примечание.
NiBSAnimationNode - Имеет ряд дополнительных полей воздействующих на вложенные в нее объекты.
Однако, управление значениями в оных, полностью возложено на флаг ноды.
Т.е. как таковых отдельных строк с настройками, эта нода, не имеет!
По флагам NiBSAnimationNode см. здесь.
Примечание.
Для просмотра таких файлов, следует ее переименовать в обычную NiNode.
После просмотра, переименовать обратно.
Примечание.
NiBSAnimationNode - необходимый элемент для любых объектов не использующих KF файла, но имеющих постоянную анимацию!
Например; фонтаны, гейзеры, бьющиеся сердца даэдр и пр.
Для таких случаев, оптимально переменить тип корневой ноды, на NiBSAnimationNode.
При этом, все вложенные ноды можно преобразовать в обычные niNode.
Кроме нод частиц, которым требуется создание хвоста за ними.
Но можно использовать и вложенные, одна в другую, NiBSAnimationNode.
Если анимация, после создания NiBSAnimationNode, так и не запустилась то, следует проверить флаг этой ноды.
Должен быть, либо 32, либо 42.
Примечание.
Особенно актуально, паковать корень в NiBSAnimationNode, для систем частиц, у которых нода разнесена с эмиттером.
Упаковка эмиттера и ноды частиц в одну AnimationNode, может быть эффективным решением некоторых проблем.
Например, если эмиттер содержит контроллеры анимаций, требующих постоянной работы.
Примечание.
Это актуально для моделей использующих частицы в первую очередь.
Но, подойдет и для других случаев.
Однако, не стоит паковать корень файла в NiBSParticleNode!
Это может повлечь проблемы с перемещением объекта в редакторе.
Обратное также верно, если частицам не нужно создавать эффект "хвоста" (trailing), их можно помещать в NiBSAnimationNode.
При этом, Анимационная нода, может быть и корнем файла.
Примечание.
Анимированная нода имеет проблемы с контроллерами завязанными на время.
В основном это актуально для существ и активаторов.
Где управление анимациями привязано ко времени и задается из КФ файла.
Т.е. он будет постоянно менять состояние объекта, отображая его, а затем снова скрывая.
Для управлением временем работы объектов находящихся в Анимированной ноде, их следует помещать в обычную Ноду!
Которой и назначать контроллеры управления анимациями относительно времени.
Т.е. анимационная нода должна быть потомком обычной ноды.
Т.е. в случае, если некоторой поверхности нужна (например) постоянная анимация движения текстуры, но в какой-то момент оная поверхность должна исчезнуть.
Следует разнести контроллеры по разным нодам.
- анимация текстуры находится на объектах вложенных в анимационную ноду.
- контроллер невидимости, размещен на ноде верхнего уровня, в которую и помещена анимационная нода.
NiBSAnimationNode
НЕ поддерживает контроллеры невидимости и не может быть использована напрямую в группах ЛОДов!
Обязательно убирайте NiBSAnimationNode во внутрь обычных НОД (NiNode).
В типовых случаях, создания постоянной анимации, достаточно использовать только одну NiBSAnimationNode .
Либо в качестве корня файла, либо - второй нодой в иерархии.
Т.е. все прочие объекты находятся внутри этой ноды.
Например; модель огненной соль с частицами огня, или эктоплазма испускающая пузырьки газа и пр.
Несколько анимационных нод, для разных деталей использовать можно, но следует учитывать их влияние на анимации вложенных объектов.
Если флаг 42 (no random = true) анимации объектов будут проигрываться асинхронно!
Т.е. у каждой ноды будет "свое" время запуска.
Если флаг 106 (no random = false) анимации объектов будут синхронны.
Т.е. все объекты будут стартовать одновременно.
Примечание.
Если использовано в существах, позволяет обходить «дерганье» (отдельных деталей) при смене групп анимаций!
Т.е. деталь в этой группе, продолжит свое движение без сброса к начальной позиции, что непременно произошло бы, если была использована обычная нода.
См. Электрического атронаха в Симфонии, к примеру.
Молнии, вокруг тела, игнорируют смену групп анимаций, сохраняя плавность своей работы.
Даже, после кончины существа, эта анимация будет продолжать проигрываться!
Т.е. при кончине существа можно скрыть анимированную ноду.
Тоже самое с объектами использующими синхронизацию с Базовой - следует назначать контроллер невидимости на родительскую ноду и скрывать ее содержимое когда оно не нужно.
Примечание.
Можно использовать для создания анимации после кончины существа.
Т.е. существо, сможет проигрывать некоторую анимацию в "позе" кончины.
Примечание.
Анимационная нода может иметь некоторые проблемы с анимациями, если ее имя указано в КФ файле.
Т.е. если некоторый объект имеющий анимации (например) движения попал в список КФ файла, то он будет проигрывать анимации согласно группам анимаций.
И не сможет полностью обходить эти приделы за счет помещения (или преобразования) его в анимационную ноду.
См. скриншот Атронаха ниже.
Оптимально разносить объекты требующие постоянной анимации, от объектов управляемых группами анимаций.
Примечание.
Если в файлах брони (одежды) не работают анимации, стоит проверить корень файла.
Превратить в анимационную ноду.
Также следует проверить флаги контроллеров.
|
|
Стоит заметить, что контроллер невидимости на этой ноде не будет работать!
Здесь ошибка, которую было сложно исправить, т.к. сама нода (Wind BoneSteаm) прописана в КФ файле, поскольку имеет некоторую анимацию.
Также, контроллер невидимости размещенный в "детских" нодах - не будет работать!
|
ходячий труп с червиями под шкурой.
Т.е. червия сделаны анимированной текстурой и для их "жизни" нужна анимационная нода.
И здесь правильное размещение контроллеров.
Анимационная нода в составе обычной, на которою и помещен контроллер невидимости.
|
|
|
Классический пример статичного объекта постоянно проигрывающего анимацию в игре.
Здесь, фонарик постоянно летает по некоторой траектории.
|
Ингредиент, сердца Даэдры.
Здесь Анимационная нода используется, как корень файла.
|