Программирование 3D-игр в DirectX на Delphi
 
         
    [Главная] [Новости] [Статьи] [Игры] [Проекты] [Автор]  
         
  Основы 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    
Hosted by uCoz