Программирование графики с использованием Direct3D




Глава 7


    Глава 7. Фреймы и анимация
    Иерархии фреймов Ключевые кадры Предметом рассмотрения этой главы является анимация. В частности, нас будут интересовать методы анимации, поддерживаемые Direct3D. Как вы увидите, Direct3D предоста...
    Иерархии фреймов
    Все сцены Direct3D создаются с помощью иерархий фреймов. Приложения, которые мы рассмотрели до сих пор, использовали простую иерархию, состоящую из единственного корневого фрейма и нескольких доче...
    Приложение Molecule
    Приложение Molecule использует иерархию фреймов для моделирования структуры гипотетической молекулы. Оно конструирует иерархию фреймов и присоединяет к каждому фрейму в иерархии сферическую сетку....
    Класс MoleculeWin
    Основная функциональность приложения Molecule сосредоточена в классе MoleculeWin: class MoleculeWin : public RMWin { public: MoleculeWin(); BOOL CreateScene(); protected: //{{AFX_MSG(MoleculeWin)...
    Функция MoleculeWin::CreateScene()
    Начальная сцена приложения Molecule создается в функции CreateScene(). Код этой функции представлен в листинге7.1. Листинг 7.1. Функция MoleculeWin::CreateScene() BOOL MoleculeWin::CreateScene() {...
    Функция MoleculeWin::CreateHierarchy()
    Функция CreateHierarchy() отвечает за создание иерархии фреймов. Код этой функции выглядит следующим образом: BOOL MoleculeWin::CreateHierarchy() { static LPDIRECT3DRMFRAME mainframe; if (mainfram...
    Функция MoleculeWin::CreateChildren()
    Функция CreateChildren() назначает атрибуты вращения, присоединяет сетки и создает дочерние фреймы. BOOL MoleculeWin::CreateChildren(LPDIRECT3DRMFRAME frame, int depth) { LPDIRECT3DRMFRAME parent;...
    Функции управления глубиной иерархии
    Меню Depth приложения Molecule предлагает шесть различных значений глубины. Для реализации каждого пункта меню применяются две функции. Функции для первого пункта меню (устанавливающего глубину ие...
    Управление количеством дочерних фреймов
    Меню Children позволяет выбрать одно из четырех возможных значений, находящихся в диапазоне от одного до четырех. Подобно меню Depth для реализации каждого из пунктов меню применяются две функции....
    Ключевые кадры
    Ключевые кадры ( key-framing ) это метод анимации, в котором анимационная последовательность задается в терминах ключей. Каждый ключ представляет позицию и ориентацию, которые должен занять заданн...
    Приложение Rocket
    В приложении Rocket ключевые кадры используются для анимации ракеты. Анимационная последовательность определена с помощью нескольких ключевых кадров, а оставшаяся часть последовательности вычисляе...
    Класс RocketWin
    Функциональность приложения Rocket сосредоточена в классе RocketWin: class RocketWin : public RMWin { public: RocketWin(); BOOL CreateScene(); protected: //{{AFX_MSG(RocketWin) afx_msg void OnRend...
    Функция RocketWin::CreateScene()
    Код функции CreateScene() приложения Rocket приведен в листинге7.2. Листинг 7.2. Функция RocketWin::CreateScene() BOOL RocketWin::CreateScene() { //-------- СЕТКА ---------- D3DRMLOADRESOURCE resi...
    Функция RocketWin::UpdateScene()
    Функция обратного вызова UpdateScene() отвечает за обновление анимационной последовательности. Ее определение выглядит следующим образом: void RocketWin::UpdateScene(LPDIRECT3DRMFRAME, void* p, D3...
    Функции меню Animation в классе RocketWin
    Меню Animation приложения Rocket предоставляет две команды: Linear и Spline . Для реализации каждой из этих команд применяется две функции. Ниже приведен код всех четырех функций, необходимых для...
    Функции управления скоростью анимации
    Приложение Rocket предоставляет меню Speed , позволяющее выбрать одну из трех команд для изменения скорости анимации: Fast , Medium и Slow . Ниже приведены две функции, которые используются для ре...
    Еще об анимации
    Как я уже упоминал в начале главы, анимация очень обширная тема. Мы закончим эту главу изучением еще одного демонстрационного приложения. Приложение Target, в отличие от других приложений, рассмат...
    Приложение Target
    Приложение Target создает сцену, в которой группа ракет или реактивных снарядов следит за целью. Движение цели определяется анимационной последовательностью, подобной той, которая использовалась д...
    Класс TargetWin
    Функциональность приложения Target реализована в классе TargetWin: class TargetWin : public RMWin { public: TargetWin(); BOOL CreateScene(); protected: //{{AFX_MSG(TargetWin) afx_msg void OnRender...
    Функция TargetWin::CreateScene()
    Код функции CreateScene() приложения Target приведен в листинге7.3. Листинг 7.3. Функция TargetWin::CreateScene() BOOL TargetWin::CreateScene() { // ------- СЕТКА ЦЕЛИ -------- D3DRMLOADRESOURCE r...
    Функция TargetWin::MoveTarget()
    Функция обратного вызова MoveTarget() обновляет анимационную последовательность один раз при каждом системном обновлении. Код функции выглядит так: void TargetWin::MoveTarget(LPDIRECT3DRMFRAME, vo...
    Функция TargetWin::OrientFrame()
    Функция обратного вызова OrientFrame() используется для изменения ориентации фреймов ракет в соответствии с движением цели. Эта работа совершается функцией LookAt() интерфейса Direct3DRMFrame, кот...
    Заключение
    Данная глава познакомила вас со способами анимации, поддерживаемыми Direct3D. Демонстрационные приложения были сделаны настолько простыми, насколько это возможно (но не настолько, чтобы стать совс...









Начало        




Книжный магазин