Во-вторых, нужно убедиться, что в последнем кадре анимации присутствуют ключи, которые полностью закрывают отрезок движения, то есть ключи для всех треков. Тогда при соединении анимации не будут влиять друг на друга. В загруженной анимации эффекта отдачи Betty скопируйте набор ключевых кадров из первого кадра в последний (рис. 9.3).
В-третьих, - и это последнее, что нужно сделать, - добавьте дополнительный столбец ключей в конец отрезка движения. Когда отрезок движения окажется в редакторе Motion Flow Editor, последний кадр отрезка, если после него добавить другой отрезок движения, будет «съеден». Так происходит, даже если переходы не определены. В 3ds max и character studio предполагается, что последний кадр либо дублирует первый (для циклов), либо используется при переходе. Выделите последний столбец ключей и перетащите его в соседний кадр, чтобы создать «подушку» из ключевых кадров (рис. 9.4).
Заметьте, что отрезки движений не обязательно должны быть одной анимацией. Полученный ранее в результате ручного создания ключевых кадров анимаций бездействия, стрельбы и плавания Betty файл был достаточно большим. Он отлично подходит на роль первого отрезка движения, так как включает в себя кадр 0 в исходной позе. В отрезок движения может входить несколько движений; существует веская причина для того, чтобы назвать этот файл отрезков Clipl: в нем были созданы временные теги, начинающиеся с нулевого кадра.
Если вас раздражает проблема отсечения изображения по границам и вы умеете редактировать HTML-страницу, сделайте следующее. Откройте папку, в которую был помещен экспортер, и найдите файл WildTangent.html. С помощью программы FrontPage, Notepad (Блокнот) или любого другого редактора HTML откройте файл и перейдите к строке 339. Измените строку
camera.setClipping( 10000*globalPositionIncrement,
2*globalPositionIncrement); на
camera.setClipping( 10000*globalPositionIncrement, 4.0);
Точность Z-буфера увеличится, но если увеличение слишком велико, то будут отсечены передние части модели, поэтому немного измените значение. Экспортер старается установить хорошее значение по умолчанию - значение, которое подойдет для большинства моделей, но в зависимости от размеров модели эти числа можно увеличить и получить лучший характер видимости вдоль оси Z. Сохраните файл и держите его под рукой, чтобы заменять им исходный файл WildTangent.html, который записывается каждый раз при экспорте актера.
13. Закройте окно Motion Flow Graph, щелкните по имени отрезка в списке под названием сценария справа - оно будет выделено (синим).
14. Щелкните по кнопке Edit Transition (Редактировать переход).
15. Отредактируйте параметры перехода (рис. 9.12).
Определите сценарий потока движений и настройте переходы между отрезками
Красная фигура, появляющаяся, когда открывается окно параметров перехода, изображает целевое движение. Она важна только при создании перехода к следующему отрезку движения. Желтая фигура, обозначающая исходный отрезок анимации, позволяет при перетаскивании ползунка в разные позиции на шкале времени сравнить относительные положения персонажа во время перехода.
Значение, которое нужно ввести в поле Start Frame в разделе Source Clip (Исходный отрезок), легко определить. Введите в это поле число, которое находится справа в текстовом поле прямо над полем Start Frame. Изменив два значения, щелкните по кнопке Next Transition in Script (Следующий переход в сценарии) - рис. 9.14, - перейдите к следующему отрезку анимации и измените значения в полях Length и Start Frame соответствующим образом.
Пройдите по всем переходам сценария, нажимая на кнопку Next Transition in Script
Процесс разработки персонажей игр в реальном времени не может обойтись без экспорта в том или ином виде. В Q3A персонажи экспортировались в ASCII-формат 3ds max (под названием ASE), затем программисты взмахивали своими волшебными математическими палочками - и персонажи появлялись в игре. В файле конфигурации определялась скорость смены кадров для анимации, а также точка начала и конца анимации. Такой подход, использующий группу файлов, вполне приемлем, но он определенно предназначен не для художника.
Однако не все компании отказываются от подхода визуальных инструментов и заставляют художника (трепещите!) вводить массивы данных в процессе экспорта. Технология Web Driver компании WildTangent и набор инструментов RenderWare фирмы Criterion Software представляют новое поколение графически ориентированных экспортеров, в которых художественная разработка упрощена. Чтобы проиллюстрировать один пример экспорта, в следующем разделе подробно рассматривается использование экспортера для 3ds max 4 компании WildTangent1. На компьютер придется установить ряд программ WildTangent, поэтому, если вы хотите пропустить данный раздел, переходите сразу к заключению.
На этом этапе пригодятся все временные теги. Щелкните по полю Add Time Tag и отметьте кадры, в которых имеет место анимация Swim Forward (кадры 680-720) - рис. 9.29.
Откройте свиток Actor Motions (Движения актера) и щелкните по кнопке New Motion (Новое движение). В поле имени введите Swim Forward. Нажмите клавишу Tab или дважды щелкните по полю Start Frame и введите значение 680. В поле End Frame введите значение 720 (рис. 9.30).
Еще раз нажмите кнопку Export Actor и снова откройте страницу просмотра (рис. 9.31).
Обычно при вращении отрезков движения в окне редактирования перехода правильное значение угла определяется экспериментально.
При вводе значения в поле Angle персонаж поворачивается соответствующим образом (рис. 9.17).
В следующем переходе протащите ползунок по шкале времени, просматривая анимацию в окне проекции Front. Голова Betty не смотрит вперед, но перемещение ее ступней и туловища таково, что поворота на -10° будет достаточно, чтобы выровнять ее нужным образом (рис. 9.21).
Удерживая нажатой левую кнопку мыши, перетащите курсор в окне программы просмотра, поворачивая камеру вокруг экспортированной Betty. Чтобы перетащить сцену, удерживайте нажатой правую кнопку мыши, а чтобы увеличить или уменьшить масштаб, удерживайте обе кнопки мыши, перемещая указатель вперед и назад. Чтобы переключаться между серым, белым и черным фоном, нажимайте клавишу В.
У последнего отрезка движения нет опций настройки перехода, потому что он последний и дальше переходить некуда. Переходы изменены -и анимацию можно сохранять и перезагружать на новый объект Biped. В свитке Biped щелкните по кнопке Save File
После того как сценарий определен, а движения внесены, нужно устранить резкие переходы между отрезками движений. Закройте окно Motion Flow Graph и вызовите окно параметров перехода для первого элемента сценария (шаги 13-15 в списке, приведенном ранее). В поле Length (Длина) введите длину перехода 0 и измените значение времени начала для следующего отрезка в поле Start Frame на 731 (рис. 9.13).
Вот некоторые изменения, которые нужно внести в новый файл формата BIP: переместите все движения персонажа (например, отрезок betty_recovery), добавьте буфер между анимациями и временные теги. Завершив работу над набором анимаций, можно переходить к экспорту.
Последний отрезок движения состоит из нескольких анимаций, как и betty_clip01. Перейдите в кадр 1082, где персонаж в окне проекции Front смотрит куда-то вперед. Видно, что движение нужно повернуть еще примерно на-10°, выровняв отрезок правильно (рис. 9.22).
Скопировав ключи в конец отрезка, сохраните файл под именем betty_clip01.bip. Теперь, когда вы знаете, как подготавливать отрезки, можно начать создавать набор анимаций с помощью редактора Motion Flow Editor.
Прежде чем переносить отрезок движения в Motion Flow Editor, нужно удостовериться в наличии трех условий, при необходимости внеся исправления. Прежде всего, первый столбец ключей должен быть в кадре 0. Даже если по какой-то причине в кадрах, например, с 0 по 50 нет анимации, первый столбец ключей, определенных для всех звеньев Biped при просмотре в окне Track View, должен находиться в кадре 0. Иначе, когда будет включен режим Motion Flow, переходы и длина отрезка анимации могут быть неправильными.
Загрузите файл Betty15.max (рис. 9.1).
Вызовите окно Track View - и вы увидите, что ключи сдвинуты вправо, они не начинаются в кадре 0. Такое иногда случается при сохранении сегмента анимации, а не всего файла Biped (особенно в режиме Motion Flow). Выделите все ключи и перетащите их так, чтобы первый столбец оказался в кадре 0 (рис. 9.2).
Загрузите файл Betty16.max и затем выделите объекты сетки Betty (рис. 9.25).
После устранения переходов, которые происходят между анимациями движения, нужно проверить ориентацию отрезков. Каждый последующий отрезок начинается в конце предыдущего, а вращение объекта СОМ относительно - оно происходит в зависимости от положения персонажа. Это значит, что иногда нужно повернуть отрезок анимации с помощью того же метода, который использовался при повороте всего движения. Перейдите в кадр 731 и посмотрите на Betty в окнах проекции Тор и Front (рис. 9.15).
6. Щелкните правой кнопкой мыши по пустым полям отрезков движений.
7. Укажите путь к нужным отрезкам движения.
8. В каждое поле отрезка загрузите файл движения. Загрузите файлы betty_*.bip из папки в следующем порядке (рис. 9.9):
Исходные параметры камеры обеспечивают отсечение изображения, поэтому издалека Betty выглядит немного странно. Однако в увеличенном виде она выглядит хорошо. По умолчанию только что созданный файл хранится в папке Documents and Settings\[Имя пользователя]\Аррlication Data\WildTangent\Generated Files\Web.. Закройте окно программы просмотра, вернитесь в 3ds max и в свитке Actor Export щелкните по кнопке Preferences (Настройки). Когда появится окно Export Preferences (Настройки экспорта), щелкните по вкладке Web-ready Format (Формат, готовый для Web), а затем - по адресной строке, расположенной под опцией Web-Ready Output (Выход для Web). Введите путь C:\artgc\export (вместо C:\ можно указать любой диск) - рис. 9.28.
Редактор Motion Flow Editor предназначен для создания переходов между движениями и изменения направления файлов движения, если это необходимо. Он идеально подходит для соединения отдельных созданных вами анимаций, завершая аналогию с анимационной папкой. В режиме Motion Flow есть много полезных функций, но в этой главе рассматривается только сшивание (stitching) набора анимаций.
12. Щелкните по каждому полю отрезка в том порядке, в котором они должны быть соединены друг с другом. Порядок для отрезков Betty таков (рис. 9.11):
betty_clip01; bettyjbigshot; betty_kick; betty_death; betty_recovery; bettyjog; betty_backpcdal; betty_specials.
Расположите поля отрезков движений так, чтобы их было проще связывать друг с другом. Обычно больше всего подходит ступенчатая конфигурация, но можно применить и любую другую придуманную вами систему. Чтобы переместить отрезки, сначала нужно нажать кнопку Move Clip (Переместить отрезок) - рис. 9.8.
Щелкните по кнопке New Actor (Новый актер) в свитке Actor Geometry (Геометрия актера). По умолчанию в качестве имени актеру присваивается название одного из выделенных объектов. Выделите появившееся в поле имя и измените его на Betty (рис. 9.26).
Щелкните в любом месте окна проекции, чтобы сохранить измененное имя, и в свитке Actor Export (Экспорт актера) нажмите кнопку Export Actor (Экспортировать актера). Приложение начнет экспортировать актера в особую программу просмотра, а в нижней части экрана появится синяя полоса состояния. По окончании экспорта в нижней части экрана на панели задач Windows вы увидите ярлык новой программы. Щелкните по нему, чтобы вызвать окно программы просмотра (рис. 9.27).
Чтобы соединить все анимации, нужно создать сценарий потока движений, определив тем самым порядок, в котором связываются анимации, и всевозможные переходы или изменения ориентации, которые нужно осуществить. Этот сценарий всегда создается одинаково, поэтому в файле Betty 12.max выполните следующие шаги:
1. Выделите объект Biped.
2. Щелкните по кнопке Motion Flow - она станет активной (фиолетовой) - рис. 9.6.
3. Щелкните по кнопке Show Graph - она станет активной.
4. В окне Motion Flow Graph: Betty активизируйте кнопку Create Clip.
5. Создайте столько полей для отрезков, сколько нужно (для Betty создайте восемь) - рис. 9.7.
Чтобы поместить в игру такого персонажа, как Betty, нужно ввести все его анимации в список движений перед тем, как экспортировать персонаж. Помимо этого есть и другие возможности для настройки, например, выдвинутых костей (promoted bones) и создаваемых материалов WildTangent. Изучите работу экспортера WildTangent, посетите сайт www.wildtangent.com. где представлены более подробные руководства.
Экспортер WildTangent производит экспорт на Web-страницу, поэтому вы можете создать одну или несколько моделей, анимировать их, экспортировать и разделять их со всеми, кто может и хочет скачать WildTangent Web Driver.
Когда появится предложение создать папку, нажмите кнопку ОК. Теперь каждый раз при экспорте актера в этой конкретной сцене 3ds max его файл окажется в определенной выше папке.
Очевидно, что параметры в окне переходов влияют на следующий отрезок движения в сценарии. Однако не забывайте, что все отрезки движений, которые в сценарии следуют за первым, повернуты на 40°, потому что ориентация каждого отрезка определяется по отношению к предыдущему.
Теперь нужно проверить другие отрезки движения и убедиться, что они ориентированы правильно. Чтобы перейти к следующему отрезку движения, не закрывая окно параметров перехода, снова щелкните по кнопке Next Transition in Script
Вернитесь в окно параметров перехода для первого отрезка движения в сценарии и в поле Angle введите значение 40 (рис. 9.16).
betty_clip01; betty_bigshot; betty_kick; betty_death; betty_recovery; bettyjog; bettyjbackpedal; betty_specials.
9. Когда все движения будут загружены, обратите внимание на раздел Scripts (Сценарии).
10. Активизируйте кнопку Define Script, щелкнув по ней.
11. Выберите пункт Create new script (Создать новый сценарий) и нажмите кнопку ОК (рис. 9.10).