| У посібнику розглядається експорт з 3dsMax та заміна анімації руху персонажів у грі Fallout 3.
Зміст
той, що біжить по лезу
Насамперед, поговоримо про інструментарій, для цього необхідний. В принципі, люди роблять все і через Blender, але я з ним не бум-бум, тому - 3Dmax, але з максом свої складності.
Чудовий NifTools MaxPlugins експорт анімації хоч і підтримує (в Облівіон, Фоллаут3 - все одно треба допилювати до кондиції), але у нього є одна дуже "похабна" тонкість. Він експортує ключі анімації лише з лінійною інтерполяцією між ними, а кінематика руху людини та тварин – це суцільні криві.
Тому плавна зміна швидкості обертання кісточки з позиції А в позицію Б експортером розбивається на кількість сегментів з лінійною інтерполяцією. Що видає у фіналі запис ключів зі швидкістю 160 FPS, тобто замість 2 ключів на початку та в кінці анімації тривалістю в 1 секунду буде записано 160 ключів, та ще й помножити це на 64 кістки скелета. В результаті, вага анімаційногоkf-файлу збільшується в 25-30 разів.
Як видно з назви, він розрахований на 7 версію 3Dmax, а також в силу сумісності працює з 8 версією. Але, на жаль, новіші не підтримуються і навряд чи вже колись будуть.
Update.В принципі, якщо "прокеїти" анімацію на кожному кадрі та поставити лінійну інтерполяцію на ключі, то можна буде обійтися іniftools-max-pluginsекспортером. Найпростіше таку штуку провернути, експортувавши сцену вFBX-формат, у нього в налаштуваннях експорту є параметр "запікання"анімації у кожному кадрі. І потім імпортувати FBX назад для подальшого експорту в nif.
Потрібно пам'ятати тільки, що особа актора та напрямок руху "вперед" спрямовані по+Yосі. Хоча в 3Dmax за умовчанням біпед ставиться в напрямку Y осі, тому його треба розвертати на 180 градусів. Не знаю, можливо експорт буде і коректним із положення за умовчанням, від впливу ключів з інформацією з Note-треку, не перевіряв, мені простіше розгорнути.
Підготовка до експорту
Тепер підготуємо біпед до експорту.
- Кістки біпеда повинні бути перейменовані відповідно до імен кісток скелета з файлу\meshes\characters\_male\skeleton.nif
- Цевеликі пальці рукіUpperArmTwist-и на руках.
- І, природно, до біпеда варто примудрити кістки від оригінального скелета:
- HeadAnimsна кісткуBip01 Head,
- Weaponна кісткуBip01 R Hand,
- Bip01 LPauldronіBip01 RPauldronна кісткуBip01 Spine2,
- Bip01 R ForeTwistDriverна кісткуBip01 R UpperArm.
- Призначення останньої особисто мені незрозуміле. Зрозуміло, перелінковувати з оригінального скелета на біпед треба вТ-позі, в якій біпед підганяється під розміри оригінального скелета.
- Слід відразу замінити контролер обертання дляBip01 R ForeTwistDriverзейлеранаOrientation Constraint, про всяк випадок, щоб він автоматично обертався разом з рукою.
Далі треба виправити баг із поясом.
- У мережі я знайшов лише пораду видалити вNifSkopeконтролер руху для кістки "Bip01 Spine".
- Але це, по-перше, жахливо виглядає і, по-друге, не по-джедайськи.
Рішення знайшлося таке:
- потрібно створити пустушку (Dummy);
- перейменувати її в "Bip01 NonAccum";
- вирівняти поBip01;
- повернути у глобальній системі координат на 90 градусів по осіZ;
- після цього слід змінити стандартну схему ієрархії скелетаBip01на ієрархію, як у фолі;
- для цього потрібно перекинути зв'язки "Bip01 Pelvis" та "Bip01 Spine" на пустушку "Bip01 NonAccum";
- її, у свою чергу, прив'язати до рутової кістки "Bip01".
- До речі, після введення в ієрархію пустушки "Bip01 NonAccum" у біпеді перестає працювати автоматичний скріншот пози при їх створенні (вкладка Copy/Paste в управлінні біпедом), що дещо незручно при створенні анімації. Під час роботи треба відновити стандартну ієрархію, прибравши пустушку.
- Після ієрархії потрібно додати дляBip01спеціальний трекNotesдля створення ключів з описом параметрів анімації.
- Ключі редагуються на правому кліку на них.
- На початку анімації створюється ключ, в який вписується рядок:
start -name Forward -loop -at y
- start- вказує початку сегмента анімації. В принципі, в одному файлі їх може бути скільки завгодно, та працювати з таким масивом буде незручно. У Морровінді, пам'ятаю, був єдиний kf-файл анімацій на шість із половиною тисяч кадрів, замінити щось було просто жерсть.
- -name Forward- це, власне, ім'яанімації; при створенні реплейсера ставити ім'я анімації, яку реплейсер буде змінювати, подивитися в оригінальному kf-файлі через NifSkope.
- -loop- вказує движку, що циклічна анімація.
- -at y- вказує, що відбувається облік фізичного зміщення по осі Y. Або слід використовувати параметр-at xy, щоб враховувати і бічне зміщення.
- Тобто, якщо об'єкт за час анімації зрушив з нульових координат (ходьба, як приклад), наступний цикл анімації почнеться з нових координат.
Якщо ж цього параметра не буде, то програвання почнеться з тих координат, що були на початку, так:
- За наявності команди-atвідбувається розрахунок колізії з перешкодами при русі персонажа, а за відсутності команди-atперсонаж при програванні анімації може легко пройти крізь стінку, тому що фізично його колліжен-бокс не рухається. Без параметра-atможна виконувати постановочні сценічні анімації, наприклад.
- Наприкінці анімації ставиться ключ із текстом:end.
- Також існують ключі для вказівки будь-яких моментів під час відтворення анімації, наприклад, для звуків при кроці.
- В оригінальному файліmtforward.kfу моменти зіткнення ступні із землею стоять ключі:
- 7 кадр-Enum: Left
- 8 кадр-m:L
- 21 кадр-Enum: Right
- 22 кадр-m:R
- Звуки це чи щось інше, я ще не зрозумів, але нехай будуть.
- До речі, всі ці проблеми з налаштуваннями вNotesможна зробити і засобамиCivilizationIV-MaxTools:)
Експорт біпеда
- Про інсталяцію експортераCivilizationIV-MaxToolsчитайте тут.
- Тепер про причину вибору як експортераCivilizationIV-MaxTools.
- Цей експортер під час експорту може зберігати ключі так само, як вони стоять на біпеді, а не якniftools-max-plugins, який "фігачить" все поспіль.
- Правда,CivilizationIV-MaxToolsтеж експортує з лінійною інтерполяцією, а оскільки ключів мало - то будуть ривки.
- Як вихід із становища - перед самим експортом анімацію слід "запекти":
- Після виконання цієї дії будуть створені ключі для всіх кісток скелета в кожному кадрі, цим буде прихована лінійна інтерполяція між ключами через малий відрізок часу - анімація робиться зазвичай зі швидкістю 30FPS, і це набагато краще 160 FPS запису ключів відniftools-max -plugins.
Експорт вkfз налаштуваннями експортера
- Проте отриманий kf-файл ще готовий для фолла, оскільки версія в нього розрахована під цивілізацію, і його потрібно оновити.
- Для цього застосовується утиліта kfupdater
- Автор все в Рідмі розписав, що і як, так що скажу тільки, що він зробив bat-файл із рядком:
- Цей файл слід кинути в папку зkfupdater, туди копіюється отриманийmtforward.kf.
- Батник виконується, створюючи новийmtforward-out.kf, який вже можна використовувати у Фоллауті (не забувши його назад перейменувати наmtforward.kf, ім'я реплейсера має збігатися з оригіналом ;).
- Переглянути результат можна в NifSkope, якщо захочеться.
- Для цього зmtforward-out.kfтреба попередньо видалити бранчNiStringPalette.
- Для чого він потрібен - неясно, фолл його їсть нормально, втім, як і його відсутність, а ось NifSkope не може підвантажити анімацію зkfна файл\meshes\characters\_male\skeleton.nif, якщо цей бранч присутній уkf-файлі.