Мобильная версия сайта | |||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
||||
[Архив новостей] | |||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | ||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [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) Каким образом внедрить в код примера другие модели (например, земную поверхность)? 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) | ||||||||
Обратите внимание! Для нормальной компиляции Вам потребуется исходный код библиотеки 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 | |||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |