Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #64, МАРТ 2006 г.

dead can dance

ФЛЕНОВ МИХАИЛ AKA HORRIFIC

Спецвыпуск: Хакер, номер #064, стр. 064-052-2


Сейчас отвлекусь от темы, чтобы дать один совет: никогда не двигай кости для создания анимации. Все кости только вращаются относительно начала (точки крепления с главной или вышестоящей по иерархии костью). Например, кость руки крепится к плечу, и чтобы рука была протянута вперед, происходит вращение кости относительно плеча. Притом все остальные части руки (локоть, кисть, пальцы) движутся автоматически — перемещать их не нужно, если только ты не хочешь, чтобы от туловища оторвалась рука или нога.

Попробуй подвигать пальцем — и наглядно убедишься, что любые движения пальца — это вращение относительно кисти. Если попытаться двинуть по прямой, то можно выбить палец из сустава. Конечно, встречаются индивидуумы с развитыми суставами, которые производят небольшие прямолинейные движения, но они небольшие (в пределах сустава) и это уже к Лозовскому на прием. Пусть я не врач, мне кажется, что это неизлечимо, в любом случае ненормально и требует обращения в больницу.

экспорт сетки

Создав сетку персонажа, скелет и анимацию, сохрани их для последующей загрузки из собственной программы. Вот тут возникает проблема выбора: как сохранить? Формат .max позволяет хранить всю необходимую информацию, но он слишком сложный для использования в собственных программах. Можно использовать старый формат .3ds, но возникает проблема с сохранением информации о костях и самой скелетной анимации. Эти проблемы можно обойти, но тогда натолкнешься на большие проблемы. Придется писать собственные анализаторы и загрузки данных, потом создавать классы или функции для поддержки всего загруженного в программе.

Зачем выдумывать проблемы себе, когда можно использовать формат файла .x, который разработан Microsoft и является открытым, универсальным и легко расширяемым? Расширять возможности файла нам не понадобится, потому что все необходимое для хранения сетки и костей в нем уже есть. Сама 3DS Max не может сохранять или экспортировать данные в формат .x, но можно установить специальный plug-in, разработанный самой Microsoft. Этот plug-in можно найти в составе DX SDK, причем в исходных кодах. Нам остается только скомпилировать его и установить.

.x-файл обладает еще одним преимуществом: в составе функций Direct3D есть возможность загрузить сетку с помощью одной-единственной функции и с помощью еще одной — скелет. Корпорация Microsoft здесь очень хорошо позаботилась о нас как о программистах. Однако о функциях читай чуть позже. Сейчас еще немного мысленно пощупаем скелет.

внутреннее пространство

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

Назад на стр. 064-052-1  Содержание  Вперед на стр. 064-052-3