[Главная] [Новости] [Статьи] [Игры] [Проекты] | [Автор] | |||
Основы 3D-программирования DirectX8.1 в Delphi 6-7: теоретические и практические основы создания игр. | ||||
Создание
анимации вращающихся колес автомобиля |
||||
Продолжаем серию уроков, посвященных разработке Delphi DirectX игры. В данном уроке рассказывается об особенностях создания анимации простыми трансформациями объектов пригодной для экспорта в DirectX8 и DirectX9-приложение. |
||||
[Все уроки] | ||||
При разработке проекта Нечто: Необъяснимое возникла необходимость в создании анимации простыми трансформациями объектов. | ||||
Мы будем выполнять данную работу на примере 3Ds Max 7. Но если вы будете использовать 8 или 9 версию, то всё описанное также возможно применить к этим версиям. | ||||
Постановка задачи: была создана модель авто показанная на рисунке. Она состоит из кузова и 4 колес представленных отдельными мешами. Требуется создать анимацию вращающихся колес. | ||||
Первое что приходит в голову, это просто взять объекты колес и вращать их во времени вокруг своей оси. Казалось бы - всё просто. Но оказывается, что при этом, поскольку модели колес созданы на основе цилиндров (примитив Cylinder) повернутых на 90 градусов вокруг оси Y, то попытка вращать полученные колеса вокруг оси X приводит к сложному повороту сочетающему изменение первоначальной ориентации. Иными словами нужную трансформацию создать не удается. Кроме того, если Вы попробуете экспортировать даже статичную модель данного авто в таком виде - кузов и 4 колеса, то колеса почему-то окажутся совсем не на своих местах. Это касается как экспорта экспортером DXExport DX9, так и PandaDX для 3Ds Max 7. Кроме того, в приложении DX8 анимацию возможно корректно использовать только при экспорте PandaDX! |
||||
Что же делать? Решение оказывается тривиально простым если использовать так называемые Dummy-объекты и построить из них иерархию. Что такое Dummy? Это пустой не отрисовываемый бокс, который может играть роль центра трансформаций, а также служить связующим звеном в иерархии объектов. В 3ds Max 7 данный объект находится в панели Create в группе Helpers - |
||||
Если Вы внимательно посмотрите на рисунок авто приведенный в начале данной статьи, то как раз увидите эти боксы. Они расположены и около кузова - 1 большой и около каждого из колес. | ||||
Каким образом применить полученный объект для решения поставленной задачи? Нужно создать 1 большой бокс из Dummy-объекта и разместить его по центру кузова авто - создать объект Dummy, отмасштабировать до нужного размера, выровнять по центру относительно кузова (Align). |
||||
Далее нужно создать меньший Dummy и выровнять относительно одного из колес. Теперь нужно осуществить привязку (установить иерархическую связь) меша данного колеса к данному малому Dummy - wheel_Dummy. Это выполняется выбором объекта колеса (wheel), нажатием на кнопку Select And Link и протаскиванием пунктирной линии связи до родительского объекта wheel_Dummy пока он не станет выделен белым. После этого wheel_Dummy становится родительским объектом для wheel и вращая wheel_Dummy вокруг оси X можно получить требуемое вращение колеса. После того как Вы это сделаете - т.е. запишете анимацию вращения данного wheel_Dummy на протяжение требуемого количества кадров, Вам остается только клонировать данный wheel_Dummy еще 3 раза, разместить копии относительно оставшихся 3-х колес и осуществить привязку этих колес к соответствующим им Dummy-объектам. В результате все 4 колеса будут вращаться одинаково. |
||||
Теперь Вам остается только выполнить привязку кузова авто к большому Dummy-объекту - base_Dummy, и к нему же привязать Dummy-объекты для всех 4-х колес. В результате у Вас получится следующая иерархия объектов - GraphEditors > New Schematic View |
||||
А экспорт посредством PandaDXExporter даст требуемый результат. | ||||
Если у Вас возникли вопросы касающиеся деталей выполнения описанных действий, то советую Вам сначала обратиться к статьям - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) |
||||
[Назад] [Все уроки] | ||||
[Главная] [Новости] [Статьи] [Игры] | ||||
(c) Мега Информатик 2006-2007 |