Информатика и образование
  Мобильная версия сайта            
               
[Главная] [Новости]
[Статьи]
[Проекты]
[Ссылки]
[Автор]
               
    [Архив новостей]        
               
  [Форум] на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы  
       
  Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...]    
       
  [Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi]    
  [Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX]    
       
  Основы 3D-программирования DirectX8.1 в Delphi 6-7: теоретические и практические основы создания игр.    
       
  Анимация - анимирование и движение    
       
 

29.02.2008

Эти заметки написаны с целью лучшего уяснения работы с шейдерами, а также для внедрения использования анимации в имеющийся код.

   
       
  [Все уроки]    
       
 

За основу взят пример SkinnedMesh из DirectX SDK 8.1. В модифицированном исходном коде решаются следующие задачи:

- анимированная модель персонажа движется по модели земной поверхности.

Пример с исходным кодом (1,03 Mb)    
       
 

Не беря пока во внимание параллельно возникшие проблемы которые мы уже частично освятили рассмотрим решение поставленных ранее вопросов -

1) Каким образом внедрить в код примера другие модели (например, земную поверхность)?

2) Как использовать в коде примера камеру ?

3) И наконец, как перемещать и вращать анимированную модель в 3D-сцене, например чтобы анимированный персонаж перемещался по земной поверхности ?

   
       
 

Решение первого вопроса сводится к следующим пунктам -

1.1) Вынести код анимированной модели в отдельный класс, например, TAnimatedModel - смотри ПРИМЕР С ИСХОДНЫМ КОДОМ

1.2) В классе приложения объявить поля для двух моделей - анимированный меш и земная поверхность и произвести все необходимые действия по загрузке и подготовке (см. модуль SkinnedMeshUnit.pas в ПРИМЕРЕ С ИСХОДНЫМ КОДОМ)

Главные изменения по сравнению с оригинальным примером SkinnedMesh -

см. метод function CMyD3DApplication.Render;

- m_ArcBall теперь используется для вращения земной поверхности;

- вместе с этим происходит вращение анимированной модели;

- если понадобится перемещение объектов в пространстве, то для камеры (или CD3DArcBall как в нашем случае) нужно создать собственную матрицу WorldMatrix, а для всех моделей - свои матрицы;

- матрицы World и View перемножаются, т.к. в коде шейдера анимированной модели используется комбинированная World-View матрица;

- анимация и масштабирование анимированной модели происходит внутри function TAnimatedModel.FrameMove;

   
       
 

Дополнительные вопросы которые могут возникнуть -

- Как сделать анимированную модель нужного масштаба - смотри исходный код примера;

- Как правильно экспортировать анимированную модель из 3Ds Max;

   
       
  2) Как использовать в коде примера камеру ? посмотрите урок - Отображение моделей и работа с камерой. Смыслом указанного урока является создание камеры объединяющей возможности CD3DArcBall и CD3DCamera, что дает лучше вникнуть в смысл работы камеры вообще и решить поставленную задачу в частности.    
       
  3) О том, как перемещать и вращать анимированные и другие модели в 3D-сцене Вы можете узнать заглянув в исходный код примера.    
       
    Пример с исходным кодом (1,03 Mb)   Пример с исходным кодом (1,03 Mb)    
       
  Обратите внимание! Для нормальной компиляции Вам потребуется исходный код библиотеки Delphi DirectX (т. н. папка с ОБЩИМ КОДОМ) - скачать ее можно здесь.    
       
  Ярким примером решения вопросов 2 и 3 является реализация 1 игровой сцены в игре Нечто: Необъяснимое    
       
 

Что не реализовано в коде примера:

- персонаж не следует точно по рельефу земной поверхности, а плывет как будто в воздухе;

- попытка открыть модель через пункт меню Open приводит к ошибке.

Данные особенности не являются целью данного урока, поэтому в нём не реализованы!

   
       
  [Назад] [Все уроки]    
       
       
 

Обновления и новости о развитии Delphi DirectX проекта
смотри на сайтах:

http://www.megainformaticsite.pochta.ru

http://www.megainformatic.boom.ru

http://www.megainformatic.narod.ru

 

   
       
     
 

по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме

 
     
   Обмен ссылками  
     
     
             
 
 
         
(с) МЕГА ИНФОРМАТИК 2006-2009
Hosted by uCoz