ЧАСТЬ 1
Нажмите, чтобы прочитать
Какой софт необходим
Softimage XSI Mod Tool 7.5 Вместо нее можно применять другие (напр. 3ds Мax), но по мнению автора именно эта программа наиболее удобна для работы из доступных бесплатно.
Известны проблемы при работе 64-х битной версии Softimage XSI Mod Tool 7.5, так что избегайте ее.
Также необходим OpenBRF, модульная система и Python. Не переживайте, если ваши навыки работы с Python оставляют желать лучшего – автор подробно расскажет что делать.
Еще необходим плагин для Softimage XSI Mod Tool, позволяющий импортировать/экспортировать SMD файлы.
Устанавливается плагин так: при помощи Softimage XSI Mod Tool 7.5 открывается сцена и перетащить файл ValveSource.6.02.xsiaddon в один из видимых портов. Появится сообщение «Перезапустите XSI». Сделайте это и увас появится выпадающее меню в вержней части окна «ValveSource» Из этого окна вы будете экспортировать/импортировать анимацию.
Использование OpenBRF для просмотра анимации
Первое, что нужно сделать, это сделать резервную копию файла "skeletons.brf", который находится в "CommonRes" папки в вашем моде. "skeletons.brf" файл используется всеми модулями, включая Native и мы будем еuj редактировать, используя OpenBRF! Так что бэк ап необходим. Теперь можно открыть "skeletons.brf" при помощи OpenBRF - дважды щелкните по "openBrf.exe. У Вас будет окно с светло-серой панели слева и темно-серой панелью справа. Все панели будут пустыми в данный момент. Нажмите на кнопку "Файл" в верхней левой части окна и выберите "Открыть" из выпадающего меню. Вы должны смотреть в "CommonRes" (OpenBRF возможно откроет ее по умолчанию). Вы должны увидеть массу файлов, заканчивающихся ". BRF". Выберите "skeletons.brf".
Крайняя левая панель теперь показывает “skel_human”, выше его – открыт - "Sceleton", и - "Animation". Дальняя правая панель показывает то, что Вы в настоящее время выбрали. Наиболее вероятно это кости (то, что определяет форму меша) человеческого скелета M&B', устроенного в позе T. Наконец, у средней серой панели должно быть две кнопки –"Data" и "View". У кнопки " View " есть выпадающее меню маркированное как "Skin". Нажмите на стрелку и выберите “Mesh-set A”, и скелет на правой панели должен приобрести призрачный комплект оборудования. Есть ли у Вас кожа или нет - не имеет никакого значения.
Теперь кликните на " Animation " около верхнего левого угла выше белого пространства на левой панели. Я полагаю, что неотредактированная версия показывает только одну анимацию, названную “anim_human”. ЛКМ по ней, чтобы выбрать (вероятно, уже выбрано), и Вы должны видеть, что скелет начинает делать связку действий. Вся человеческая анимация в игре собрана вместе в единственном пункте – игра считывает, какую анимацию юзать, когда числами "interval", которые OpenBRF показывается в "Data" в средней панели. Чтобы видеть, что имеется ввиду, ПКМ на “anim_human”, и выберите “Split via action.txt” – я думаю, что это - третья опция снизу из выпадающего меню. Эта операция создает очень большой текстовый файл (2 гига), и требует времени. Этот шаг призван объяснить работу анимации в M&B. Если Вы щелкаете не туда куда надо, не забудьте щелкать “Discard”, когда закроете OpenBRF, или Вы сломаете игру. Никогда не сохраняйтесь в OpenBRF, если вы разделили "anim_human". Повторюсь, "anim_human" должен остаться нетронутым в любой сохраненной версии "skeletons.brf", который находится в папке "CommonRes".
Так или иначе, после нажатия “split via action.txt”, окно открsdittcz cпросит вас выбрать соответствующий текстовый файл из папки модуля. Двойной щелчок на “actions.txt” и Вы должны видеть, что у Вас теперь есть 108 объектов в панели "Animation" в окне OpenBRF. Новый текстовый файл будет также создан в папке рядом "actions.txt" - игнорируйте это. Назад в OpenBRF, выбирайте анимацию из списка, если видите скелет правильно выполненным в петле. Вы можете начать или остановить это, или пройти через это кадр за кадром, используя кнопки в меню "View", или “time of frame” в меню "Data". Если Вы выберете анимацию нападения (например, “anim_human_release_slashright_twohanded”), то Вы увидите, что у нее есть информация об интервале в меню "Data", которая используется, чтобы сообщить игре, когда проиграть эту анимацию. (В Python, как Вы увидеть позже, есть линия, которая говорит ‘“anim_human”, 25710, 25734 …’ под “release_slashright_twohanded”, который говорит игре которую часть “anim_human” играть для двуручного нападения справа.)
Мы не должны вставить нашу анимацию в этот “anim_human” пункт и использовать числа интервала, чтобы заменить существующие. Вместо этого мы будем импортировать наши анимации так, чтобы список показал “anim_human” так же как независимо от того, что мы импортировали, и затем сохраняя новый “skeletons.brf”. Таким образом, мы будем добавлять новые анимации к “skeletons.brf”, оставляя “anim_human” нетронутым. Для нашего модуля мы только сошлемся на новые анимации в Python по имени, и любыми числами интервала мы решили дать им. Мод останется абсолютно неизменным, до тех пор пока не будет ссылаться на одну из наших новых анимаций.
Экспортирование M&B скелета так, чтобы его можно было импортировать в XSI Mod Tool 7.5
Теперь, сверху, нажмите "на ValveSource" и затем нажмите “import SMD …” в выпадающем меню. В поле «import file» выберите SMD, который мы экспортировали из OpenBRF. Нажмите “A”, чтобы рассмотреть все, человек в OpenBRF появился в сцене с мешем полигона для кожи и связкой креста для костей. Заметьте - в этом пункте Вы можете изменять внешний вид –в выпадающем меню “Wireframe” в верхнем правом углу можно выбрать варианты отображения скелета. После того возвращаемся в wireframe, и выбираем кость, кликая по ней. Если Вы выбирали неправильную вещь, только щелкните, потяните и отпустите мышь в пустом месте, чтобы отменить выбор или нажмите “Ctrl+Z”. Выбрав кость (крестообразная иконка) нажиите “C” (не удерживая ее), и Вы увидите вращенющиеся топоры. Положение мыши определяет, как выбранный объект будет вращаться. Удержите левую кнопку мыши и переместите мышь, объект будет вращаться соответственно!
Нажав “V” можно вызвать топоры перевода, или “X”, чтобы вызвать масштабирующие топоры. Вы заметите снова, что, масштаб, вращение и перевод зависят от того, куда мышь указывает. Вы заметите, что перевод и масштабирование не работают над костями этого скелета, за исключением так называемой кости "живота".
Отметьте в этом пункте, что меш может странно искажаться, когда Вы вращаете кость – вершины в несвязанных областях меша могут сместиться и заставить меш выглядеть зазубренным. Кроме того, когда Вы выберите меш, Вы увидите много цветных точек на поверхности в углах полигонов. Технически это не имеет значения - это только уродливо и не совсем понятно, как объект будет выглядеть в игре. Чтобы пофиксить это, Вы можете попытаться экспортировать скелет (с кожей) из OpenBRF снова, и импортировать новый экспорт в XSI Mod Tool. Рабочий меш не должен содержать цветные точки, когда Вы выбираете его. Сохраните сцену, как только Вы найдете скелет, который Вы сможете открыть снова, без необходимости экспортировать и импортировать. (Хорошо использовать изворотливый меш - это не должно затронуть анимацию, так как никакие связанные с мешем данные не экспортируются позже.)
Зазубривание вызвано проблемой с ValveSource SMD импортером. В качестве контрмеры можно переоснастить меш. Для этого кликните по цветному выпадающему меню в левом верхнем углу и выберите “Animate”. Теперь выберите меш, кликните “Point” вверху слева, чтоб сделать вертексы кликабельными и выберите искажающий вертекс. В панели слева выберите “Envelope” затем “Rеassighn locally”. Выберите кость, которую вы хотите «связать» с вертексом и ПКМ в пустом поле для подтверждения. Это приблизительный фикс.
Анимирование в XSI Mod Tool
Таким образом, у нас есть скелет в нашей сцене, мы знаем, как переместить камеру, и мы знаем, как позиционировать скелет. Чтобы сделать анимацию, все, что мы должны сделать, позиционировать скелет для каждого кадра анимации, которую мы хотим сделать. Для анимации нападения нам надо 5 - 10 кадров, потому что XSI (и игра непосредственно) заполнит промежутки и смешает кадры вместе, чтобы сделать гладкое движение. Больше кадров позволят Вам определять движение более тщательно.
Сделаем кадры (фреймы). Внизу окна есть штука наподобие временного отрезка. По умолчанию автор думает, что он 1 до 100. Есть красная вертикальная линия на 1. Вы можете нажать на эту красную линию и тянуть ее на графике времени. Чтобы видеть, для чего это, поставьте эту линию времени на кадр 1, выберите весь скелет и меш, нажимать “C”, чтобы запустить топоры вращения (но ничего фактически не вращайте), затем нажмите “K”, чтобы установить ключевой кадр. Когда Вы выберете пункты, появятся красные квадраты на графике времени покажут, где информация для каждого пункта была зафиксирована. Нажимая “K” с топорами вращения, мы установили эту позицию (T) для первого кадра. Затем, переместите красную вертикальную черту на линии времени к 100-ой структуре. Теперь, выберите одиночную кость (предлагаю бедро, колено, или локоть), нажмите “C”, чтобы вызвать топоры вращения, поверните кость приблизительно на 90 градусов, затем нажмите “K”, чтобы установить другой ключевой кадр. Теперь, нажмите проигрывание (ниже линии времени), и наблюдайте, что характер перемещается гладко между этими двумя положениями.
Фактически мы не будем делать анимацию таким способом, хотя это выглядит гладко когда в XSI. Нам нужны данные для 5 или 10 кадров – как кадры выглядят в XSI не важно. Кадры, которые мы делаем здесь, будут задействованы в SMD, наряду с информацией о выборе времени так, чтобы игра могла смешать их вместе должным образом. Например, для мультипликации с 7 ключевыми кадрами, наша линия времени в XSI будет длиной 7 кадров, и мы заполним файл анимацией SMD после экспортирования, чтобы смешать кадры с надлежащим выбором времени в игре. Это не является столь же трудным, как это звучит.
Когда Вы фактически делаете анимацию, помните несколько вещей. Во-первых, Вы должны запускать вращение, перевод, или масштабирование топоров прежде, чем Вы сделаете ключевой кадр. Во-вторых, всегда определяйте положение, над которым работаете перед тем, как смещать линию времени, чтобы работать над новым кадром - программа не запомнит, где Вы что сделали. В-третьих, сохраняйтесь как можно чаще, чтобы можно было откатиться. Обычно автор обращается к кадру, который делает на линии времени, позиционирует целый скелет, как хочет для этого кадра, выбирает целый скелет (или даже сцену целиком), нажимает "C" и затем "K" для кодирования информации о вращении, затем нажимает "V" и затем "K" для кодирования информации о переводе для всего. При действии подобным путем линия времени случайно не сдвинется, и проделанная работа не пропадет. Кроме того, автор сохраняется в начале, когда настраивается сцену для анимации, затем автор делает рабочий сейв, который затем перезаписывается, и затем также после завершения каждого кадра. Этот метод не является подходящим для всех видов анимации, и может казаться чрезмерным. Но, я автор предостерегает последователей – обидно, когда пропадает 20 минут кропотливой работы из-за того, что вы забыли закодировать перед движением линии времени или из-за вылета XCI Tool.
Экспортирование SMD анимационного файла из OpenBRF
При помощи OpenBRF откройте “skeletons.brf”. Щелкните по "Animation", ПКМ по “anim_human” и затем разделите это через “actions.txt” файл как прежде. Теперь, прокрутите список анимации вниз, пока не найдете “anim_human_ready_slashright_twohanded”. Это - анимация, которая играет, когда Вы удерживаете кнопку нападения для нападения с права с двуручным оружием. ПКМ по нему и затем кликните “Export animation” в выпадающем меню и пошлите файл куда вам нравится. Не забудьте кликать "Discard" когда Вы закрываете OpenBRF, потому что мы нуждаемся в нетронутом anim_human в любой сохраненной версии “skeletons.brf”.
Softimage XSI Mod Tool 7.5 Вместо нее можно применять другие (напр. 3ds Мax), но по мнению автора именно эта программа наиболее удобна для работы из доступных бесплатно.
Известны проблемы при работе 64-х битной версии Softimage XSI Mod Tool 7.5, так что избегайте ее.
Также необходим OpenBRF, модульная система и Python. Не переживайте, если ваши навыки работы с Python оставляют желать лучшего – автор подробно расскажет что делать.
Еще необходим плагин для Softimage XSI Mod Tool, позволяющий импортировать/экспортировать SMD файлы.
Устанавливается плагин так: при помощи Softimage XSI Mod Tool 7.5 открывается сцена и перетащить файл ValveSource.6.02.xsiaddon в один из видимых портов. Появится сообщение «Перезапустите XSI». Сделайте это и увас появится выпадающее меню в вержней части окна «ValveSource» Из этого окна вы будете экспортировать/импортировать анимацию.
Использование OpenBRF для просмотра анимации
Первое, что нужно сделать, это сделать резервную копию файла "skeletons.brf", который находится в "CommonRes" папки в вашем моде. "skeletons.brf" файл используется всеми модулями, включая Native и мы будем еuj редактировать, используя OpenBRF! Так что бэк ап необходим. Теперь можно открыть "skeletons.brf" при помощи OpenBRF - дважды щелкните по "openBrf.exe. У Вас будет окно с светло-серой панели слева и темно-серой панелью справа. Все панели будут пустыми в данный момент. Нажмите на кнопку "Файл" в верхней левой части окна и выберите "Открыть" из выпадающего меню. Вы должны смотреть в "CommonRes" (OpenBRF возможно откроет ее по умолчанию). Вы должны увидеть массу файлов, заканчивающихся ". BRF". Выберите "skeletons.brf".
Крайняя левая панель теперь показывает “skel_human”, выше его – открыт - "Sceleton", и - "Animation". Дальняя правая панель показывает то, что Вы в настоящее время выбрали. Наиболее вероятно это кости (то, что определяет форму меша) человеческого скелета M&B', устроенного в позе T. Наконец, у средней серой панели должно быть две кнопки –"Data" и "View". У кнопки " View " есть выпадающее меню маркированное как "Skin". Нажмите на стрелку и выберите “Mesh-set A”, и скелет на правой панели должен приобрести призрачный комплект оборудования. Есть ли у Вас кожа или нет - не имеет никакого значения.
Теперь кликните на " Animation " около верхнего левого угла выше белого пространства на левой панели. Я полагаю, что неотредактированная версия показывает только одну анимацию, названную “anim_human”. ЛКМ по ней, чтобы выбрать (вероятно, уже выбрано), и Вы должны видеть, что скелет начинает делать связку действий. Вся человеческая анимация в игре собрана вместе в единственном пункте – игра считывает, какую анимацию юзать, когда числами "interval", которые OpenBRF показывается в "Data" в средней панели. Чтобы видеть, что имеется ввиду, ПКМ на “anim_human”, и выберите “Split via action.txt” – я думаю, что это - третья опция снизу из выпадающего меню. Эта операция создает очень большой текстовый файл (2 гига), и требует времени. Этот шаг призван объяснить работу анимации в M&B. Если Вы щелкаете не туда куда надо, не забудьте щелкать “Discard”, когда закроете OpenBRF, или Вы сломаете игру. Никогда не сохраняйтесь в OpenBRF, если вы разделили "anim_human". Повторюсь, "anim_human" должен остаться нетронутым в любой сохраненной версии "skeletons.brf", который находится в папке "CommonRes".
Так или иначе, после нажатия “split via action.txt”, окно открsdittcz cпросит вас выбрать соответствующий текстовый файл из папки модуля. Двойной щелчок на “actions.txt” и Вы должны видеть, что у Вас теперь есть 108 объектов в панели "Animation" в окне OpenBRF. Новый текстовый файл будет также создан в папке рядом "actions.txt" - игнорируйте это. Назад в OpenBRF, выбирайте анимацию из списка, если видите скелет правильно выполненным в петле. Вы можете начать или остановить это, или пройти через это кадр за кадром, используя кнопки в меню "View", или “time of frame” в меню "Data". Если Вы выберете анимацию нападения (например, “anim_human_release_slashright_twohanded”), то Вы увидите, что у нее есть информация об интервале в меню "Data", которая используется, чтобы сообщить игре, когда проиграть эту анимацию. (В Python, как Вы увидеть позже, есть линия, которая говорит ‘“anim_human”, 25710, 25734 …’ под “release_slashright_twohanded”, который говорит игре которую часть “anim_human” играть для двуручного нападения справа.)
Мы не должны вставить нашу анимацию в этот “anim_human” пункт и использовать числа интервала, чтобы заменить существующие. Вместо этого мы будем импортировать наши анимации так, чтобы список показал “anim_human” так же как независимо от того, что мы импортировали, и затем сохраняя новый “skeletons.brf”. Таким образом, мы будем добавлять новые анимации к “skeletons.brf”, оставляя “anim_human” нетронутым. Для нашего модуля мы только сошлемся на новые анимации в Python по имени, и любыми числами интервала мы решили дать им. Мод останется абсолютно неизменным, до тех пор пока не будет ссылаться на одну из наших новых анимаций.
Экспортирование M&B скелета так, чтобы его можно было импортировать в XSI Mod Tool 7.5
Теперь, сверху, нажмите "на ValveSource" и затем нажмите “import SMD …” в выпадающем меню. В поле «import file» выберите SMD, который мы экспортировали из OpenBRF. Нажмите “A”, чтобы рассмотреть все, человек в OpenBRF появился в сцене с мешем полигона для кожи и связкой креста для костей. Заметьте - в этом пункте Вы можете изменять внешний вид –в выпадающем меню “Wireframe” в верхнем правом углу можно выбрать варианты отображения скелета. После того возвращаемся в wireframe, и выбираем кость, кликая по ней. Если Вы выбирали неправильную вещь, только щелкните, потяните и отпустите мышь в пустом месте, чтобы отменить выбор или нажмите “Ctrl+Z”. Выбрав кость (крестообразная иконка) нажиите “C” (не удерживая ее), и Вы увидите вращенющиеся топоры. Положение мыши определяет, как выбранный объект будет вращаться. Удержите левую кнопку мыши и переместите мышь, объект будет вращаться соответственно!
Нажав “V” можно вызвать топоры перевода, или “X”, чтобы вызвать масштабирующие топоры. Вы заметите снова, что, масштаб, вращение и перевод зависят от того, куда мышь указывает. Вы заметите, что перевод и масштабирование не работают над костями этого скелета, за исключением так называемой кости "живота".
Отметьте в этом пункте, что меш может странно искажаться, когда Вы вращаете кость – вершины в несвязанных областях меша могут сместиться и заставить меш выглядеть зазубренным. Кроме того, когда Вы выберите меш, Вы увидите много цветных точек на поверхности в углах полигонов. Технически это не имеет значения - это только уродливо и не совсем понятно, как объект будет выглядеть в игре. Чтобы пофиксить это, Вы можете попытаться экспортировать скелет (с кожей) из OpenBRF снова, и импортировать новый экспорт в XSI Mod Tool. Рабочий меш не должен содержать цветные точки, когда Вы выбираете его. Сохраните сцену, как только Вы найдете скелет, который Вы сможете открыть снова, без необходимости экспортировать и импортировать. (Хорошо использовать изворотливый меш - это не должно затронуть анимацию, так как никакие связанные с мешем данные не экспортируются позже.)
Зазубривание вызвано проблемой с ValveSource SMD импортером. В качестве контрмеры можно переоснастить меш. Для этого кликните по цветному выпадающему меню в левом верхнем углу и выберите “Animate”. Теперь выберите меш, кликните “Point” вверху слева, чтоб сделать вертексы кликабельными и выберите искажающий вертекс. В панели слева выберите “Envelope” затем “Rеassighn locally”. Выберите кость, которую вы хотите «связать» с вертексом и ПКМ в пустом поле для подтверждения. Это приблизительный фикс.
Анимирование в XSI Mod Tool
Таким образом, у нас есть скелет в нашей сцене, мы знаем, как переместить камеру, и мы знаем, как позиционировать скелет. Чтобы сделать анимацию, все, что мы должны сделать, позиционировать скелет для каждого кадра анимации, которую мы хотим сделать. Для анимации нападения нам надо 5 - 10 кадров, потому что XSI (и игра непосредственно) заполнит промежутки и смешает кадры вместе, чтобы сделать гладкое движение. Больше кадров позволят Вам определять движение более тщательно.
Сделаем кадры (фреймы). Внизу окна есть штука наподобие временного отрезка. По умолчанию автор думает, что он 1 до 100. Есть красная вертикальная линия на 1. Вы можете нажать на эту красную линию и тянуть ее на графике времени. Чтобы видеть, для чего это, поставьте эту линию времени на кадр 1, выберите весь скелет и меш, нажимать “C”, чтобы запустить топоры вращения (но ничего фактически не вращайте), затем нажмите “K”, чтобы установить ключевой кадр. Когда Вы выберете пункты, появятся красные квадраты на графике времени покажут, где информация для каждого пункта была зафиксирована. Нажимая “K” с топорами вращения, мы установили эту позицию (T) для первого кадра. Затем, переместите красную вертикальную черту на линии времени к 100-ой структуре. Теперь, выберите одиночную кость (предлагаю бедро, колено, или локоть), нажмите “C”, чтобы вызвать топоры вращения, поверните кость приблизительно на 90 градусов, затем нажмите “K”, чтобы установить другой ключевой кадр. Теперь, нажмите проигрывание (ниже линии времени), и наблюдайте, что характер перемещается гладко между этими двумя положениями.
Фактически мы не будем делать анимацию таким способом, хотя это выглядит гладко когда в XSI. Нам нужны данные для 5 или 10 кадров – как кадры выглядят в XSI не важно. Кадры, которые мы делаем здесь, будут задействованы в SMD, наряду с информацией о выборе времени так, чтобы игра могла смешать их вместе должным образом. Например, для мультипликации с 7 ключевыми кадрами, наша линия времени в XSI будет длиной 7 кадров, и мы заполним файл анимацией SMD после экспортирования, чтобы смешать кадры с надлежащим выбором времени в игре. Это не является столь же трудным, как это звучит.
Когда Вы фактически делаете анимацию, помните несколько вещей. Во-первых, Вы должны запускать вращение, перевод, или масштабирование топоров прежде, чем Вы сделаете ключевой кадр. Во-вторых, всегда определяйте положение, над которым работаете перед тем, как смещать линию времени, чтобы работать над новым кадром - программа не запомнит, где Вы что сделали. В-третьих, сохраняйтесь как можно чаще, чтобы можно было откатиться. Обычно автор обращается к кадру, который делает на линии времени, позиционирует целый скелет, как хочет для этого кадра, выбирает целый скелет (или даже сцену целиком), нажимает "C" и затем "K" для кодирования информации о вращении, затем нажимает "V" и затем "K" для кодирования информации о переводе для всего. При действии подобным путем линия времени случайно не сдвинется, и проделанная работа не пропадет. Кроме того, автор сохраняется в начале, когда настраивается сцену для анимации, затем автор делает рабочий сейв, который затем перезаписывается, и затем также после завершения каждого кадра. Этот метод не является подходящим для всех видов анимации, и может казаться чрезмерным. Но, я автор предостерегает последователей – обидно, когда пропадает 20 минут кропотливой работы из-за того, что вы забыли закодировать перед движением линии времени или из-за вылета XCI Tool.
Экспортирование SMD анимационного файла из OpenBRF
При помощи OpenBRF откройте “skeletons.brf”. Щелкните по "Animation", ПКМ по “anim_human” и затем разделите это через “actions.txt” файл как прежде. Теперь, прокрутите список анимации вниз, пока не найдете “anim_human_ready_slashright_twohanded”. Это - анимация, которая играет, когда Вы удерживаете кнопку нападения для нападения с права с двуручным оружием. ПКМ по нему и затем кликните “Export animation” в выпадающем меню и пошлите файл куда вам нравится. Не забудьте кликать "Discard" когда Вы закрываете OpenBRF, потому что мы нуждаемся в нетронутом anim_human в любой сохраненной версии “skeletons.brf”.
Нажмите, чтобы прочитать
Реформатирование SMD, экспортированный из OpenBRF или использование SMD автора
ПЕРЕСМОТР: Очевидно, этот шаг переформатирования является ненужным с некоторыми текстовыми программами (включая Microsoft Word). Так, если Вы используете программы отличные от блокнота, Вы можете обнаружить, что нет необходимости переформатировать свой файл SMD после экспорта его из Mod Tool.
Теперь откройте файл анимации SMD, который Вы только что экспортировали из OpenBRF. Вы увидите отвратительную массу текста, который простирается на несколько метров направо. Файлы анимации, экспортируемые от M&B с OpenBRF, не знают, как сделать введение параграфов. Мы переформатируем этот SMD так, чтобы было легко его читать и работать. Это поможет нам позже, когда мы экспортируем наши новые данные о анимации из XSI. Фактически автор предоставит переформатированную версию – так как нам нужен только один отформатированый файл от M&B, вам нет необходимости знать, как его переформатировать. Мы нуждаемся в этом, потому что XSI экспортирует SMD с некоторой избыточной информацией, и приятно отформатированный SMD может помочь нам пофиксить их быстро.
Вот переформатированный “anim_human_ready_slashright_twohanded.smd”. Мы будем использовать его какую бы анимацию мы не экспортировали из XSI..
РЕФОРМАТИРОВАННЫЙ SMD ФАЙЛ
Скопируйте этот текст с заменой в ваш неотформатированный smd, затем сохраните файл как “reformatted anim_human_ready_slashright_twohanded.smd” или как-нибудь по-другому. Импортируйте переформатированную версию в OpenBRF (в OpenBRF, "Import"-> “Sкeletal Animation"-> [reformatted SMD]), он должен работать нормально. Если это не так, вероятно, сделали ошибку в своем переформатировании или при копипастинге текст из этого руководства.
Интерпретирование содержания SMD файлов анимации
Наверху расположен список костей скелета (здесь названный "nodes"). Вы увидите, что есть 20 из них, точно так же, как OpenBRF говорит в опции "Data", пронумерованны 0-19. Их названия в значительной степени очевидны – например, “item. R” вещь, находящаяся в правой руке.
Ниже этого списка линия, которая читается “время 0”. Эти 20 линий ниже этого обращаются к нулевому кадру анимации. Это - позиция T, в которой скелет стоит по умолчанию, и автор понятия не имеет, почему это существует, но находится во всех анимациях SMD. Автор не знает, что происходит, если это удалено.
Вы увидите, что остальная часть файла – повторение того же материала. Есть “время 0” и 20 линий к нему, “время 25701” и 20 линий к нему, и наконец “время 25711” и еще 20 линий к нему. Прошлые два "времени" фактически идентичны для готовых положений (снова, автор не вполне знает, почему, но мы оставим это). Вы можете видеть, что эти значения "времени" - значения интервала, которые Вы можете видеть в опции "Data" в OpenBRF, когда Вы смотрите на соответствующую анимацию после деления “anim_human”. В полном движении со многими кадрами каждый кадр имеет значение. Это значение говорит игре, когда в пределах полной анимации кадр имеет место быть. Так, если у Вас будет анимация нападения с интервалом 0-10, и некоторая информация под заголовком “время 5”, то игра поместит скелет в положение, определенное серединой пути анимации. Насколько автор знает, длина интервала не важна – более длинный интервал не делает более длительную анимацию. Единственная значимая вещь - положение кадров в пределах интервала. Например, анимация с интервалом 0-10, с кадрами в 0, 5, и 10 была бы идентична анимации с интервалом 0-100 с кадрами в 0, 50, и 100. В конце концов временная продолжительность анимации определена в другом месте (и затем изменена значением скорости оружия и мастерством персонажа). Подбор правильных значений временных интервалов для ваших кадров весьма важен, потому что они определяют уровень различных стадий анимации.
Ряды информации под каждым "временем", определяют положения костей скелета в пределах 6 топоров – 3 топора перевода, и 3 топора вращения. Есть 6 колонок, 3 для перевода сначала, и затем 3 для вращения. Только кость "abdomen" фактически использует информацию о переводе, насколько автор знает. Если Вы попытаетесь перевести эту кость в XSI, то Вы будете видеть, что весь меш перемещается с ней. Вы будете часто хотеть перевести эту кость, например, понижая положение характера. Другие 19 костей используют только информацию о вращении. Меш не подстроится под искаение должным образом, когда Вы переведете любую из этих других 19 костей.
Единицы вращения, используемого в файлах SMD, являются радианами. Сто восемьдесят степеней равны пи (3.14) радианы, таким образом, 90 градусов равны 1.5707 …. Это слегка пригодится позднее, когда мы обнаруживаем, что файлы SMD, экспортируемые из XSI, не соответствуют 90 градусам вращения в животе (abdomen)!
Экспортирование анимации SMD из XSI Mod Tool
Откроем XSI Mod Tool. Мы сделаем несколько кадров, экспортируя их, поскольку SMD, убираясь сказал SMD, и затем импортируя это SMD в OpenBRF. Если Вы получаете анимацию в OpenBRF, Вы можете быть довольно уверены, что игра примет это.
В кадре 1 на линии времени, делите весь меш потянув за один из краев соответствующего инструмента, нажмите “C”, затем “K”, “V” и “K” снова. Теперь положение T закодировано в кадре 1. Затем, в кадре 30 выберите одну из тазовых костей, нажмите “C”, вращайте кость приблизительно на 90 градусов, так, чтобы нога придерживалась прямо, и нажмите “K”, чтобы закодировать это. Все еще в кадре 30, выберите колено той же ноги и вращайте это так, чтобы голень указала на землю, и тогда кодируйте. (Это может выглядеть немного глупым, потому что он в основном носит юбку.) Теперь в кадре 100, вращайте кость колена так, чтобы нога выпрямилась, и кодируйте. Когда Вы запускаете проигрывание, персонаж должен поднять колено, затем выпрямить ногу. Это будет выглядеть чрезвычайно неестественным и глупым, и Вы можете играть с этим однако, пока есть только ключевые кадры в 0, 30, и 100.
Теперь, если у вас есть закодированные элементы на кадрах 1, 30, и 100 чтобы сделать опознаваемое движение, нажимаете на"ValveSource" в панели наверху окна, и нажимаете на “ Export SMD …” в выпадающем меню. В окне, которое появляется в “Options”, выберите “Sкeletal Animation (.SMD)” как тип файла, и снимите выделение со всех опций ниже. Тогда нажмите на три точки рядом с полем "File", назовите свой файл SMD как желаете.
Экспортирование SMD с только необходимой информацией кадра из XSI Mod Tool
Если Вы прокрутите вниз в SMD, коий мы только что экспортировали из XSI Mod Tool увидите, что есть 100 значений "time". Мы будем использовать Mod Tool, чтобы переместить наши ключевые кадры в 1-е, 2-е, и 3-е положения на линии времени так, чтобы SMD содержал только необходимую информацию. Мы затем вставим правильные временные значения в SMD так, чтобы игра смешала их вместе с надлежащим выбором времени.
Откройте свою анимацию в XSI Mod Tool 7.5. Выберите все и нажмите “0” (ноль на клавиатуре). Созерцайте кривые функций. Не бойтесь. Обратите внимание на линию времени у основания этого окна. Тяните рамку инструмента выбора от вершины до основания линий, чтобы выбрать их всех. Они должны побелеть, и должны появиться небольшие цветные квадраты на некоторых из линий в 1-м, 30-м, и 100-м положениях на линии времени. С отобранными линиями (белыми) тяните другую рамку выбора вокруг квадратов в 30-го кадра. Они должны покраснеть и стать между черными квадратами. Теперь нажмите “Ctrl+X”, чтобы вырезать эту информацию, переместите линию времени в окно f-кривой в кадре 2 (положение сразу после первого набора цветных квадратов), и нажмите “Ctrl+V”, чтобы вставить информацию в этом месте. Теперь, повторите этот процесс для кадра 100, вырезая оттуда и вставляя в кадр 3. Если Вам трудно видеть вещи, Вы можете пролистать через окно f-кривой, перетаскивая красную вертикаль в ее линию времени мимо видимых концов, и Вы можете увеличить и уменьшить масштаб используя колесо мыши. Все цветные квадраты должны теперь быть выше первых 3 кадров на линии времени. Теперь закройте окно f-кривой.
Если Вы выберете персонаж, то увидите ключевые кадры в 1, 2, и 3 на линии времени. Когда Вы нажмете «Play», он будет хватать ногу как маньяк, но это нормально, потому что мы только хотим информацию о кадре – мы сообщим игре, куда поместить ключевые кадры так, чтобы у них был надлежащий выбор времени. Последняя вещь, которую надо сделать здесь состоит в том, чтобы изменить размеры линии времени так, чтобы были включены только кадры 1 - 3. С правового края на линии времени есть темно-серая коробка с “100” внутри. Нажмите на нее, и вставьте 3. У Вашей линии времени должно теперь быть только 3 кадра, все с миленькими красными квадратами на них, когда Вы выбираете персонажа.
Теперь, экспортируйте SMD для этой анимации как прежде. Не забудьте снять 3 галки в окне экспорта. Теперь взгляните на файл SMD. Должен выглядеть как прежде, но у этого будет только 3 временных значения. Теперь мы должны переформатировать это немного.
Устранение неполадок SMD анимационных файлов, экспортированных из XSI Mod Tool
Удостоверьтесь, что у Вас есть переформатированный SMD автора из спойлера. Определить корректность работы при импортировании в OpenBRF можно так: если видите статическую позу и отсутствие фактического движения – значит что-то не в порядке.
Откройте файл SMD, который мы только экспортировали из XCI Mod Tool. Вы заметите, что его содержание немного отличается от переформатированного файла. С одной стороны у этого есть 22 кости в списке наверху – пронумеровал 0-21 – и 22 линии информации о кости для каждого временного значения. Это так, потому что XCI Mod Tool дал нам информацию для кожи и дополнительного узла между ногами. Эта информация является странной и непостижимой и заставит OpenBRF замереть от страхом. Мы должны удалить это и заставить файл быть похожим на переформатированную версию. У костей также есть забавные имена Вы можете, вероятно, подобрать эквиваленты всех этих имен, но в этом нет необходимости.
Чтобы пофиксить это откройте реформатированный SMD и открывайте вашу анимацию SMD с этими 3 временными значениями. В реформатированном SMD выделите все выше “time 25701” и нажмите “Ctrl+C”, чтобы скопировать это. Теперь, в SMD для Вашей новой анимации, выделите все выше “time 1”, и нажмите “Ctrl+V”, чтобы вставить от реформатированного SMD. Если Вы хотите сохранить свой новый SMD, поскольку работаете над ним, автор предлагает сделать это под новым именем в случае, если Вы сделали некоторую невидимую ошибку Теперь у Вашего нового SMD есть надлежащий список костей наверху, информации о позе T в “time 0”, так же как информации для Ваших 3 ключевых кадров. Теперь мы должны перенумеровать другие временные значения и удалить информацию для двух избыточных костей (“0” и “1”, также известные как “thigh.mesh” и " thigh " ). Наконец, мы перенумеруем остающиеся кости, которые уже находятся в правильном порядке, так, чтобы они шли от 0-19.
Так, для времен 1, 2, и 3, удалите верхние два ряда информации о кости. Теперь удалите ряды, начинающиеся на 0 и 1. Теперь перенумеруйте все остающиеся ряды так, чтобы они были пронумерованы от 0 до 19 под каждым временным значением. Очевидно, каждое число должно стать на 2 ниже, таким образом, 2 становится 0, 3 становится 1 и так далее. Вы должны перенумеровать их вручную, потому что информация около этих чисел уникальна, таким образом, Вы не можете просто вставить поверх них с заменой (хотя мог бы быть необычный способ заменить их, о котором автор не в курсе). Теперь замените временные значения так, чтобы эти 4 временных значения для целого SMD были в порядке: 0, 1, 30, и 100.
Не волнуйтесь о пробелах концах линий и подобные штуки. Насколько автор знает, SMD довольно терпим к таким вещам. Производились довольно большие изменения, когда переформатировали анимацию, экспортируемую от OpenBRF.
Так или иначе, как только Вы закончили с SMD сохранитесь под новым именем. Теперь импортируйте этот SMD в OpenBRF, отметьте, что персонаж повернулся на 90 градусов и созерцает эксцентричное движение!
Чтобы пофиксить ориентацию персонажа, откройте свой SMD снова (тот, который Вы только проверили в OpenBRF). Скопируйте “0” линию информации с “time 0”, и вставьте поверх “0” линий во всех других временных значениях. Как автор сказал прежде, по некоторым причинам SMD от XSI отличаются на 90 градусов вращения живота. Копирование информации с “time 0” – поза T, взятая непосредственно из M&B – зафиксирует (починит) это. Вы можете также вычесть 1.570796 (половина пи) из второй колонки информации о вращении во всех кадрах, взятых из XSI. Вероятно, подобные вычитания потребуются для создания более продвинутых анимаций, а пока Вам достаточно вращать "живот" (действительно бедра) для некоторых движений. Возможно, что Вы можете также установить вращение, перемещая персонажа в XSI перед экспортом, но автор не пробовал это должным образом.
Сложный способ установить ориентацию персонажа состоит в том, чтобы изменить информацию о вращении для кости живота непосредственно в SMD. Легкий способ - вращать кость живота в XSI. Назад на90 градусов от общего вращения. Чтобы сделать это, в каждом ключевом кадре выбираете кость живота, выбираете общий (global), в противоположность локальному, вращению в панели справа, затем удерживает Shift и двигаете мышь, чтобы вращать кость равномерными шагами, пока Вы не повернете назад на 90 градусов. Установите (закодируйте) это вращение в каждом ключевом кадре прежде, чем Вы экспортируете анимацию, и ориентация персонажа будет правильна в OpenBRF и (позже) в игре.
Фактически, XSI отбрасывает перевод живота также. Вы можете, вероятно, установить, это в XSI, но в настоящее время автор устанавливает это в SMD и заменяет второй и третий ряды информации о переводе для кости живота в каждом кадре, и затем изменяя подпись второй колонки (то есть, делает положительное число отрицательным и наоборот). Конечно, если бедра Вашего персонажа не двигаются в анимации, Вы можете только скопировать информацию с более раннего ряда вместо того, чтобы вносить корректировку много раз.
Играя с SMD, затем рассматривая это в OpenBRF, Вы можете определить – на что влияют ряды и колонки и насколько. Автор фактически закрепил ручное расположение и работу ног на некоторых из анимаций модифицируя непосредственно текст SMD.
Проверьте свой SMD после выполнения этих установок (фиксов) (импортируйте анимацию в OpenBRF), чтобы удостовериться, что это работает. Если персонаж перевернут или переместился в неправильное направление, это означает, что Вы вращали живот неправильным путем в XSI, обменивали неправильные колонки в SMD, или вставили/удалили минус знак в неправильном месте.
Добавление новой, правильно форматированной анимации SMD в “skeltons.brf”
Откройте OpenBRF и откройте “skeletons.brf”. Выберите "Animation". Список должен показать “anim_human” и ничего более. Нажмите "Import" в панели наверху окна, и нажмите “Skeletal animation” в выпадающем меню. Выберите свое новое, должным образом отформатированный SMD, который Вы успешно проверили в OpenBRF прежде. Теперь, список должен показать “anim_human” и Вашу новую анимацию. Нажмите на нее и она должна проигрываться в смешно выглядящей петле. Опция"Data" должна сказать, что есть 20 костей, 3 кадра и интервал 0-99. Из Вычитается “1” из всех временных значений по некоторым причинам, не волнуйтесь об этом. Если Вы работаете c “time of frame” - это должно показать 1 как 0, 2 как 29, и 3 как 99.
Если все здесь правильно, и “anim_human” неповрежден, сохраните файл. Не изменяйте место сохранения и остальные параметры, т.к. мы хотим переписать “skeletons.brf”, находящийся в CommonRes.
Применение Python для замены существующей анимации новой
Удостоверьтесь, что Вы сделали как в обучающей программе Армэгэна для того, чтобы настроить систему модуля так, чтобы она была заточена на Вашу новую папку модуля. Автор рекомендует, чтобы Вы также сделали копию любых файлов Python, которые Вы редактируете.
Когда Вы сделали все, откройте свою системную папку модуля, ПКМ на “module_animations.py”, и нажмите, "Edit with IDLE” в выпадающем меню. Должны открыться два окна. Нам нужно то, которое с красным текстом и мешаниной наверху, и другое мы закроем.
Мы собираемся заменить одно из “готовых положений игры” нашей новой анимацией. Нажмите “Ctrl+F”, чтобы искать текст, и поиск “ready_thrust_onehanded”. Под этим есть текст “ [ready_durn, “anim_human”, НЕКОТОРОЕ ЧИСЛО, НЕКОТОРОЕ ДРУГОЕ ЧИСЛО, blend_in_ready],”. Все, что Вы должны сделать, изменить текст “anim_human” здесь на название Вашей новой анимации, что Вы сохранили в “skeletons.brf”. Теперь изменяете числа интервала на числа, которые показаны в окне "Data" OpenBRF. Вы можете также изменить “ready_durn”, если Вы желаете. Это определяет продолжительность Вашей анимации, и автор рекомендует изменить это на определенное время (возможно половина секунды или целая секунда), таким образом, Вы можете видеть, что длина интервала не имеет никакого отношения к скорости анимации.
Вы также должны удалить текст из верхней линии “acf_parallels_for_look_slope”. Эта линия говорит игре, что готовое положение изменяется в зависимости от положения камеры. Автор не знает, как оживить так, чтобы это изменилось с положением. Возможно, Вы должны сделать больше анимации, одна для самого высокого положения и одна для самого низкого, и сослаться на тех так или иначе так, чтобы он игра переключалась между ними в зависимости от положения камеры. Так или иначе, мы лишь удалим это так, чтобы наша анимация выглядела одинаково независимо от положения камеры.
Так, в конце концов это, релевантный текст в Python, должен выглядеть примерно так:
Текст в Python, отсылающий к нужной анимации
["ready_thrust_onehanded", acf_thrust|acf_anim_length(100)|acf_rotate_body|acf_enforce_rightside,
[1, "Test_animation2", 0, 99, blend_in_ready],
Автор назвал свою анимацию “Test_animation2” и поставил продолжительность “1” (1 секунда). Этот текст должен быть должным образом отформатирован – автор скопировал его со своего постаи в Python, и он был идентичным.
Теперь сохраните файл и закройте его. Тогда, в Вашей папке модуля дважды щелкните по “build_module.bat” чтобы создать Ваш новый модуль. После чего, (если не было ошибок) Вы можете запустить M&B и взглянуть на Вашу новую анимацию в игре.
ПЕРЕСМОТР: Очевидно, этот шаг переформатирования является ненужным с некоторыми текстовыми программами (включая Microsoft Word). Так, если Вы используете программы отличные от блокнота, Вы можете обнаружить, что нет необходимости переформатировать свой файл SMD после экспорта его из Mod Tool.
Теперь откройте файл анимации SMD, который Вы только что экспортировали из OpenBRF. Вы увидите отвратительную массу текста, который простирается на несколько метров направо. Файлы анимации, экспортируемые от M&B с OpenBRF, не знают, как сделать введение параграфов. Мы переформатируем этот SMD так, чтобы было легко его читать и работать. Это поможет нам позже, когда мы экспортируем наши новые данные о анимации из XSI. Фактически автор предоставит переформатированную версию – так как нам нужен только один отформатированый файл от M&B, вам нет необходимости знать, как его переформатировать. Мы нуждаемся в этом, потому что XSI экспортирует SMD с некоторой избыточной информацией, и приятно отформатированный SMD может помочь нам пофиксить их быстро.
Вот переформатированный “anim_human_ready_slashright_twohanded.smd”. Мы будем использовать его какую бы анимацию мы не экспортировали из XSI..
РЕФОРМАТИРОВАННЫЙ SMD ФАЙЛ
Нажмите, чтобы прочитать
version 1
nodes
0 "abdomen" -1
1 "thigh.L" 0
2 "calf.L" 1
3 "foot.L" 2
4 "thigh.R" 0
5 "calf.R" 4
6 "foot.R" 5
7 "spine" 0
8 "thorax" 7
9 "head" 8
10 "shoulder.L" 8
11 "upperarm.L" 10
12 "forearm.L" 11
13 "hand.L" 12
14 "item.L" 13
15 "shoulder.R" 8
16 "upperarm.R" 15
17 "forearm.R" 16
18 "hand.R" 17
19 "item.R" 18
end
skeleton
time 0
0 0.002980 -0.048350 9.104100 0.000000 -1.570796 1.570796
1 0.628640 1.089370 -0.408870 3.141591 -0.086538 3.141591
2 4.649140 0.006280 -0.152480 0.000000 0.006659 0.000000
3 4.724810 0.000000 0.000000 -0.000382 -1.565503 -3.141211
4 0.615950 -1.120970 -0.411960 3.141591 -0.081798 3.141591
5 4.669700 0.025960 -0.151690 0.000000 0.020869 0.000000
6 4.698490 0.000000 0.000000 -0.000136 -1.556099 -3.141457
7 1.972170 0.012830 0.000000 -0.030366 0.000000 -0.006836
8 1.985240 0.001840 0.000060 0.006341 -0.000196 0.006335
9 2.705030 0.000240 0.000000 0.008152 -0.000346 0.014506
10 1.758180 0.692770 0.008290 -1.777310 -0.023953 1.647033
11 1.454170 0.000000 0.000000 0.108582 0.052931 0.010999
12 2.770650 0.000000 0.000000 -0.021798 0.032954 0.003188
13 2.720050 -0.001310 0.011070 0.139929 -0.013553 0.017038
14 0.642300 0.121820 0.167370 -0.022679 0.034877 1.539277
15 1.758870 -0.686840 -0.024860 1.773674 0.023954 -1.646038
16 1.454170 0.000000 0.000000 -0.108581 0.052931 -0.010999
17 2.771110 0.002230 -0.003730 0.018988 0.030166 -0.002914
18 2.717440 0.001100 0.009450 -0.126333 -0.000301 -0.023219
19 0.647860 -0.124370 0.170260 -0.010578 0.018687 -1.544341
time 25701
0 -1.005780 0.439990 7.513610 2.868206 -1.532449 -1.822081
1 0.628640 1.089370 -0.408870 2.564335 0.637867 2.805891
2 4.649140 0.006280 -0.152480 0.037756 1.245160 0.035694
3 4.724810 0.000000 0.000000 0.666617 -1.139397 2.383906
4 0.615950 -1.120970 -0.411960 -2.854918 0.087993 -2.627975
5 4.669700 0.025960 -0.151690 0.258195 0.941168 0.207119
6 4.698490 0.000000 0.000000 -0.111493 -1.091705 -2.604735
7 1.972170 0.012830 0.000000 -0.410736 -0.018571 -0.095328
8 1.985240 0.001840 0.000060 -0.448526 -0.023778 -0.186137
9 2.705030 0.000240 0.000000 1.352829 -0.075965 0.262798
10 1.758180 0.692770 0.008290 -2.048966 0.934497 1.395724
11 1.454170 0.000000 0.000000 -1.065424 -0.578745 1.199236
12 2.770650 0.000000 0.000000 -0.203261 0.088308 0.521817
13 2.720050 -0.001310 0.011070 1.101839 0.944529 0.282864
14 0.642300 0.121820 0.167370 -0.100639 -0.021199 1.602711
15 1.758870 -0.686840 -0.024860 2.439766 0.022927 -1.316669
16 1.454170 0.000000 0.000000 1.302205 -0.924201 -1.150749
17 2.771110 0.002230 -0.003730 1.402306 0.002712 -0.216053
18 2.717440 0.001100 0.009450 -0.088075 -0.039083 0.356886
19 0.647860 -0.124370 0.170260 -0.010685 0.019148 -1.546891
time 25711
0 -1.005780 0.439990 7.513610 2.868206 -1.532449 -1.822081
1 0.628640 1.089370 -0.408870 2.564335 0.637867 2.805891
2 4.649140 0.006280 -0.152480 0.037756 1.245160 0.035694
3 4.724810 0.000000 0.000000 0.666617 -1.139397 2.383906
4 0.615950 -1.120970 -0.411960 -2.854918 0.087993 -2.627975
5 4.669700 0.025960 -0.151690 0.258195 0.941168 0.207119
6 4.698490 0.000000 0.000000 -0.111493 -1.091705 -2.604735
7 1.972170 0.012830 0.000000 -0.410736 -0.018571 -0.095328
8 1.985240 0.001840 0.000060 -0.448526 -0.023778 -0.186137
9 2.705030 0.000240 0.000000 1.352829 -0.075965 0.262798
10 1.758180 0.692770 0.008290 -2.048966 0.934497 1.395724
11 1.454170 0.000000 0.000000 -1.065424 -0.578745 1.199236
12 2.770650 0.000000 0.000000 -0.203261 0.088308 0.521817
13 2.720050 -0.001310 0.011070 1.101838 0.944530 0.282862
14 0.642300 0.121820 0.167370 -0.100639 -0.021199 1.602711
15 1.758870 -0.686840 -0.024860 2.439766 0.022927 -1.316669
16 1.454170 0.000000 0.000000 1.302205 -0.924201 -1.150749
17 2.771110 0.002230 -0.003730 1.402306 0.002712 -0.216053
18 2.717440 0.001100 0.009450 -0.088075 -0.039083 0.356886
19 0.647860 -0.124370 0.170260 -0.010685 0.019148 -1.546891
end
nodes
0 "abdomen" -1
1 "thigh.L" 0
2 "calf.L" 1
3 "foot.L" 2
4 "thigh.R" 0
5 "calf.R" 4
6 "foot.R" 5
7 "spine" 0
8 "thorax" 7
9 "head" 8
10 "shoulder.L" 8
11 "upperarm.L" 10
12 "forearm.L" 11
13 "hand.L" 12
14 "item.L" 13
15 "shoulder.R" 8
16 "upperarm.R" 15
17 "forearm.R" 16
18 "hand.R" 17
19 "item.R" 18
end
skeleton
time 0
0 0.002980 -0.048350 9.104100 0.000000 -1.570796 1.570796
1 0.628640 1.089370 -0.408870 3.141591 -0.086538 3.141591
2 4.649140 0.006280 -0.152480 0.000000 0.006659 0.000000
3 4.724810 0.000000 0.000000 -0.000382 -1.565503 -3.141211
4 0.615950 -1.120970 -0.411960 3.141591 -0.081798 3.141591
5 4.669700 0.025960 -0.151690 0.000000 0.020869 0.000000
6 4.698490 0.000000 0.000000 -0.000136 -1.556099 -3.141457
7 1.972170 0.012830 0.000000 -0.030366 0.000000 -0.006836
8 1.985240 0.001840 0.000060 0.006341 -0.000196 0.006335
9 2.705030 0.000240 0.000000 0.008152 -0.000346 0.014506
10 1.758180 0.692770 0.008290 -1.777310 -0.023953 1.647033
11 1.454170 0.000000 0.000000 0.108582 0.052931 0.010999
12 2.770650 0.000000 0.000000 -0.021798 0.032954 0.003188
13 2.720050 -0.001310 0.011070 0.139929 -0.013553 0.017038
14 0.642300 0.121820 0.167370 -0.022679 0.034877 1.539277
15 1.758870 -0.686840 -0.024860 1.773674 0.023954 -1.646038
16 1.454170 0.000000 0.000000 -0.108581 0.052931 -0.010999
17 2.771110 0.002230 -0.003730 0.018988 0.030166 -0.002914
18 2.717440 0.001100 0.009450 -0.126333 -0.000301 -0.023219
19 0.647860 -0.124370 0.170260 -0.010578 0.018687 -1.544341
time 25701
0 -1.005780 0.439990 7.513610 2.868206 -1.532449 -1.822081
1 0.628640 1.089370 -0.408870 2.564335 0.637867 2.805891
2 4.649140 0.006280 -0.152480 0.037756 1.245160 0.035694
3 4.724810 0.000000 0.000000 0.666617 -1.139397 2.383906
4 0.615950 -1.120970 -0.411960 -2.854918 0.087993 -2.627975
5 4.669700 0.025960 -0.151690 0.258195 0.941168 0.207119
6 4.698490 0.000000 0.000000 -0.111493 -1.091705 -2.604735
7 1.972170 0.012830 0.000000 -0.410736 -0.018571 -0.095328
8 1.985240 0.001840 0.000060 -0.448526 -0.023778 -0.186137
9 2.705030 0.000240 0.000000 1.352829 -0.075965 0.262798
10 1.758180 0.692770 0.008290 -2.048966 0.934497 1.395724
11 1.454170 0.000000 0.000000 -1.065424 -0.578745 1.199236
12 2.770650 0.000000 0.000000 -0.203261 0.088308 0.521817
13 2.720050 -0.001310 0.011070 1.101839 0.944529 0.282864
14 0.642300 0.121820 0.167370 -0.100639 -0.021199 1.602711
15 1.758870 -0.686840 -0.024860 2.439766 0.022927 -1.316669
16 1.454170 0.000000 0.000000 1.302205 -0.924201 -1.150749
17 2.771110 0.002230 -0.003730 1.402306 0.002712 -0.216053
18 2.717440 0.001100 0.009450 -0.088075 -0.039083 0.356886
19 0.647860 -0.124370 0.170260 -0.010685 0.019148 -1.546891
time 25711
0 -1.005780 0.439990 7.513610 2.868206 -1.532449 -1.822081
1 0.628640 1.089370 -0.408870 2.564335 0.637867 2.805891
2 4.649140 0.006280 -0.152480 0.037756 1.245160 0.035694
3 4.724810 0.000000 0.000000 0.666617 -1.139397 2.383906
4 0.615950 -1.120970 -0.411960 -2.854918 0.087993 -2.627975
5 4.669700 0.025960 -0.151690 0.258195 0.941168 0.207119
6 4.698490 0.000000 0.000000 -0.111493 -1.091705 -2.604735
7 1.972170 0.012830 0.000000 -0.410736 -0.018571 -0.095328
8 1.985240 0.001840 0.000060 -0.448526 -0.023778 -0.186137
9 2.705030 0.000240 0.000000 1.352829 -0.075965 0.262798
10 1.758180 0.692770 0.008290 -2.048966 0.934497 1.395724
11 1.454170 0.000000 0.000000 -1.065424 -0.578745 1.199236
12 2.770650 0.000000 0.000000 -0.203261 0.088308 0.521817
13 2.720050 -0.001310 0.011070 1.101838 0.944530 0.282862
14 0.642300 0.121820 0.167370 -0.100639 -0.021199 1.602711
15 1.758870 -0.686840 -0.024860 2.439766 0.022927 -1.316669
16 1.454170 0.000000 0.000000 1.302205 -0.924201 -1.150749
17 2.771110 0.002230 -0.003730 1.402306 0.002712 -0.216053
18 2.717440 0.001100 0.009450 -0.088075 -0.039083 0.356886
19 0.647860 -0.124370 0.170260 -0.010685 0.019148 -1.546891
end
Интерпретирование содержания SMD файлов анимации
Наверху расположен список костей скелета (здесь названный "nodes"). Вы увидите, что есть 20 из них, точно так же, как OpenBRF говорит в опции "Data", пронумерованны 0-19. Их названия в значительной степени очевидны – например, “item. R” вещь, находящаяся в правой руке.
Ниже этого списка линия, которая читается “время 0”. Эти 20 линий ниже этого обращаются к нулевому кадру анимации. Это - позиция T, в которой скелет стоит по умолчанию, и автор понятия не имеет, почему это существует, но находится во всех анимациях SMD. Автор не знает, что происходит, если это удалено.
Вы увидите, что остальная часть файла – повторение того же материала. Есть “время 0” и 20 линий к нему, “время 25701” и 20 линий к нему, и наконец “время 25711” и еще 20 линий к нему. Прошлые два "времени" фактически идентичны для готовых положений (снова, автор не вполне знает, почему, но мы оставим это). Вы можете видеть, что эти значения "времени" - значения интервала, которые Вы можете видеть в опции "Data" в OpenBRF, когда Вы смотрите на соответствующую анимацию после деления “anim_human”. В полном движении со многими кадрами каждый кадр имеет значение. Это значение говорит игре, когда в пределах полной анимации кадр имеет место быть. Так, если у Вас будет анимация нападения с интервалом 0-10, и некоторая информация под заголовком “время 5”, то игра поместит скелет в положение, определенное серединой пути анимации. Насколько автор знает, длина интервала не важна – более длинный интервал не делает более длительную анимацию. Единственная значимая вещь - положение кадров в пределах интервала. Например, анимация с интервалом 0-10, с кадрами в 0, 5, и 10 была бы идентична анимации с интервалом 0-100 с кадрами в 0, 50, и 100. В конце концов временная продолжительность анимации определена в другом месте (и затем изменена значением скорости оружия и мастерством персонажа). Подбор правильных значений временных интервалов для ваших кадров весьма важен, потому что они определяют уровень различных стадий анимации.
Ряды информации под каждым "временем", определяют положения костей скелета в пределах 6 топоров – 3 топора перевода, и 3 топора вращения. Есть 6 колонок, 3 для перевода сначала, и затем 3 для вращения. Только кость "abdomen" фактически использует информацию о переводе, насколько автор знает. Если Вы попытаетесь перевести эту кость в XSI, то Вы будете видеть, что весь меш перемещается с ней. Вы будете часто хотеть перевести эту кость, например, понижая положение характера. Другие 19 костей используют только информацию о вращении. Меш не подстроится под искаение должным образом, когда Вы переведете любую из этих других 19 костей.
Единицы вращения, используемого в файлах SMD, являются радианами. Сто восемьдесят степеней равны пи (3.14) радианы, таким образом, 90 градусов равны 1.5707 …. Это слегка пригодится позднее, когда мы обнаруживаем, что файлы SMD, экспортируемые из XSI, не соответствуют 90 градусам вращения в животе (abdomen)!
Экспортирование анимации SMD из XSI Mod Tool
Откроем XSI Mod Tool. Мы сделаем несколько кадров, экспортируя их, поскольку SMD, убираясь сказал SMD, и затем импортируя это SMD в OpenBRF. Если Вы получаете анимацию в OpenBRF, Вы можете быть довольно уверены, что игра примет это.
В кадре 1 на линии времени, делите весь меш потянув за один из краев соответствующего инструмента, нажмите “C”, затем “K”, “V” и “K” снова. Теперь положение T закодировано в кадре 1. Затем, в кадре 30 выберите одну из тазовых костей, нажмите “C”, вращайте кость приблизительно на 90 градусов, так, чтобы нога придерживалась прямо, и нажмите “K”, чтобы закодировать это. Все еще в кадре 30, выберите колено той же ноги и вращайте это так, чтобы голень указала на землю, и тогда кодируйте. (Это может выглядеть немного глупым, потому что он в основном носит юбку.) Теперь в кадре 100, вращайте кость колена так, чтобы нога выпрямилась, и кодируйте. Когда Вы запускаете проигрывание, персонаж должен поднять колено, затем выпрямить ногу. Это будет выглядеть чрезвычайно неестественным и глупым, и Вы можете играть с этим однако, пока есть только ключевые кадры в 0, 30, и 100.
Теперь, если у вас есть закодированные элементы на кадрах 1, 30, и 100 чтобы сделать опознаваемое движение, нажимаете на"ValveSource" в панели наверху окна, и нажимаете на “ Export SMD …” в выпадающем меню. В окне, которое появляется в “Options”, выберите “Sкeletal Animation (.SMD)” как тип файла, и снимите выделение со всех опций ниже. Тогда нажмите на три точки рядом с полем "File", назовите свой файл SMD как желаете.
Экспортирование SMD с только необходимой информацией кадра из XSI Mod Tool
Если Вы прокрутите вниз в SMD, коий мы только что экспортировали из XSI Mod Tool увидите, что есть 100 значений "time". Мы будем использовать Mod Tool, чтобы переместить наши ключевые кадры в 1-е, 2-е, и 3-е положения на линии времени так, чтобы SMD содержал только необходимую информацию. Мы затем вставим правильные временные значения в SMD так, чтобы игра смешала их вместе с надлежащим выбором времени.
Откройте свою анимацию в XSI Mod Tool 7.5. Выберите все и нажмите “0” (ноль на клавиатуре). Созерцайте кривые функций. Не бойтесь. Обратите внимание на линию времени у основания этого окна. Тяните рамку инструмента выбора от вершины до основания линий, чтобы выбрать их всех. Они должны побелеть, и должны появиться небольшие цветные квадраты на некоторых из линий в 1-м, 30-м, и 100-м положениях на линии времени. С отобранными линиями (белыми) тяните другую рамку выбора вокруг квадратов в 30-го кадра. Они должны покраснеть и стать между черными квадратами. Теперь нажмите “Ctrl+X”, чтобы вырезать эту информацию, переместите линию времени в окно f-кривой в кадре 2 (положение сразу после первого набора цветных квадратов), и нажмите “Ctrl+V”, чтобы вставить информацию в этом месте. Теперь, повторите этот процесс для кадра 100, вырезая оттуда и вставляя в кадр 3. Если Вам трудно видеть вещи, Вы можете пролистать через окно f-кривой, перетаскивая красную вертикаль в ее линию времени мимо видимых концов, и Вы можете увеличить и уменьшить масштаб используя колесо мыши. Все цветные квадраты должны теперь быть выше первых 3 кадров на линии времени. Теперь закройте окно f-кривой.
Если Вы выберете персонаж, то увидите ключевые кадры в 1, 2, и 3 на линии времени. Когда Вы нажмете «Play», он будет хватать ногу как маньяк, но это нормально, потому что мы только хотим информацию о кадре – мы сообщим игре, куда поместить ключевые кадры так, чтобы у них был надлежащий выбор времени. Последняя вещь, которую надо сделать здесь состоит в том, чтобы изменить размеры линии времени так, чтобы были включены только кадры 1 - 3. С правового края на линии времени есть темно-серая коробка с “100” внутри. Нажмите на нее, и вставьте 3. У Вашей линии времени должно теперь быть только 3 кадра, все с миленькими красными квадратами на них, когда Вы выбираете персонажа.
Теперь, экспортируйте SMD для этой анимации как прежде. Не забудьте снять 3 галки в окне экспорта. Теперь взгляните на файл SMD. Должен выглядеть как прежде, но у этого будет только 3 временных значения. Теперь мы должны переформатировать это немного.
Устранение неполадок SMD анимационных файлов, экспортированных из XSI Mod Tool
Удостоверьтесь, что у Вас есть переформатированный SMD автора из спойлера. Определить корректность работы при импортировании в OpenBRF можно так: если видите статическую позу и отсутствие фактического движения – значит что-то не в порядке.
Откройте файл SMD, который мы только экспортировали из XCI Mod Tool. Вы заметите, что его содержание немного отличается от переформатированного файла. С одной стороны у этого есть 22 кости в списке наверху – пронумеровал 0-21 – и 22 линии информации о кости для каждого временного значения. Это так, потому что XCI Mod Tool дал нам информацию для кожи и дополнительного узла между ногами. Эта информация является странной и непостижимой и заставит OpenBRF замереть от страхом. Мы должны удалить это и заставить файл быть похожим на переформатированную версию. У костей также есть забавные имена Вы можете, вероятно, подобрать эквиваленты всех этих имен, но в этом нет необходимости.
Чтобы пофиксить это откройте реформатированный SMD и открывайте вашу анимацию SMD с этими 3 временными значениями. В реформатированном SMD выделите все выше “time 25701” и нажмите “Ctrl+C”, чтобы скопировать это. Теперь, в SMD для Вашей новой анимации, выделите все выше “time 1”, и нажмите “Ctrl+V”, чтобы вставить от реформатированного SMD. Если Вы хотите сохранить свой новый SMD, поскольку работаете над ним, автор предлагает сделать это под новым именем в случае, если Вы сделали некоторую невидимую ошибку Теперь у Вашего нового SMD есть надлежащий список костей наверху, информации о позе T в “time 0”, так же как информации для Ваших 3 ключевых кадров. Теперь мы должны перенумеровать другие временные значения и удалить информацию для двух избыточных костей (“0” и “1”, также известные как “thigh.mesh” и " thigh " ). Наконец, мы перенумеруем остающиеся кости, которые уже находятся в правильном порядке, так, чтобы они шли от 0-19.
Так, для времен 1, 2, и 3, удалите верхние два ряда информации о кости. Теперь удалите ряды, начинающиеся на 0 и 1. Теперь перенумеруйте все остающиеся ряды так, чтобы они были пронумерованы от 0 до 19 под каждым временным значением. Очевидно, каждое число должно стать на 2 ниже, таким образом, 2 становится 0, 3 становится 1 и так далее. Вы должны перенумеровать их вручную, потому что информация около этих чисел уникальна, таким образом, Вы не можете просто вставить поверх них с заменой (хотя мог бы быть необычный способ заменить их, о котором автор не в курсе). Теперь замените временные значения так, чтобы эти 4 временных значения для целого SMD были в порядке: 0, 1, 30, и 100.
Не волнуйтесь о пробелах концах линий и подобные штуки. Насколько автор знает, SMD довольно терпим к таким вещам. Производились довольно большие изменения, когда переформатировали анимацию, экспортируемую от OpenBRF.
Так или иначе, как только Вы закончили с SMD сохранитесь под новым именем. Теперь импортируйте этот SMD в OpenBRF, отметьте, что персонаж повернулся на 90 градусов и созерцает эксцентричное движение!
Чтобы пофиксить ориентацию персонажа, откройте свой SMD снова (тот, который Вы только проверили в OpenBRF). Скопируйте “0” линию информации с “time 0”, и вставьте поверх “0” линий во всех других временных значениях. Как автор сказал прежде, по некоторым причинам SMD от XSI отличаются на 90 градусов вращения живота. Копирование информации с “time 0” – поза T, взятая непосредственно из M&B – зафиксирует (починит) это. Вы можете также вычесть 1.570796 (половина пи) из второй колонки информации о вращении во всех кадрах, взятых из XSI. Вероятно, подобные вычитания потребуются для создания более продвинутых анимаций, а пока Вам достаточно вращать "живот" (действительно бедра) для некоторых движений. Возможно, что Вы можете также установить вращение, перемещая персонажа в XSI перед экспортом, но автор не пробовал это должным образом.
Сложный способ установить ориентацию персонажа состоит в том, чтобы изменить информацию о вращении для кости живота непосредственно в SMD. Легкий способ - вращать кость живота в XSI. Назад на90 градусов от общего вращения. Чтобы сделать это, в каждом ключевом кадре выбираете кость живота, выбираете общий (global), в противоположность локальному, вращению в панели справа, затем удерживает Shift и двигаете мышь, чтобы вращать кость равномерными шагами, пока Вы не повернете назад на 90 градусов. Установите (закодируйте) это вращение в каждом ключевом кадре прежде, чем Вы экспортируете анимацию, и ориентация персонажа будет правильна в OpenBRF и (позже) в игре.
Фактически, XSI отбрасывает перевод живота также. Вы можете, вероятно, установить, это в XSI, но в настоящее время автор устанавливает это в SMD и заменяет второй и третий ряды информации о переводе для кости живота в каждом кадре, и затем изменяя подпись второй колонки (то есть, делает положительное число отрицательным и наоборот). Конечно, если бедра Вашего персонажа не двигаются в анимации, Вы можете только скопировать информацию с более раннего ряда вместо того, чтобы вносить корректировку много раз.
Играя с SMD, затем рассматривая это в OpenBRF, Вы можете определить – на что влияют ряды и колонки и насколько. Автор фактически закрепил ручное расположение и работу ног на некоторых из анимаций модифицируя непосредственно текст SMD.
Проверьте свой SMD после выполнения этих установок (фиксов) (импортируйте анимацию в OpenBRF), чтобы удостовериться, что это работает. Если персонаж перевернут или переместился в неправильное направление, это означает, что Вы вращали живот неправильным путем в XSI, обменивали неправильные колонки в SMD, или вставили/удалили минус знак в неправильном месте.
Добавление новой, правильно форматированной анимации SMD в “skeltons.brf”
Откройте OpenBRF и откройте “skeletons.brf”. Выберите "Animation". Список должен показать “anim_human” и ничего более. Нажмите "Import" в панели наверху окна, и нажмите “Skeletal animation” в выпадающем меню. Выберите свое новое, должным образом отформатированный SMD, который Вы успешно проверили в OpenBRF прежде. Теперь, список должен показать “anim_human” и Вашу новую анимацию. Нажмите на нее и она должна проигрываться в смешно выглядящей петле. Опция"Data" должна сказать, что есть 20 костей, 3 кадра и интервал 0-99. Из Вычитается “1” из всех временных значений по некоторым причинам, не волнуйтесь об этом. Если Вы работаете c “time of frame” - это должно показать 1 как 0, 2 как 29, и 3 как 99.
Если все здесь правильно, и “anim_human” неповрежден, сохраните файл. Не изменяйте место сохранения и остальные параметры, т.к. мы хотим переписать “skeletons.brf”, находящийся в CommonRes.
Применение Python для замены существующей анимации новой
Удостоверьтесь, что Вы сделали как в обучающей программе Армэгэна для того, чтобы настроить систему модуля так, чтобы она была заточена на Вашу новую папку модуля. Автор рекомендует, чтобы Вы также сделали копию любых файлов Python, которые Вы редактируете.
Когда Вы сделали все, откройте свою системную папку модуля, ПКМ на “module_animations.py”, и нажмите, "Edit with IDLE” в выпадающем меню. Должны открыться два окна. Нам нужно то, которое с красным текстом и мешаниной наверху, и другое мы закроем.
Мы собираемся заменить одно из “готовых положений игры” нашей новой анимацией. Нажмите “Ctrl+F”, чтобы искать текст, и поиск “ready_thrust_onehanded”. Под этим есть текст “ [ready_durn, “anim_human”, НЕКОТОРОЕ ЧИСЛО, НЕКОТОРОЕ ДРУГОЕ ЧИСЛО, blend_in_ready],”. Все, что Вы должны сделать, изменить текст “anim_human” здесь на название Вашей новой анимации, что Вы сохранили в “skeletons.brf”. Теперь изменяете числа интервала на числа, которые показаны в окне "Data" OpenBRF. Вы можете также изменить “ready_durn”, если Вы желаете. Это определяет продолжительность Вашей анимации, и автор рекомендует изменить это на определенное время (возможно половина секунды или целая секунда), таким образом, Вы можете видеть, что длина интервала не имеет никакого отношения к скорости анимации.
Вы также должны удалить текст из верхней линии “acf_parallels_for_look_slope”. Эта линия говорит игре, что готовое положение изменяется в зависимости от положения камеры. Автор не знает, как оживить так, чтобы это изменилось с положением. Возможно, Вы должны сделать больше анимации, одна для самого высокого положения и одна для самого низкого, и сослаться на тех так или иначе так, чтобы он игра переключалась между ними в зависимости от положения камеры. Так или иначе, мы лишь удалим это так, чтобы наша анимация выглядела одинаково независимо от положения камеры.
Так, в конце концов это, релевантный текст в Python, должен выглядеть примерно так:
Текст в Python, отсылающий к нужной анимации
["ready_thrust_onehanded", acf_thrust|acf_anim_length(100)|acf_rotate_body|acf_enforce_rightside,
[1, "Test_animation2", 0, 99, blend_in_ready],
Автор назвал свою анимацию “Test_animation2” и поставил продолжительность “1” (1 секунда). Этот текст должен быть должным образом отформатирован – автор скопировал его со своего постаи в Python, и он был идентичным.
Теперь сохраните файл и закройте его. Тогда, в Вашей папке модуля дважды щелкните по “build_module.bat” чтобы создать Ваш новый модуль. После чего, (если не было ошибок) Вы можете запустить M&B и взглянуть на Вашу новую анимацию в игре.
Нажмите, чтобы прочитать
Далее поговорим о том, как сделать хорошо выглядящую анимацию.
Первый способ – сделать на-глаз. Вы делаете анимацию в Mod Tool использую линию времени насколько желаете. Выравниваете так, чтобы ключевые кадры шли один за другим перед экспортированием, вставляете номера ключевых кадров из полной линии времени как SMD временные значения. Или просто экспортируете весь SMD, удаляете все неключевые временные значения, затем убираете(?). Этот метод ставки анимации в игру использует тот же тайминг, что и тот, который вы видели в XSI Mod Tool.
Второй способ – получить материал из видео. Поместить его в Mod Tool как текстурированные «решетки» нужных размеров выстроить их скелетом, настроить камеру и сопоставить скелет с картинками, чтобы сделать каждый кадр.
Этот (второй) метод автор и опишет подробно.
Вот изображение сцены, использованной автором для создания анимации атакой «полумечом» в этом видео
]]>]]>
Для ускорения работы вы можете использовать изображения под одним углом, а затем позиционировать скелет для соответствия каждому кадру и убрать остальные углы на глаз.
Автор рекомендует отснимать под обоими углами, по крайней мере в первые разы.
Необходимые вещи для визуаьных ссылок при анимировании
Нужна камера, с которой можно сливать видео на комп.
Нужна программа для просмотра загруженного видео на компе. Автор юзает AdobePremiere, также можно применять Windows Movie Maker, QuickTime,RealPlayer или что-то наподобие.
Нам нужна возможность при просмотре видео определять точное время кадра.
Нужна программа для работы с изображениями – MS Paint вполне достаточно.
Отснятие материала
В идеале необходимо отснять с двух ракурсов: фас и профиль. Желательно, чтобы задний фон был однотонным, одежда тоже, не одевайтесь как гребаный хиппи)
Для анимации атакующего движения не делайте длинный шаг. Штука в том, чтобы персонаж не смещался сильно относительно первоначального положения. Чем точнее вы двигаетесь, тем лучше (особенно это актуально для завершающей фазы движения).
Желательно располагаться подальше от камеры, чтобы впоследствии был простор для применения Зума при заполнении кадров. В идеале, максимальный зум должен полностью заполнять кадр. Такое положение камеры уменьшает количество шумов и облегчает последующую работу.
Вся идея в том, чтобы скопировать и оцифровать ваше движение. Двигайтесь так, как хотите, чтоб выглядело это движение в игре, но на разумной скорости. Если сделаете это слишком быстро – можно снизить скорость в Python позже. Двигаться в замедленном режиме также не желательно.
Работа с видео кадрами для их последующего применения в Mod Tool
Мы сделаем кадры, которые затем будут ключевыми кадрами в Mod Tool , в последствии, в SMD и кадрами, появляющимися в OpenBRF.
Есть несколько способов. Первый: сделать снимки на равных интервалах (к примеру каждые 3 кадра ил 100милисекунд). Другой – просматривать видео и делать снимки, которые сочтете нужными. Этим методом – сделана анимация полумеча из видео приведенного ранее. Преимущество второго метода состоит в том, что Вы гарантировано получите важные фрагменты движения – например, пункт, в котором оружие находится в верхней или нижней точке.
Кроме того, автор рекомендовал бы сделать приблизительно 5 - 10 кадров в секунду. Колебание полумеча например было сделано с 7 кадрами, и соответственно 7 кадров сделано с каждого угла.
Если Вы сделаете с обоих углов, то Вы должны будете удостовериться, что зафиксировали те же самые фрагменты. Если Вы последовательно выполняли движение, то это не должно быть слишком трудным.
Для этого, запишите число ключевых кадров, для которого Вы получаете ссылку (1-ый, 2-ой, 3-ий … 10-ый, безотносительно), и его положение в видео (или в кадрах или во временной линии). Вы будете нуждаться в его положении в видео так, чтобы Вы могли задать правильные временные значения в SMD, таким образом Вы сможете анимировать движение по линии времени правильной длины в Mod Tool.
Автор будет использовать пример своего движения полумеча, чтобы описать это. Для первого кадра был сделан кадр непосредственно перед началом движения. Этот первый кадр будет основой для Вашего нападения, и первым кадром нападения непосредственно. В видео автора (после того, как он урезал лишнее), это было фактически 3-ьим кадром. Поэтому, чтобы получить надлежащие временные значения для всех ключевых кадров, понадобилось вычесть 2 из их номера в видео. Например, 4-й кадр анимации использованной в кадре получен из 16-го кадра видео. Поэтому временное значение в SMD для этого кадра было 14.
Так как числа интервала не определяют продолжительность анимации, Вы можете сделать точно ту же самую вещь с точками времени из видео вместо кадров. Если бы Ваш первый кадр анимации был на 500-й миллисекунде в видео, все, что Вы должны сделать, это вычесть 500 миллисекунд из всех последующих кадров. Тогда Вы вводите соответствующие значения в SMD как временные значения. Вы могли бы получить SMD с временными значениями в сотнях, с кадрами будет все в порядке, пока их относительные положения остаются теми же самыми как в видео (и в действительности). В конце концов, продолжительность анимации определена в Python.
Удостоверьтесь, что Ваши снимки для ключевых кадров соответствуют друг другу, если Вы берете их с обоих углов, как автор рекомендует. Приложите усилия, но без фанатизма). Они не будет соответствовать точно. Если соответствие не очень точное, только удостоверьтесь, что Вы выбирали один угол (автор рекомендует вид сбоку), по которому вы сработаете точно, и используете другой, чтобы помочь Вам выровнять.
Если Вы редактируете свои картинные ссылки (кроппинг и т.п.), удостоверьтесь, что они все имеют тот же самый размер без растяжения. Это не строго жизненно важно, но сделает вещи легче позже. Запишите их величину в пикселах.
Наконец, в Paint или Photoshop проставьте номера кадров по углам ваших кадров (как Вы может видеть на картинке сцены анимации), так, чтобы Вы знали, что есть что, когда Вы в Mod Tool. [Автор рекомендует отметить каждый кадр числом, которое будет его возможным временным значением в SMD.]
Поместите все свои пронумерованные картинные ссылки (наряду с видео) в известную папку.
Внедрение кадров в Mod Tool для сопоставления скелета сними
Теперь надо импортировать кадры, отмасштабировать и отпозиционировать их и начать анимировать.
Откройте в Mod Tool сцену, в которой есть рабочий скелет M&B. В левом окне, в опции "Get" выберите "Primitive", далее "Surface" в выпадающем меню, и нажмите "Grid" в меню, которое появляется. В окне измените “U” длину и “V” длину так, чтобы они были пропорциональны Вашему изображению. Например, изображения автора были 1024X576, таким образом, изменил “U” длину на 10.24, и “V” длина на 5.76. Затем, измените “Subdivisions” на 1 и на “U” и на “V”. Теперь закройте окно, и у Вас должен быть прямоугольник тех же самых пропорций, что и у Ваших картинок.
Теперь текстурируем. Выберите прямоугольник, и нажмите "Material" в панели в стороне (это находится под "Primitive", на который мы нажали прежде). Нажмите "Phong" в выпадающем меню меню. Вы увидите окно с цветными панелями и некоторыми другими опциями. Заметьте небольшую вилкообразную вещь справа от главного набора цветных панелей, и нажмите на нее. Нажмите "Image" в выпадающем меню. Окно появляется. Около основания есть опция “Texture Projection”. Нажмите "New" и нажмите “ Planar XZ” в выпадающем меню. Ничего не происходит! Потому что автор забыл сказать изменить штуку в верхнем правом углу с “Wireframe” на “Textured Decal”. Сделайте это, и сетка должна стать разноцветной. Теперь, в окне"Image" выберите "New"-“New from file …”. Теперь выберите свой первый кадр (или позу T, если Вы снимали это), и это должно появиться на сетке!
Теперь вращайте это и переместите так, чтобы это было в правильном месте относительно скелета. Удерживайте "Shift", во время вращения, чтобы оно двигалось равномерно и Вы могли осуществить хорошее 90-градусное вращение. Теперь нажмите “X”, чтобы вызвать масштабирующие топоры, и масштабируйте сетку пока ваше изображение не станет того же размера, что и скелет.
Теперь мы клонируем это и повторим процесс текстурирования. Продолжаем клонирование и текстуринг и для всех остальных наших изображений.
Выберите сетку и нажмите “Ctrl+D”, затем нажмите “V” и переведите назад или вперед. Клон сетки должен появиться. Странные вещи могут произойти с клонированием позже – клоны могут появиться в различных местах в сцене, автор понятия не имеет, почему, но Вы должны будете только переместить их. Как только у Вас есть новая сетка, только выберите ее и текстурируйте ее Вашей следующей картинкой.
Заключение и полезные советы
Осталось позиционировать скелет, чтобы соответствовал каждой картинке в соответствующего кадра на линии времени, кодируя (фиксируя) все при вращении и переводе, и сохраняясь почаще. Помните, что Вы можете только перевести живот – все другие кости должны вращаться.
Двигайте кадры ближе или дальше во время работы, и используете линии на сетке сцены, чтобы сразу видеть свою работу. Вы должны рассматривать любую конечность, над которой продолжаете работать по прямой линии, чтобы расположить ее должным образом – чтобы уменьшить эффекты перспективы. Это - то, почему Вы захотите придвинуться очень близко к скелету. В зависимости от того, как Вы устроили сцену, Вы можете также изменить вид от "User" к "Front" или "Right" и получить вид без эффектов перспективы. Автор не использует это, поскольку ему достаточно линий сетки, чтобы удостовериться, что объекты рассматриваются по прямой.
Если Вы сопоставите хорошо, Вы можете протянуть кадр медленно через скелет, и это будет выглядеть действительно страшно. Автор рекомендует делать это, чтобы масштабировать размер головы и положение – Вы можете вставить свое лицо в шлем персонажа, и это весело.
Также может быть полезным переключиться между “Wireframe” и “Textured Decal” так, чтобы Вы могли выбрать кости легко и затем видеть картину, чтобы сопоставлять их.
Коротко по анатомии. Попытайтесь представить, как движения действительно выглядят, когда Вы анимируете. Скелет работает в значительной степени как человек. Какие кости Вашего собственного скелета фактически перемещаются? Анатомически, если Вы только двигаете только в плечевом суставе Ваша рука может подняться на 90 градусов, как в позе T. Чтобы поднять Вашу руку высоко, Вы перемещаете свою ключицу также. Так, если бы мы поднимали руку персонажа высоко в сторону, мы применили бы вращение ключицы (чтобы поднять плечо) и затем вращали бы лопатку (чтобы поднять плечо).
Для другого примера думайте о глубокой боевой стойке. В ней бедра (кости бедра) фактически вращаются наружу. Так, анимируя ногу, надо вращать в бедре, затем согнуть в бедре и колене.
Помните об этих вещах, но не бойтесь нарушить анатомические правила, пока никто не может видеть, что Вы делаете это. Во многих анимациях автор двигал локоть, как будто у персонажа шарнир там, но никто не может указать различия между этим и верхнем вращением плеча (который автор не мог использовать, потому что меш искажал слишком много). Кроме того, в Mod Tool Вы будете часто вращать запястье или руку, даже при том, что, анатомически, большая часть этого вращения происходит в предплечье.
Первый способ – сделать на-глаз. Вы делаете анимацию в Mod Tool использую линию времени насколько желаете. Выравниваете так, чтобы ключевые кадры шли один за другим перед экспортированием, вставляете номера ключевых кадров из полной линии времени как SMD временные значения. Или просто экспортируете весь SMD, удаляете все неключевые временные значения, затем убираете(?). Этот метод ставки анимации в игру использует тот же тайминг, что и тот, который вы видели в XSI Mod Tool.
Второй способ – получить материал из видео. Поместить его в Mod Tool как текстурированные «решетки» нужных размеров выстроить их скелетом, настроить камеру и сопоставить скелет с картинками, чтобы сделать каждый кадр.
Этот (второй) метод автор и опишет подробно.
Вот изображение сцены, использованной автором для создания анимации атакой «полумечом» в этом видео
]]>]]>
Для ускорения работы вы можете использовать изображения под одним углом, а затем позиционировать скелет для соответствия каждому кадру и убрать остальные углы на глаз.
Автор рекомендует отснимать под обоими углами, по крайней мере в первые разы.
Необходимые вещи для визуаьных ссылок при анимировании
Нужна камера, с которой можно сливать видео на комп.
Нужна программа для просмотра загруженного видео на компе. Автор юзает AdobePremiere, также можно применять Windows Movie Maker, QuickTime,RealPlayer или что-то наподобие.
Нам нужна возможность при просмотре видео определять точное время кадра.
Нужна программа для работы с изображениями – MS Paint вполне достаточно.
Отснятие материала
В идеале необходимо отснять с двух ракурсов: фас и профиль. Желательно, чтобы задний фон был однотонным, одежда тоже, не одевайтесь как гребаный хиппи)
Для анимации атакующего движения не делайте длинный шаг. Штука в том, чтобы персонаж не смещался сильно относительно первоначального положения. Чем точнее вы двигаетесь, тем лучше (особенно это актуально для завершающей фазы движения).
Желательно располагаться подальше от камеры, чтобы впоследствии был простор для применения Зума при заполнении кадров. В идеале, максимальный зум должен полностью заполнять кадр. Такое положение камеры уменьшает количество шумов и облегчает последующую работу.
Вся идея в том, чтобы скопировать и оцифровать ваше движение. Двигайтесь так, как хотите, чтоб выглядело это движение в игре, но на разумной скорости. Если сделаете это слишком быстро – можно снизить скорость в Python позже. Двигаться в замедленном режиме также не желательно.
Работа с видео кадрами для их последующего применения в Mod Tool
Мы сделаем кадры, которые затем будут ключевыми кадрами в Mod Tool , в последствии, в SMD и кадрами, появляющимися в OpenBRF.
Есть несколько способов. Первый: сделать снимки на равных интервалах (к примеру каждые 3 кадра ил 100милисекунд). Другой – просматривать видео и делать снимки, которые сочтете нужными. Этим методом – сделана анимация полумеча из видео приведенного ранее. Преимущество второго метода состоит в том, что Вы гарантировано получите важные фрагменты движения – например, пункт, в котором оружие находится в верхней или нижней точке.
Кроме того, автор рекомендовал бы сделать приблизительно 5 - 10 кадров в секунду. Колебание полумеча например было сделано с 7 кадрами, и соответственно 7 кадров сделано с каждого угла.
Если Вы сделаете с обоих углов, то Вы должны будете удостовериться, что зафиксировали те же самые фрагменты. Если Вы последовательно выполняли движение, то это не должно быть слишком трудным.
Для этого, запишите число ключевых кадров, для которого Вы получаете ссылку (1-ый, 2-ой, 3-ий … 10-ый, безотносительно), и его положение в видео (или в кадрах или во временной линии). Вы будете нуждаться в его положении в видео так, чтобы Вы могли задать правильные временные значения в SMD, таким образом Вы сможете анимировать движение по линии времени правильной длины в Mod Tool.
Автор будет использовать пример своего движения полумеча, чтобы описать это. Для первого кадра был сделан кадр непосредственно перед началом движения. Этот первый кадр будет основой для Вашего нападения, и первым кадром нападения непосредственно. В видео автора (после того, как он урезал лишнее), это было фактически 3-ьим кадром. Поэтому, чтобы получить надлежащие временные значения для всех ключевых кадров, понадобилось вычесть 2 из их номера в видео. Например, 4-й кадр анимации использованной в кадре получен из 16-го кадра видео. Поэтому временное значение в SMD для этого кадра было 14.
Так как числа интервала не определяют продолжительность анимации, Вы можете сделать точно ту же самую вещь с точками времени из видео вместо кадров. Если бы Ваш первый кадр анимации был на 500-й миллисекунде в видео, все, что Вы должны сделать, это вычесть 500 миллисекунд из всех последующих кадров. Тогда Вы вводите соответствующие значения в SMD как временные значения. Вы могли бы получить SMD с временными значениями в сотнях, с кадрами будет все в порядке, пока их относительные положения остаются теми же самыми как в видео (и в действительности). В конце концов, продолжительность анимации определена в Python.
Удостоверьтесь, что Ваши снимки для ключевых кадров соответствуют друг другу, если Вы берете их с обоих углов, как автор рекомендует. Приложите усилия, но без фанатизма). Они не будет соответствовать точно. Если соответствие не очень точное, только удостоверьтесь, что Вы выбирали один угол (автор рекомендует вид сбоку), по которому вы сработаете точно, и используете другой, чтобы помочь Вам выровнять.
Если Вы редактируете свои картинные ссылки (кроппинг и т.п.), удостоверьтесь, что они все имеют тот же самый размер без растяжения. Это не строго жизненно важно, но сделает вещи легче позже. Запишите их величину в пикселах.
Наконец, в Paint или Photoshop проставьте номера кадров по углам ваших кадров (как Вы может видеть на картинке сцены анимации), так, чтобы Вы знали, что есть что, когда Вы в Mod Tool. [Автор рекомендует отметить каждый кадр числом, которое будет его возможным временным значением в SMD.]
Поместите все свои пронумерованные картинные ссылки (наряду с видео) в известную папку.
Внедрение кадров в Mod Tool для сопоставления скелета сними
Теперь надо импортировать кадры, отмасштабировать и отпозиционировать их и начать анимировать.
Откройте в Mod Tool сцену, в которой есть рабочий скелет M&B. В левом окне, в опции "Get" выберите "Primitive", далее "Surface" в выпадающем меню, и нажмите "Grid" в меню, которое появляется. В окне измените “U” длину и “V” длину так, чтобы они были пропорциональны Вашему изображению. Например, изображения автора были 1024X576, таким образом, изменил “U” длину на 10.24, и “V” длина на 5.76. Затем, измените “Subdivisions” на 1 и на “U” и на “V”. Теперь закройте окно, и у Вас должен быть прямоугольник тех же самых пропорций, что и у Ваших картинок.
Теперь текстурируем. Выберите прямоугольник, и нажмите "Material" в панели в стороне (это находится под "Primitive", на который мы нажали прежде). Нажмите "Phong" в выпадающем меню меню. Вы увидите окно с цветными панелями и некоторыми другими опциями. Заметьте небольшую вилкообразную вещь справа от главного набора цветных панелей, и нажмите на нее. Нажмите "Image" в выпадающем меню. Окно появляется. Около основания есть опция “Texture Projection”. Нажмите "New" и нажмите “ Planar XZ” в выпадающем меню. Ничего не происходит! Потому что автор забыл сказать изменить штуку в верхнем правом углу с “Wireframe” на “Textured Decal”. Сделайте это, и сетка должна стать разноцветной. Теперь, в окне"Image" выберите "New"-“New from file …”. Теперь выберите свой первый кадр (или позу T, если Вы снимали это), и это должно появиться на сетке!
Теперь вращайте это и переместите так, чтобы это было в правильном месте относительно скелета. Удерживайте "Shift", во время вращения, чтобы оно двигалось равномерно и Вы могли осуществить хорошее 90-градусное вращение. Теперь нажмите “X”, чтобы вызвать масштабирующие топоры, и масштабируйте сетку пока ваше изображение не станет того же размера, что и скелет.
Теперь мы клонируем это и повторим процесс текстурирования. Продолжаем клонирование и текстуринг и для всех остальных наших изображений.
Выберите сетку и нажмите “Ctrl+D”, затем нажмите “V” и переведите назад или вперед. Клон сетки должен появиться. Странные вещи могут произойти с клонированием позже – клоны могут появиться в различных местах в сцене, автор понятия не имеет, почему, но Вы должны будете только переместить их. Как только у Вас есть новая сетка, только выберите ее и текстурируйте ее Вашей следующей картинкой.
Заключение и полезные советы
Осталось позиционировать скелет, чтобы соответствовал каждой картинке в соответствующего кадра на линии времени, кодируя (фиксируя) все при вращении и переводе, и сохраняясь почаще. Помните, что Вы можете только перевести живот – все другие кости должны вращаться.
Двигайте кадры ближе или дальше во время работы, и используете линии на сетке сцены, чтобы сразу видеть свою работу. Вы должны рассматривать любую конечность, над которой продолжаете работать по прямой линии, чтобы расположить ее должным образом – чтобы уменьшить эффекты перспективы. Это - то, почему Вы захотите придвинуться очень близко к скелету. В зависимости от того, как Вы устроили сцену, Вы можете также изменить вид от "User" к "Front" или "Right" и получить вид без эффектов перспективы. Автор не использует это, поскольку ему достаточно линий сетки, чтобы удостовериться, что объекты рассматриваются по прямой.
Если Вы сопоставите хорошо, Вы можете протянуть кадр медленно через скелет, и это будет выглядеть действительно страшно. Автор рекомендует делать это, чтобы масштабировать размер головы и положение – Вы можете вставить свое лицо в шлем персонажа, и это весело.
Также может быть полезным переключиться между “Wireframe” и “Textured Decal” так, чтобы Вы могли выбрать кости легко и затем видеть картину, чтобы сопоставлять их.
Коротко по анатомии. Попытайтесь представить, как движения действительно выглядят, когда Вы анимируете. Скелет работает в значительной степени как человек. Какие кости Вашего собственного скелета фактически перемещаются? Анатомически, если Вы только двигаете только в плечевом суставе Ваша рука может подняться на 90 градусов, как в позе T. Чтобы поднять Вашу руку высоко, Вы перемещаете свою ключицу также. Так, если бы мы поднимали руку персонажа высоко в сторону, мы применили бы вращение ключицы (чтобы поднять плечо) и затем вращали бы лопатку (чтобы поднять плечо).
Для другого примера думайте о глубокой боевой стойке. В ней бедра (кости бедра) фактически вращаются наружу. Так, анимируя ногу, надо вращать в бедре, затем согнуть в бедре и колене.
Помните об этих вещах, но не бойтесь нарушить анатомические правила, пока никто не может видеть, что Вы делаете это. Во многих анимациях автор двигал локоть, как будто у персонажа шарнир там, но никто не может указать различия между этим и верхнем вращением плеча (который автор не мог использовать, потому что меш искажал слишком много). Кроме того, в Mod Tool Вы будете часто вращать запястье или руку, даже при том, что, анатомически, большая часть этого вращения происходит в предплечье.
Анимация одноручного оружия ]]>]]>
Двуручное ]]>]]>
Древковое ]]>]]>
Лук ]]>]]>
Копье и щит ]]>http://www.youtube.com/watch?v=a-lZXQsv9ew]]>
"Полумеч" ]]>http://www.youtube.com/watch?v=O7RYS6_9k0E]]>
Сообщение отредактировал lekseus: 26 ноября 2011 - 18:38