×
Меню
Индекс

Kf подробнее

 
Кф файл, автоматически создается в 3д редакторе когда:
На один из объектов в сцене добавляется Ноте-трек с некоторым кол-вом ключей.
В которые вносятся текстовые команды-описания.
Это и приводит к созданию кф файла при экспорте.
Если текстового трека не создавалось, Кф файл не будет создан, но только ниф файл.
Также, следует учитывать набор флагов экспорта для НифТулз модуля.
 
Примечание.
Здесь и далее.
Кость = пустая нода на которую воздействует анимационный контроллер.
Т.е. в 3д МАХ для анимации движения (существ) объектов, как правило используется Biped в виде скелета.
Как следствие, название его составляющих и называются Костями.
 

Об организации КФ файла.
 
NiSequenceStreamHelper - это аналог Root Node (корневой ноды) ниф и Хниф файлов.
Т.е. NiSequenceStreamHelper всегда первый объект в сцене КФ файла.
 
NiSequenceStreamHelper содержит ссылки на:
NiTextKeyExtraData и NiKeyframeController.
NiTextKeyExtraData содержит ссылку на NiStringExtraData.
Т.е. Кф файл, всегда содержит только эти 3 объекта.
 
В которых сохраняются:
- имена объектов которые будут получать анимации.
- контроллеры анимации кейфрейм типа, для перечисленных объектов.
- текстовые команды на вызов групп анимаций.
Ничего другого сюда не может быть помещено.
 
NiTextKeyExtraData - здесь все просто, это список текстовых ключей с названиями анимационных групп.
Ключ, время, название группы.
Список допустимых анимаций см. здесь.
Это самое простое, что можно редактировать в этом файле.
 
NiStringExtraData содержит список имен объектов задействованных в анимациях.
Т.е. NiStringExtraData это список целей для контроллеров.
Сами объекты (обычно это кости скелета модели) находятся в Ниф и Хниф файлах.
Т.е. имена в списке и имена в тех файлах, должны совпадать.
Если что-то, где-то отсутствует - возникнет ошибка и игра, скорее всего, улетит в КТД.
Работает это в порядке построения списка!
Т.е. первый в иерархии Keyframeконтроллер, берет имя первого же в списке NiStringExtraData объекта и так далее.
Уважаемый Olol подтвердил эти данные.
Сам список объектов в Кф файле составлен в произвольном порядке, т.е. корневой объект скелета (bip01) может находится в любом месте.
 
NiKeyframeController  Содержит все анимации движения "костей" скелета.
Никакой разницы по настройкам ключей, или иных параметров, у этого контроллера здесь и в ниф файлах - нет.
Разве что, здесь, в разделе Target указан корень КФ файла, а не имя целевого объекта.
Как это можно видеть в настройках Кейфрейма в Ниф файлах.
Либо, в слоте Target может быть и вовсе пусто, т.е. Target = none.
Это зависит от модуля экспорта.
Если ТЕСэкспортер, или Нифтулз, то в Target будет указана нулевая нода, т.е. здесь это NiSequenceStreamHelper.
Если ФФЕ - слот Target будет пустым.
Для МВ, похоже, без разницы. Работают оба варианта, с указанием имени и без оного.
 
ВАЖНО!
Если в  KF - есть только текстовые записи (т.е. только строка NiTextKeyExtraData), ТЕС КС будет генерить краш!
*Такое может случиться, если создать Note Track, но не установить ключей анимации хотя бы одному объекту в сцене на Time Line.
*также, если создавался объект только через использование морфинга и в сцену не было добавлены "кости".
Т.к. данные анимации морфинга НЕ записываются в КФ файл!
 
Т.е. КФ файл, должен ОБЯЗАТЕЛЬНО иметь хотя бы один NiKeyframeController с одним, или более ключами.
 
Чтобы избежать такой оказии, необходимо создать объект типа BONE (в сцене 3д МАХ) и установить хотя бы один ключ.
Можно в начале анимации.
Но можно и несколько; в начале, в середине и в конце.
При этом, не обязательно что-то делать с этим объектом.
Т.е. только "кости" с анимацией движения записываются в Кф файл!
 
Впрочем, более правильным будет, создать bone и присоединить к нему морфированный объект (см. фуражиров квама).
И уже этот объект использовать для перемещения (существа) в сцене.
Этого будет достаточно, чтобы получить все записи правильно.
 
Это же верно и при создании КФ файла с нуля через нифскоп.
Необходимо добавить кейфреймконтроллер и установить в нем ключи.
Достаточно одного, двух.
 
Т.е. ВАЖНО!
Что бы в Kf файле обязательно был не только кейфрейм контроллер, но и хотя бы один фактический ключ анимации в нем.
Т.е. строка NiKeyframeController->NiKeyframeData->Num Keys с активными ключами!
Если в кейфрейм контроллере нет ключей, или они не полны, это также приведет к вылету игры!
 
Примечание (верно для ТесЭкспортера и Нифтулза).
В КФ файл пишется только анимация костей (объектов типа Bones, либо иных примитивов которые были использованы в качестве костей при создании Skinа) и создаются текстовые ключи с названиями групп.
 
Примечание (для ФФЕ модуля по экспорту существ и прочего, что требует КФ файлы).
См. здесь.
 
И такой файл, также будет создавать проблемы!
Здесь есть контроллер, но он не имеет активных ключей.
Пример подобного сбойного файла.
 
Важно!
Имена (набор) "костей" в Ниф, Хниф и Кф файлах должны совпадать!
Особенно для существ.
 
- Набор костей, или точнее, анимируемых бъектов, должен быть одинаков для KF и NIF файлов!
Т.е. если в КФ файле есть объект указанный в его NiStringExtraData, но отсутствующий в Ниф файле - возникнут ошибки.
Обычно такие:
Creature "XXXX" Has no animation groups Morrowind will crash.
 
Либо, что редко, но бывает - у существа вовсе нет КФ файла.
Такое случается обычно по случайно ошибке, либо произошла какая-то путаница в файлах.
 
А иногда - в результате неправильной очистки Ниф, или Хниф файла.
Т.е. теряется какая-нибудь «лишняя» кость, которая, однако, была упомянута в Кф и "ищи хомяка в поле"!
Такое, конечное же не может не привести игру к разного рода ошибкам анимации, или простому крашу (КТД) вовсе без каких либо "уточнений".
 
В ниф и Хниф файлах могут быть объекты не указанные в КФ файле, но в них должно быть все, что записано в КФ!
Ниф файл некоторого существа.
Как видно, набор костей довольно мал.
А это КФ файл, того же существа.
Кол-во костей в разы больше!
 
Т.е. из КФ шло куда больше вызовов, чем имелось целей в Ниф файле.
 
Логично, что модель не могла работать корректно.
Поэтому, и требуется одинаковый набор костей в НИФ, КФ и Хниф файлах!
 
 

Примечание.
Редактирование в нифскопе 1.1.3 версии, требует особого внимания и определенной последовательности действий!
Иначе, можно случайно "убить ключ" анимации.
См. тему NiTextKeyExtraData.
 
Примечание.
Кф версии 4.2, закономерно не могут работать в МВ.
Но, также и НЕ могут быть импортированы в 3д МАХ посредством Нифтулз модуля.
 
Примечание.
НПС (и игрок) могут использовать КФ файлы существ, в случае если те имеют подходящий набор костей.
Т.е. используя кнопку Add Animation в редакторе, можно подключить Неписю анимацию скампа, или - Альмалексии для Игрока.
При этом, если в таких файлах нет некоторых групп (например плавания) они будут автоматически подгружены из базовой файлов анимации.
Что позволяет создать особливо "продвинутых" НПС... например; которые думают, что они скамп(С).
Также, можно заметить, что импорт любого существа в 3д редактор, позволит переименовать его "кости" правильно и после экспорта, подключить анимации к Нпс (или игроку). Т.е. главное чтобы наборы (имена) костей совпадали.
 
Примечание.
КФ файл, требуется для создания продвинутой анимации существам, активаторам, дверям, контейнерам и светильникам.
Все прочие типы объектов, не могут использовать продвинутые анимации, т.е. использовать Кф файл (ванильными средствами).
Наличие возможности использования КФ файла, подразумевает возможность дополнительно управление анимациями объекта, через скрипты!
 
Примечание.
Кф файл не возможно редактировать в целях исправления позиций костей и сему подобного.
*теоретически конечно можно, но вот делать это придется в слепую, в прямом смысле...
Но,  править записи о группах анимаций, добавляя, изменяя и меняя порядок - легко!
 
Примечание.
Также наличие у объекта Кф файла, блокирует, находящимися здесь контроллерами анимации, позиции (костей) во всех прочих файлах.
Т.е. в nif и xnif изменение позиций (костей) становится невозможным!
Игра всегда будет помещать их в значения заданные контроллерами из КФ файла.
Т.е. если некий объект упомянутый в КФ файле, был перемещен (через Нифскоп) в Хниф файле, то все его изменения будут сброшены в исходное!
Если же передвинуть родительский объект, который не указан в Кф файле, то это приведет к разного рода глюкам.
Т.е. эффект будет, но делать этого не стоит!
Если же в Хниф файле, у объекта есть свой Кейфрейм, а также есть вызов из Кф файла - это приведет к глюкам!
Кроме случая когда оба контроллера одинаковы.
 
Примечание.
Хниф файл может использовать свои кейфрейм контроллеры на объектах не упомянутых в КФ файле.
Т.е. если в Хниф файле есть отдельная цепочка костей, ее можно анимировать без каких либо проблем.
См. призраков предков в Симфонии, где таким образом сделана анимаций рукавов их мантий.
 
Итого.
–     КФ. Только анимация "костей" и записи о группах оной.
Еще, возможно добавление, или исправление текстовых записей об анимационных группах.
Например, заменить:
Idle: Start
На;
Idle2: Start
И тому подобное.
 
В 4.2 версии движка, Кф файлы были приведено в более удобный и логичный вид.
Появился дополнительный раздел "controlled blocks".
Где и указаны все внутренние связи.
Все стало более наглядно и удобно для ручного редактирования.
Хотя, создатели движка, вряд ли тогда думали, что кому-то придет в голову править файлы анимации руками на прямую...
4.0 версия Кф файла.
4.2 версия.
 
Выделен блок текстовых ключей.
Рендер пустой, т.к. Здесь нечему отображаться.
 
Всегда после завершения редактирования текстовых записей в нифскопе 1.1.3 версии следует жать Enter!
Нельзя просто кликнуть мышью (что делается обычно) на пустом месте и перейти к следующему ключу.
Впрочем, даже нажатие Enter не всегда гарантирует правильность сохранения изменений!
 
  - fixed \r \n issue.  (Embedded carriage returns can be added using the Shift+Enter or Alt+Enter keys.)
т.е. в версии 1.1.3 и выше убрали отображение кодов r\n.
Что было в ранних версиях.
 
Однако, это стало приводить, к тому, что в некоторых случаях, Нифскоп, забывает правильно поставить эти скрытые знаки, а игра принимает их за название группы анимации!
Старая версия нифскопа.
Не вызывает бага с редактированием записей, однако, не так удобна в работе.
Между записями, требуется в ручную, добавлять \r\n.