Вы здесь:

Total War моды

ТУТОР: Работа с анимацией (Medieval 2: Total War)

Урок по работе с анимацией в Medieval 2: Total War

Анимационные утилиты:

руководство пользователя и учебник

Версия 1.1

 

Исследователи: GrumpyOldMan, KnightErrant, Bwian, zxiang1983 иCasuir

Автор: KnightErrant

 

Перевод: Tryggvi

© 2011. СиЧъ. Курень Толмачей.

 

1. Введение

 

Это руководство пользователя описывает работу с различными утилитами, разработанных для просмотра и изменения файлов .cas. Это непрерывное исследование, потому, надеемся, позже будут добавлены новые утилиты, дающие больше возможностей. Анимационные утилиты предназначены для использования совместно с Milkshape для объединения и извлечения анимации. Некоторые из этих функций работают как в файлах .cas, так и в бинарных файлах .ms3d (Milkshape), пользователю понадобится меш GrumpyOldMan’а для ms3d-конвертера или конвертер меша Python KnightErrant’а. Последний – в особенности для ездовых животных, таких как верблюды, слоны или лошади.

 

Две утилиты  –  exportextrabonesskeleton и reorderbones – предназначены для нестандартных скелетов с дополнительными костями, например, для пеших юнитов с добавленным хвостом. Это пока экспериментальные программы, так что ждите сюрпризов, когда будете с ними работать. В настоящее время мы добавили две хвостовых кости бронированным сержантам, создав юнит «бронированные сержанты-мутанты», кости которого были переупорядочены с помощью reorderbones, так что кости оружия/щита следуют за двумя новыми костями. Далее новый скелет был экспортирован в новый вид анимации с помощью exportextrabonesskeleton. Однако единственный способ сделать измененный файл .ms3d обратно мешем – это воспользоваться конвертером меша Python, который был только что обновлен до версии 1.0.4

 

Эти утилиты, по идее, должны работать только для анимации, доступной в продающейся в розницу версии игры. Папка анимации Caliban’а содержит гораздо больше, чем доступно в продающейся игре, причем далеко не всё из этой анимации было изучено, так что «для умного сказано достаточно». Однако zxiang1983 экспериментировал с анимацией чарджа в папке new_2h_axe_halberd и нашел кое-какие виды анимации с костями, расположенными не по порядку. Если открыть их через animmerge, а потом извлечь их снова при помощи animextract, то можно поставить их в стандартном порядке и использовать в игре. Таким способом проверялись только эти файлы, но, возможно, это будет полезная процедура при работе с другими видами анимации, в которых проявляются проблемы.

 

Другие утилиты полезны только для целей данного исследования, но все же мы их тоже здесь опишем. Они могут оказаться полезными для других мододелов, изучающих анимацию.

 

Я не знаю, буду ли я это часто повторять в последующем обсуждении, но я замечу, это здесь: правило СА состоит в том, чтобы данные о положении кости всегда определялись посредством смещений (по осям координат, если я правильно понял весь последующий дискурс - Tryggvi) и без вращений (rotation). Это значит, что стоит всегда следовать совету GrumpyOldMan’а и использовать команду меню tools ->zero joints, чтобы удалять любую постороннюю информацию о вращениях из вашей модели. Это не будет иметь никакого заметного эффекта – если вы будете пользоваться этой командой. Но если вы это забудете и в описаниях ваших скелетов будут вращения, то после совмещения анимации будут происходить очень странные вещи. Например, что-то в духе «Матрицы», когда ваши юниты делают забавные наклоны назад, ну и другие странные проделки. У меня такое случалось не раз.

 

2. Запуск анимационных утилит

 

Положим, файлы, упакованные в zip-архив, уже извлечены в какую-либо нужную рабочую папку. Обычный способ запустить Python-скрипт – просто дважды кликнуть на нем в Windows Explorer. Это вызовет диалоговое окно, как показано на Рис. 2-1.

 

Рисунок 2-1. Главное диалоговое окно Animation Utilities.

Иногда предпочтительнее другой способ, при котором используется постоянное окно DOS. В данном случае, нужно запустить окно DOS через Windows: Start ¡>Programs ¡>Accessories ¡>Command Prompt. Чтобы сделать ярлык на рабочем столе, просто перетащите Command Prompt из меню Пуск. Затем можно кликнуть правой кнопкой на ярлыке, выбрать свойства и поменять графу “start in:”, указав в ней путь к папке, куда вы установили Animation Utilities. Сделав это, наберите Python в строке DOS. Включится интерпретатор Python’а, командная строка которого выглядит примерно так >>>. Наберите import animationutilities в строке, чтобы запустить скрипт. Преимущество этого способа в том, что DOS не закрывается в случае, если скрипт не сработает/заглючит по какой-либо причине, вы сможете понять, что он не сработал и на что именно жалуется Python. Это будет полезно для публикации баг-рапортов.

 

3. Утилиты

Основное диалоговое окно включает девять главных кнопок и девять маленьких «инфо»-кнопок. Инфо-кнопки кое-как помогают пользователю понять назначение связанных кнопок утилиты. В этом руководстве представлено краткое содержание этой информации. По большей части они сообщают пользователю о том, каково будет имя файла на выходе и в какой папке он появится. Теперь давайте пробежимся по утилитам.

 

3.1.Animmerge

Animmerge используется для чтения анимации  в файлах .cas и для совмещения ее с бинарный файлом Milkshape’а .ms3d. Затем можно через Milkshape запустить анимацию и сделать в ней изменения. Чтобы запустить утилиту, кликните по кнопке animmerge’а – появится окно выбора файлов, как показано на Рис. 3-1.

 

Рисунок 3-1. Окно выбора файлов  .ms3d Milkshape’а..

 

В данном случае в окне выбора файлов используется фильтр файлов*.ms3d, т.к. утилита требует от пользователя выбрать файл .ms3d, чтобы использовать его затем в качестве базы или сырья для анимации. Предположим, что мы хотим сделать анимацию fs_horse_jump (прыжок лошади) на базе файла mount_barded_horse_lod0.ms3d. Мы пороемся в окне выбора, пока не найдем папку, где лежит требующийся конвертированный файл, и дважды кликнем по нему. Тут вылезет еще одно окно выбора с фильтром файлов *.cas. Теперь пользователь должен выбрать анимацию, чтобы совместить ее с юнитом. Мы переходим в папку анимации Caliban’а, далее в папку fs_horse, выбираем двойным кликом файл fs_horse_jump.cas. Наконец высвечивается диалоговое окно, которое требует от пользователя ввести Frames Per Second speed (количество кадров в секунду). Оно показано на Рис. 3-2. Скорость в 20 FPS – принятая в игре, но она зачастую слишком быстрая, чтобы проверять анимацию. Значения между 2 и 5 обычно лучше всего подходят для очень долгой анимации. Конечно, можно и просто ???, так же как и в keyframer’е Milkshape’а.

 

Рисунок 3-2. Диалоговое окно для определения частоты кадров в секунду (Frames Per Second speed).

Тут утилита должна запустить и создать файл .ms3d, совмещенный с анимацией. Новое имя файла образуется путем объединения основное имени файла .ms3d с именем анимационного файла .cas, используя между ними связку “_animby_”. В случае нашей лошадки, итоговое имя файла будет – mount_barded_horse_lod0_animby_fs_horse_jump.ms3d.

Рисунок 3-3. Анимация fs_horse_jump.cas, воспроизводимая в keyframere Milkshape’а во время прыжка лошади.

 

 

Несмотря на многословность, такой способ наименования хорош, чтобы помнить, с какой из нескольких анимаций вы могли бы поработать. Этот механизм также используется для наименования анимаций, которые извлечены из этих файлов с помощью animextract, описанной далее. Рис. 3-3 показывает анимированный файл в Milkshape’е в тот момент, когда лошадь совершает свой прыжок.

 

Заметка по программированию: заголовок, структурные данные и нижний колонтитул/подпись из файла .cas хранятся в виде ASCII-строк в комментариях к joints – комментарии 0,1 и 2. Это можно посмотреть, выбрав один из первых трех joints и кликнув по кнопке комментариев. Эти данные жизненно необходимы для корректного восстановления файла  .cas, и их нельзя изменять.

 

3.2. Animextract

 

Эта утилита извлекает анимацию из файла, созданного в animmerge. Иногда она просто используется, как показано во Введении – когда файл с неупорядоченной анимацией обрабатывается через animmerge и тут же извлекается, чтобы получить анимационный файл с правильным порядком. Тем не менее, в основном она используется после того, как пользователь внес изменения в анимацию. Чтобы запустить ее, просто кликните по кнопке animextract в основном диалоговом окне и, используя появившееся окно выбора, выберите нужный файл .ms3d, содержащий анимацию. Итоговый файл будет иметь имя, состоящее из части, следующей за “_animby_” и дополнительного элемента “_modified”. В нашем случае это будет выглядеть так: fs_horse_jump_modified.cas.

 

Кусок modified нужен для того, чтобы пользователь ненароком не перезаписал исходный файл .cas, в случае если он лежит в программной папке: т.к. неизвестно, где лежит этот оригинал файла, то файл сохраняется в папке, содержащей саму программу animationutilities. Пользователь должен будет переименовать итоговый файл и переместить его в нужную папку, чтобы поставить измененную анимацию в игру.

 

3.3.Extractskeleton

 

Эта утилита нужна пользователям, которые делают собственные модели с измененными скелетами, например, гнома. Работает она для людей и трех стандартных ездовых животных. Будет работать она и для юнитов с дополнительными костями, но т.к. никак неизвестно, какой должная быть структура/иерархия костей, она вводит число костей 99, когда не может распознать название кости. Другими словами, четыре скелета – это хардкод программы, используется название первой кости, чтобы сделать выбор между человеком, лошадью, верблюдом или слоном. Когда идет несовпадение с 20 стандартными костями человека или верблюда или с 24 стандартными костями лошади или слона, утилита устанавливает иерархическое число костей 99. Пользователь должен будет отредактировать готовый файл, чтобы установить нужную иерархическую структуру. Это удобная утилита, которая извлекает скелет для дальнейшего его использования в exportskeleton, которая прописывает новый скелет во все файлы .cas выбранной папки анимации (описано далее). Ее также можно использовать с утилитой exportextrabonesskeleton.

Чтобы запустить ее, кликните кнопку extractskeleton в основном диалоговом окне. В появившемся окне выбора пользователь должен выбрать файл .ms3d, откуда будет извлекать скелет. Этот скелет записывается в файле с ASCII-текстом, называющемся extracted.skeleton. Его нужно переименовать более подходящим образом, с расширением .skeleton – например, dwarf.skeleton. В каждой строке файла содержатся координаты x, y и z кости, иерархическое число и название кости. Заметьте, что т.к. правила CA и Milkshape отличаются в разном знаке (т.е. +/-) координатыx, скелет может выглядеть задом-наперед, если смотреть на него в Milkshape’е. Дело в том, что знак уже изменен, чтобы  скелет был готов для экспортирования в анимационные файлы СА.

 

3.4.Exportskeleton

 

Она используется и для экспортирования скелетов с нестандартными размерами, и для масштабирования анимационных данных во всех файлах .cas папки с анимацией, так чтобы все юниты, скажем так, «не теряли почву под ногами». Создание нового вида анимации для нестандартного юнита – сложный процесс, включающий много действий, так что для него будет дан учебник в последнем разделе. Сейчас же мы просто опишем механику работы этой утилиты. Чтобы запустить ее, кликните по кнопке exportskeleton в главном диалоговом окне. Окно выбора будет использовать фильтр файлов *.skeleton, так что выберите нужный вам для экспорта файл скелета. Обычно это скелет, созданный с помощью утилиты extractskeleton. После двойного клика по требующемся файлу, появляется новое окно выбора с фильтром файлов *.cas. Выберите папку, куда вы хотите экспортировать скелет и дважды кликните по любому файлу в этой папке. Название папки будет извлечено из названия файла, по которому вы кликнули, и все файлы .cas в этой папке будут пронумерованы для обработки. Наконец, появится диалоговое окно для установки масштаба анимации, как показано на Рис. 3-4. Заметьте, что значения x, y и z могут быть установлены независимо друг от друга, в зависимости от типа экспортируемого скелета. Наиболее важно значение y, которое контролирует высоту bone_pelvis (тазовая кость) над землей. В зависимости от скелета, масштабирование может быть больше или меньше единицы, в случае если скелет выше или ниже стандартного. Возможно, пользователю придется повторять этот процесс несколько раз, импортируя файл анимации в Milkshape через animmerge, чтобы проверить что ступни юнита соприкасаются с плоскостью y=0. Следует также проверить, чтобы анимация ходьбы не была похожа, например, на «катание» или «лунную походку» (ступни скользят слишком далеко по оси z, или наоборот, недостаточно далеко). Если так, то нужно настроить масштабирование по оси z. Для гнома – это единственный пример, который пробовал автор – хорошо работает установка всех значений примерно на 0,64.

 

Конвертированные файлы будут иметь такое же имя, как и оригиналы, но будут созданы в подпапке, названной convertedfiles, внутри папки с оригиналами.

 

3.5.ReorderBones

 

Эта утилита нужна для изменения структуры скелета, порядка костей в файле .ms3d, куда пользователь добавил новые кости для анимации; например, кости для создания хвоста. Milkshape, конечно, добавляет новые кости в самом конце списка, что означает, что они будет следовать за костями щита/оружия юнита. Чтобы правильно анимировать юнит, нужно переместить эти кости оружия/щита на позицию после добавленных новых костей. Утилита делает это с данными о joints, с primaryboneIDbit данных о вершинах в файле .ms3d и с secondaryboneIdbit данных о весе/нагрузке в файле .ms3d.

 

Чтобы запустить утилиту, кликните на кнопку reorderbones и в появившемся окне выберите файл .ms3d, чьи кости нужно переупорядочить.

Итоговый файл появится в той же папке, что и оригинальный, и будет такое же имя, лишь с окончанием “_reordered”.

 

3.6.Exportextrabonesskeleton

 

Как было упомянуто во Введении, эта утилита все еще экспериментальная, что значит, что я ее сделал, но она не была воспроизведена другими мододелами. Как и утилита exportskeleton, она кое в чем сложна. От вас требуется отредактировать файлы descr_skeleton.txt, battle_models.modelsdb и файл EDU, чтобы утилита работала. Положим, что вы сделали модель, включающую дополнительные кости наряду с костями оружия/щита любого стандартного юнита.

Рисунок 3-4. Диалоговое окно для установки значений масштаба анимационных данных во всех файлах .cas выбранной папки.

Утилита reorderbones используется для создания нового файла .ms3d, в котором есть новые кости, передвинутые вперед костей оружия/щита. Когда это сделано и, в качестве финальной проверки, пользователь воспользовался командой меню Milkshape’а: tools ->zero joints, чтобы удалить данные о вращении из вашей модели – эта утилита может быть использована для экспортирования нестандартного скелета с дополнительными костями в папку анимации.

Чтобы запустить утилиту, кликните на кнопке exportextrabonesskeleton. В первом окне выбора выберите экспортируемый файл .skeleton. После щелчка по этому файлу появляется другое окно выбора, которое позволяет вам выбрать папку, в которую вы бы хотел экспортировать скелет. Двойной клик по любому файлу в папке – и имя папки будет извлечено из пути к этому файлу. Наконец, появится диалоговое окно, где пользователь может выставить значения масштаба для каждой оси координат. Если у используемого скелета более короткие или более длинные конечности, особенно ноги, то масштабирование будет нужно для того, чтобы ноги «спустились на землю». Возможно, понадобится несколько повторений, чтобы достичь абсолютно корректного результата.

Конвертированные файлы будут иметь те же имена, что и оригинальные, но появятся в подпапке, названной «convertedfiles», внутри папки с оригиналами. Их следует скопировать в папку анимации Caliban’а, это очередной этап во внедрении их в игру. Эта процедура абсолютна идентична действиям с обычными скелетами, у которых изменены размеры костей, так что следуйте учебнику в конце этого руководства.

 

3.7.Convertcastotxt

Эта утилита конвертирует бинарный файл .cas в файл ASCII-текста с расширением .txt. Вся информация представлена только в десятичном виде. Это полезно для проверки конкретных анимационных файлов без утомительного использования редактора гексагонов.

Т.к. есть другая утилита, converttxttocas, для конвертирования файла .txt обратно в формат

.cas, то на самом деле можно и редактировать файл .txt, чтобы изменять анимацию. Сложно представить, когда это изменение вручную будет более эффективным или простым, чем изменение анимации через Milkshape, но возможность такая есть. Для удобства пользователя эйлеровы углы Milkshape’а – единственная информация, используемая при обратном конвертировании при помощи converttxttocas, так что пользователь может менять углы, а не кватернионы. Помните, что все данные взаимосвязаны, так что если вы пытаетесь сделать что-либо сложное, как например добавить дополнительные кадры анимации, то и данные о костях (bone section data), и данные о времени (time ticks data), и время запуска анимации (animation time entry) в заголовке – все это будет требовать изменения. Без исчерпывающих знаний о формате .cas (да даже и с ними) это плохая идея; используйте Milkshape, чтобы делать сложные изменения в анимации.

Чтобы запустить утилиту, кликните на кнопке convertcastotxt. Появится окно выбора с фильтром файлов .cas. Найдите нужный файл .cas и дважды кликните по нему. Конвертированный файл  .txt появится в той же папке и будет иметь тоже имя, что и исходный файл .cas.

Мы покажем пример итогового файла (опустив большую часть информации для краткости). Ниже показаны заголовок, размер файла, данные об иерархии/структуре, время, кости (header, file size, hierarchy data, time ticks, and bone section) для анимации MTW2_Spear_charge.cas. Первая строка 42-байтовый заголовок. Первая плавающая величина, 3.21, это номер версии. Большинство анимаций принадлежат к этой версии, хотя на данный момент можно встретить и версии 3.20, 3.18, 3.17, 3.02, 3.0 и 2.73. Группа из трёх нулей 0 0 0 и группа из трех чисел 102 (102 102 102) – байты подписи. Эти величины показывают, что этой стандартный файл .cas. Есть много других вариантов, которые встречаются до сих пор, но дальнейшее обсуждение этого вопроса относится к спецификации формата, и ему здесь не место. Вторая строка показывает размер файла за вычетом длины заголовка и длины нижнего колонтитула, которые составляют 42 и 192 байта соответственно – для стандартного файла .cas. Третья строка – иерархическое древо костей. Тут внесено число 21, т.к. в файле .cas Scene Root считается за кость. Четвертая строка – данные о времени анимации. Каждый кадр занимает 0,05 секунд или, другими словами, частота кадров в игре равна 20 в секунду. Далее идет информация о костях.

 

В другом примере мы покажем анимационные данные для bone_pelvis для той же анимации.

 

Вторая колонка – величина Y, или вертикальное смещение. Это то, что двигает модель вверх и ставит ступни на землю. Для скелетов нестандартных размеров, как упоминалось выше, это именно то, что нужно изменить. Третья колонка - величина Z, или направление-от-экрана в Milkshape. Эти величины – именно то, что двигает анимацию. Если мы назовем единицы измерения CA метрами, то этот юнит чарджит со скоростью 2,58/0,6 = 4,3 метра в секунду, или 9,5 миль в час – это скорость быстрого бега.

 

3.8. Converttxttocas

 

Эта утилита, наверно, будет использоваться реже других, а то и вообще не будет. Она нужна для конвертирования ASCII-файлов .txt, получающихся на выходе из convertcastotxt, обратно в формат .cas. Чтобы запустить утилиту, кликните по кнопке converttxttocas в главном диалоговом окне. Появится окно выбора с фильтром файлов *.txt. Найдите нужный вам файл и дважды кликните по нему. Новый бинарный файл .cas появится в той же папке, что и выбранный вам текстовый файл, и с тем же именем, но с окончанием _ modified, так что исходный файл .cas не окажется случайно перезаписан.

 

3.9. Surveycasdirectory

 

Эта утилита использовалась для изучения файлов в формате .cas. Она обрабатывает все файлы .cas в выбранной папке и делает сводку по данным, основываясь на том, какие опции выбрал пользователь. По большей части это было нужно, чтобы сделать обзор всех заголовков и подписей в подпапках анимации оригинальной игры.

Чтобы запустить утилиту, кликните по кнопке surveycasdirectory в главном диалоговом окне. Появится еще одно окно с выбором опций, как показано на Рис. 3-5. По умолчанию автоматически выбраны заголовок и окончание. Выберите любые дополнительные подвиды данных или снимите флажки с уже выбранных, как вам нужно – и жмите ОК. Далее вылезет окно выбора с фильтром файлов *.cas. Найдите нужную вам подпапку для анимации и дважды щелкните по любому файлу .cas. Имя папки будет извлечено из пути к этому файлу. Затем все файлы .cas будут обработаны и выбранные виды данных будут записаны в ASCII-файл сводки. Имя файла – имя выбранной папки с окончанием _summary и расширением .txt. Файл появится в папке, где собственно и лежит animationutilities.py. Считается, что это наиболее подходящее место (папка), в которой стоит делать общую сводку.

Рисунок 3-5. Диалоговое окно для выбора, какие виды данных файла .cas будут включены в сводку по папке.

4.0. Учебник по внедрению в игру скелетов нестандартного размера

В данном учебнике предполагается, что пользователь уже подготовил новую модель в Milkshape, использовав стандартные названия костей, но при этом изменив положение костей, чтобы сделать скелет больше или меньше стандартного. Также предполагается, что пользователь успешно конвертировал свою модель обратно в меш и вставил ее в игру, изменив файл battle_models.modeldb, а также поставил свои текстуры в правильные места. Ну и наконец, предполагается, что вы используете папку анимации Caliban’а, и знаете, как переименовывать или делать резервную копию (бэкап) файлов pack.dat, pack.idx, skeleton.dat и skeleton.idx, а также заставлять игру восстанавливать эти файлы. Сейчас же остается только изменить анимацию, чтобы в игре у нас получился необходимый размер.

Давайте договоримся, что мы делаем гнома, который использует вид анимации MTW2_2H_Axe. Также будем пока считать, что у нас есть лишь один уровень детализации (LOD) для этого гнома, называющийся  dwarf_lod0.ms3d, связанный с меш-файлом dwarf_lod0.mesh. Запись в файле battle_models.modeldb для ввода всего в игру выглядит так:

1 12 baruk_khazad
2 1 1
3   56 unit_models/_Units/EN_Lmail_Hmail/baruk_khazad_lod0.mesh 6400
4 1
5 7 denmark
6   56 unit_models/_Units/EN_Lmail_Hmail/textures/dwarf.texture
7   63 unit_models/_Units/EN_Lmail_Hmail/textures/dwarf_normal.texture
8   44 unit_sprites/denmark_Norse_Axemen_sprite.spr
9 1
10 7 denmark
11 56 unit_models/_Units/EN_Lmail_Hmail/textures/dwarf.texture
12 63 unit_models/_Units/EN_Lmail_Hmail/textures/dwarf_normal.texture 0
13 1
14 4 None
15 17 MTW2_Dwarf_2H_Axe 0
16 2
17 25 MTW2_Dwarf_2H_Axe_primary
18 14 fs_test_shield 0
19 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002

 

Заметьте, что мы используем величину 6400 после dwarf_lod0.mesh, так что переключение на спрайты не случится, пока не будет достаточно далеко (обычно это значение есть у lod3). У гнома нет attachments текстуры, так что мы дублируем текстуры. Самое главное – это строка 11 MTW2_2H_Axe 0, которая выбирает анимацию. Это именно то, что мы будем менять, когда будут подготовлены новые файлы анимации.

Все сказанное выше было лишь прелюдией, далее же представлены конкретные шаги для внедрения новых анимаций в игру.

 

Шаг 1:

Отредактируйте файл descr_skeleton.txt. Найдите раздел MTW_2H_Axe. Скопируйте его и вставьте копию после него же, а потом измените название, следующее за графой type на MTW2_Dwarf_2H_Axe. Это будет тип анимации (или название вид/семейства), который будет использоваться в battle_models.modeldb для определения новой анимации. Теперь найдите и замените все пути в новом разделе, чтобы связать их с папкой MTW2_Dwarf_2H_Axe (мы создадим эту папку позже, после всех изменений файла descr_skeleton.txt). Заметьте, что большинство анимаций движения, атаки и защиты находится в папке MTW_2H_Axe, но в то же время анимации орудийного расчета и плавания находятся в папках MTW2_Knifeman и MTW2_Crew. Их не так много, но мы должны взять их на заметку, а потому скопируем их в нашу рабочую папку, так что заодно мы сможем конвертировать и их (а если нет, то плавающие гномы и гномы из орудийной обслуги, чтобы это ни значило, могут внезапно вырасти до исходного размера, когда сработают эти анимации). Итак, эти файлы таковы:

Заметьте, что мы включили заодно и файлы .evt – просто для спокойствия. Они, правда, оказались обрезаны полями, но когда вы будете редактировать файл, то увидите их в тех же строчках, что и файлы .cas, так что вы будете знать, что копировать.

 

Покажем также отрывок из нашего файла descr_skeleton.txt с уже измененными путями.

 

Шаг 2:

Создайте новую подпапку в \data\animations, назвав ее MTW2_Dwarf_2H_Axe. Скопируйте все файлы .evt из папки MTW2_2H_Axe в эту новую папку. Вам также нужно будет скопировать файлы .evt из папок MTW2_Knifeman и MTW2_Crew, на которые идет ссылка в descr_skeleton.txt, т.е. на «орудийную» или «плавательную» часть анимационного типа MTW2_2H_Axe.

 

Шаг 3:

Теперь создайте папку где-нибудь, где удобно держать полный набор анимационных файлов для работы. Скопируйте сюда все файлы .cas из MTW2_2H_Axe. Также скопируйте все файлы .cas из папок MTW2_Knifeman и MTW2_Crew, о которых мы ранее говорили.

 

Шаг 4:

Запустите exportskeleton и выберите файл .skeleton, который вы хотели бы экспортировать, а затем выберите вашу рабочую папку, куда вы сложили все нужные вам файлы .cas. Потом введите разные значения масштаба для x, y и z в диалоговом окне масштабирования. Чтобы сразу же более-менее верно прикинуть, каковы должны быть эти значения, сравните y-смещения костей bone_rthigh, bone_rlowerleg и bone_rfoot стандартного скелета с соответствующими показателями вашего скелета. Например, сумма трёх y-смещений стандартного скелета равна примерно –0,86 (отрицательное число, т.к. они ниже bone_pelvis). У гнома это число равно -0,59, так что первая прикидка масштаба будет равна 0,59/0,86 = 0,69. Но, как оказалось, этого было недостаточно, и я в конце концов пришел к величине 0,64 как наиболее подходящей – но ведь сначала нужно от чего-то отталкиваться, не так ли?

 

Шаг 5:

Скопируйте все конвертированные файлы из подпапки convertedfiles внутри вашей рабочей папки, куда вы положили исходные файлы .cas, в папку MTW2_Dwarf_2H_Axe, которую вы создали ранее и куда сложили файлы .evt, выполняя Шаг 2.

 

Шаг 6:

Сделайте запись о вашем новом юните в EDU. Так же и в EDB – для использования в кампании.

 

Шаг 7:

Наконец, измените название анимации в battle_models.modeldb на MTW2_Dwarf_2H_Axe.

Не забудьте также изменить кол-во знаков! Кроме того, просто для проверки, измените анимацию оружия на MTW2_Dwarf_2H_Axe_primary, опять же не забыв поменять кол-во знаков.

 

Шаг 8:

Сделайте бэкап упаковочных и скелетных файлов (pack and skeleton files) в папке вашего мода \data\animations и запустите игру, чтобы снова создать их. Скрестите пальцы, теперь у вас появится возможность выпустить гномов на поле боя. Не забудьте сделать иконки юнитов и соответствующие текстовки, чтобы довести дело до конца. Маленькие парни должны выглядеть, как на Рис. 4-1.

Следует заметить, что после процедур внедрения в игру модели с дополнительными костями следует практически такая же процедура, только вы используете утилиту exportextrabonesskeleton, которая заполнит кватернионы для новых костей числами 0.0, 0.0, 0.0, 1.0 (без вращений), а для анимационных данных – 0.0, 0.0, 0.0 (без дельт), и добавит новые кости к данным о положениях/позах (pose data). Конечно, рано или поздно пользователю придется анимировать новые кости, используя animmerge и animextract, чтобы загрузить анимации в Milkshape и выгрузить их из него. Это нетривиальная задача, т.к. в некоторых типах/семействах может быть более 100 анимаций. В один из будущих релизов, возможно, будет включено нечто вроде файла с «запасами анимаций», который мог бы быть прочитан и программным способом записан в виде кватернионовых данных. Тут нужно будет пораскинуть мозгами, т.к. анимации имеют разное количество кадров (frames) – и повторяющие анимации, т.е. такие, которые связаны друг с другом, образуя продолжительное действие (например, ходьба или бег), всегда должны иметь особые конечные кадры (animation frames ending) в той же позиции, в какой они и начинаются. Т.е. чтобы не было резких скачков анимации.

 

Рисунок 4-1. Иллюстрация внедренных в игру гномов со скелетами нестандартного размера.

 

Примечание:

[1] Файл C mathlib.c в приложении msviewer, доступный на сайте Chumbalum: http://chumbalum.swissquake.ch/.

 

Перевод: Tryggvi

© 2011. Портал СиЧъ Total WarS. Курень Толмачей.