ОригиналВведение.Доброе время суток. В этом туториале я покажу вам, как добавлять новую анимацию и редактировать старую.
Вначале, я хотел бы поблагодарить
mtarini, благодаря которому мы получили возможность редактировать, добавлять и вообще делать всё что угодно с Анимацией.
Итак, начнем.
Для начала -
Что нам требуется?Конечно же наличие установленной самой игры.
Mount & Blade - версии 1.011 или
Warband v1.1xx.
Mount & Blade – модульная система для версии 1.011 или
для Warband.
Программа позволяющая редактировать анимацию.
Вот две наиболее известных:
Autodesk 3ds MaxBlenderИ импорт / экспорт SMD скриптов для них.
3ds Max SMD импорт/экспортBlender SMD импорт Рабочий Blender Экспорт скрипотов.
Ну и самое главное:.
Open BRFЧАСТЬ 1 - Подготовка.
Хорошо. Прежде всего убедитесь, что у вас есть рабочая копия Mount & Blade v1.011 и ModuleSystem. Прежде чем приступить к работе с анимацией вы должны иметь некоторые знания о модульной системе. Я очень рекомендую
официальную документацию к ModuleSystem, а также документацию товарища
Jik к ModuleSystem.
Теперь давайте продолжим. Установите OpenBRF. Просто скачайте и извлеките его куда-нибудь, например на рабочий стол (Это хорошее место, лично у меня он хранится именно там). OpenBRF очень хорошая альтернатива BRFEdit, поскольку она может изменить анимацию и скелеты, которые BRFEdit не могут. Однако, поскольку OpenBRF находится в очень ранней стадии развития (альфа-стадии), к сожалению не имеет всех необходимых функций, таких как Материалы, Сталкновения или Шейдерные вкладки. Таким образом в настоящее время необходимо использовать OpenBRF только для изменения скелетов и анимации, а BRFEdit для всех остальных. Но я совершенно уверен, что в скором времени OpenBRF будет лучше и будет выполнять все необходимые функции.
Следующий шаг состоит в том, чтобы раздобыть программу, редактирующую анимации и скелеты. Blender немного сложен, но довольно неплох. Его преимуществом является также то, что он распространяется бесплатно. Другое решение - 3ds Max. Он лучше во всех отношениях, особенно в части цены. Вот только стоит он около 3500 $. Лично я использую 3ds Max. Чтобы получить его либо скачайте 30-дневную пробную версию, или же получите коммерческое издание (или вроде того) из школы.
Вот теперь мы готовы приступить к работе с анимациями.
Часть 2 - Добавление "новых" анимации.Если кто видел фильм "Храброе сердце", в последней битве хороший друг Уильяма вдохновил свое войско на битву бросив огромный меч Уильяма над полем. Если вы еще не видели фильм, вы можете увидеть
здесь сцену полета этого меча над полем. Это действительно выглядит зрелищно и кроме того может серьезно ранить/убить врага (если попадет в него). Таким образом мы попытаемся создать нечто подобное, но конечно же это будет выглядеть несколько проще и не так зрелищно, вы сможете бросить много мечей подряд.
Отлично. Откройте "OpenBRF", перейдите в File>Open и откройте "uni_throws". Ухх, как много открытий в этом предложении.
Так, теперь нажмите на "throw_javelin" и дублировать его (нажать правой кнопкой мыши). Переименуйте его (нажать правой кнопкой мыши еще раз) на "throw_braveheart". Перейти к File> Save и выйдите из OpenBRF. Вот таким вот образом вы можете без проблем дублировать анимации. Если вы не продублируете и не переименуете анимацию, а просто создадите новую анимацию в строке module_animations.py, она перезапишется.
Однако если вы действительно хотите добавить совершенно новую анимацию, сделать ее с нуля, откройте "skeletons.brf" используя OpenBRF и экспортируйте сюда скелет "Nude" или перейдите в меню Tools > Edit Reference Data, щелкните на закладке Skeleton и нажмите на "Human" и экспортируйте его как "Nude". Используя SMD Importer экспортируйте этот "Nude" скелет в Blender или 3ds Max. При экспорте из Max'а не забудьте отметить его как "Sequence" вместо "Reference". Я не совсем знаю как это работает в Blender'е. В настоящее время экспортер OpenBRF несколько не завершен (OpenBRF все еще находится в стадии альфа версии), так что все кости кажутся не на своем месте, однако вы можете создавать новые анимации, сложность заключается только в том что вам будет труднее понять этот скелет нежели обычный. Тем не менее не следует сильно беспокоиться, OpenBRF импортер восстановит нормальное положение костей. Импортировать полученное достаточно легко, просто откройте существующий .brf файл (на данный момент создавать новый нет возможности) и перейдите в Import > Skeletal Animation. Вот и все.
Короче говоря, посмотреть на старые уже существующие анимации дабы узнать сколько примерно кадров вам необходимо, экспортируйте Nude скелет без анимации, сделайте свою анимацию, импортируйте ее как анимацию скелета и посмотрите вашу новую анимацию!
Если вы хотите увидеть пример - скачайте
этот файл. Не волнуйтесь, он в .AVI формате и поэтому не может содержать вирус. Это простая анимация показанная в OpenBRF которую я сделал только ради теста.
Хорошо, "новая" анимация настроена, мы можем двигаться дальше. Перейдите в ModuleSystem и откройте "module_animations.py", "header_items.py", и "module_items.py". Во-первых, мы будем править module_animations.py. Скопируйте "ready_javelin" и "release_javelin" примерно в 509 строку. Вставьте их (замените старые "unused_human_anims") в строку 1123. Убедитесь, что вы заменили старые анимации. Теперь переименуйте материал в _braveheart. Все должно выглядеть следующим образом:
["ready_braveheart", acf_rotate_body,
[0.3, "throw_braveheart", 0, 30, blend_in_ready],
],
["release_braveheart", acf_rotate_body,
[1.0, "throw_braveheart", 55, 100, arf_blend_in_0],
],В принципе, это небольшой скрипт части "определения" анимации. Если вы посмотрите на первый скрипт вам сразу бросятся в глаза 4 основные вещи. "ready_braveheart" является первой, это ID анимации, который используется для привязки анимации. Следующим важным моментом является "acf_rotate_body", о значении которого легко догадаться. Он вращает тело. Следующим важным моментом является "throw_braveheart". Это название анимации ресурса/последовательности, а последний из них, "blend_in_ready", представляет собой строку, которая связывает эту анимацию с другими. Часть "0, 30" это счетчик кадров. Теперь вы знаете, все, что необходимо, и мы можем двигаться дальше.
Перейдите к header_items.py. Найдите "itcf_throw_javelin" и скопируйте все это в нижней части списка itcf_, прямо перед itc_cleaver. Переименуйте его в "itcf_throw_braveheart ". Если вы сделали все правильно, она должна выглядеть так:
itcf_force_64_bits = 0x8000000000000000
itcf_throw_braveheart = 0x0000000000040000
itc_cleaverИ сейчас мы должны сделать новый itc_. По сути, в моем понимании, itc_ (пункт возможностей) представляет собой перечень различных анимаций упакованых вместе. Если вы поместите itc_scimitar для вашей вещи, вы не сможете колоть/бить, поскольку itc_ не имеет itcf_thrust_onehanded. itcf_, опять же в моем понимании, необходим для связи с записью itc_. Итак, теперь у вас есть два выбора. Вы либо создаете новую itc_ или просто добавьте itcf_ в вашу вещь. Тем не менее, я предпочитаю использовать itc_ в любом случае, потому что тогда это выглядит чище и можно, если необходимо, добавить новые анимации на itc_ позже. Итак, давайте создадим новое itc_ под названием itc_braveheart под itc_greatlance. Если вы сделали все правильно, она должна выглядеть так:
itc_greatlance = itcf_thrust_onehanded_lance |itcf_thrust_onehanded_lance_horseback| itcf_thrust_polearm
itc_braveheart = itcf_force_64_bits | itcf_throw_braveheart
ixmesh_inventory = 0x1000000000000000 Я не уверен на 100% зачем нужен itcf_force_64_bits, но большинство из itc_ похоже имеет его, и все отлично работает, так что пусть он будет и у нас. Чудесно. Теперь мы можем сохранить все это и перейти к module_items.py. В module_items.py просто скопируйте "practice_javelin" или другое подобное оружие, и вставьте его в самом конце, перед последним ']'. Если вы сделали все правильно, все должно выглядеть примерно так:
["rabati", "Rabati", [("rabati",0)], itp_type_head_armor ,0, 278 , weight(2)|abundance(100)|head_armor(20)|body_armor(0)|leg_armor(0) ,imodbits_cloth ],
["braveheart_sword", "Braveheart Sword", [("b_bastard_sword",0),("b_bastard_sword", ixmesh_carry)], itp_type_thrown |itp_primary|itp_bonus_against_shield ,itc_braveheart|itcf_carry_quiver_back|itcf_show_holster_when_drawn, 0, weight(5) | spd_rtng(91) | shoot_speed(28) | thrust_damage(27, blunt) | max_ammo(50) | weapon_length(75), imodbits_thrown],
]Как вы можете видеть, мы добавили itc_braveheart к этому пункту. Я также сохранили старые itcf_carry_quiver_back, просто чтобы показать, что вы можете иметь как itc_ так и itcf_ для одной вещи. Вы можете и должны добавить две itcf_ к itc_braveheart. Так он будет выглядеть намного чище. Хорошо. Теперь у вас в основном все готово, я надеюсь, я не забыл ничего важного. Теперь начинайте делать свои уникальные анимации! И не забудьте написать некоторые отзывы ...
Наслаждайтесь,
cdvader.
Критическое обновление (15/08/09) - Вы *
не можете* создать совершенно новый .brf файл "с нуля" и разместить свою анимацию в нем, иначе вы получите ошибку RGL. Тем не менее, однако вы
можете добавить вашу новую анимацию к уже существующему .brf файлу в папке CommonRes /, который имеет префикс ani_ и у вас не будет никаких RGL ошибок.
Я до сих пор не тестил, работают ли добавленные ani_ или uni_ .brf файлы в каком либо моде.
Credits.Большое спасибо
mtarini за Open-BRF.
И, конечно, огромноейшее спасибо Армагану за Mount & Blade!!!