- •Введение
- •Глава 1. Подготовка к изучению книги
- •Установка DirectX SDK
- •Выбор отладочных или рабочих версий библиотек
- •Настройка вашего компилятора
- •Установка директорий DirectX SDK
- •Привязывание к библиотекам DirectX
- •Установка используемого по умолчанию состояния символа
- •Использование вспомогательного кода книги
- •Использование вспомогательных объектов
- •Проверка вспомогательных функций
- •Двигаясь дальше по книге
- •Глава 2. Синхронизация анимации и движения
- •Использование движения, синхронизированного по времени
- •Считывание времени в Windows
- •Анимирование с использованием временных меток
- •Перемещение, синхронизированное со временем
- •Движение вдоль траекторий
- •Создание анализатора маршрутов .X файла
- •Создание внутриигровых кинематографических последовательностей
- •Посмотрите демонстрационные программы
- •TimedAnim
- •TimedMovement
- •Route
- •Cinematic
- •Глава 3. Использование формата файла .X
- •Работа с .X шаблонами и объектами данных
- •Определение шаблонов
- •Работа со стандартными шаблонами DirectX
- •Открытие .X файла
- •Перечисление объектов данных
- •Получение данных объекта
- •Создание класса .X анализатора
- •Загрузка мешей с использованием D3DX
- •Загрузка мешей, используя анализатор .X
- •Загрузка скелетных мешей
- •Загрузка анимации из .X
- •Загрузка специализированных данных из .X
- •Посмотрите демонстрационные программы
- •ParseFrame
- •Глава 4. Работа со скелетной анимацией
- •Начало скелетной анимации
- •Использование структур скелетов и иерархий костей
- •Использование скелетной структуры и скелетного меша
- •Загрузка иерархий из .X
- •Изменение положения костей
- •Обновление иерархии
- •Работа со скелетными мешами
- •Загрузка скелетных мешей из .X
- •Создание контейнера вторичного меша
- •Сопоставление костей фреймам
- •Обновление скелетного меша
- •Визуализация скелетных мешей
- •Глава 5. Использование скелетной анимации, основанной на ключевых кадрах
- •Использование наборов скелетных анимаций, основанных на ключевых кадрах
- •Использование ключей при анимации
- •Работа с четырьмя типами ключей
- •Считывание данных анимации из .X файлов
- •Прикрепление анимации к костям
- •Обновление анимации
- •Посмотрите демонстрационные программы
- •Глава 6. Комбинирование скелетных анимаций
- •Комбинирование скелетных анимаций
- •Соединение преобразований
- •Улучшение объектов скелетной анимации
- •Посмотрите демонстрационные программы
- •Глава 7. Создание кукольной анимации
- •Работа с физикой твердого тела
- •Создание твердого тела
- •Расположение и ориентирование твердых тел
- •Обработка движения твердых тел
- •Использование сил для создания движения
- •Соединение твердых тел с помощью пружин
- •Обеспечение обнаружения столкновений и ответной реакции
- •Создание систем кукольной анимации
- •Определение состояния твердого тела
- •Хранение костей
- •Создание класса управления куклой
- •Создание данных костей
- •Вычисление ограничивающего параллелепипеда кости
- •Установка сил
- •Объединение костей
- •Обработка столкновений
- •Восстановление соединений костей
- •Перестроение иерархии
- •Посмотрите демонстрационные программы
- •Глава 8. Работа с морфирующей анимацией
- •Морфинг в действии
- •Определение исходного и целевого меша
- •Морфинг мешей
- •Создание морфированного меша при помощи обработки
- •Визуализация морфированных мешей
- •Расчленение наборов
- •Создание морфирующего вершинного шейдера
- •Посмотрите демонстрационные программы
- •Глава 9. Использование морфирующей анимации, основанной на ключевых кадрах
- •Использование наборов морфируемой анимации
- •Создание шаблонов .X для морфируемой анимации
- •Загрузка данных морфируемой анимации
- •Визуализации морфированного меша
- •Получение данных морфируемого меша из альтернативных источников
- •Посмотрите демонстрационные программы
- •Глава 10. Комбинирование морфированных анимаций
- •Комбинирование морфированных анимаций
- •Использование базового меша в комбинированных морфированных анимациях
- •Вычисление разностей
- •Комбинирование разностей
- •Создание вершинных шейдеров комбинированного морфирования
- •Использование вершинного шейдера морфируемого комбинирования
- •Посмотрите демонстрационные программы
- •Глава 11. Морфируемая лицевая анимация
- •Основы лицевой анимации
- •Использование комбинированного морфирования
- •Использования фонем для речи
- •Создание лицевых мешей
- •Создание базового меша
- •Создание выражений лица
- •Создание мешей визем
- •Создание анимационных последовательностей
- •Создание последовательностей фонем
- •Использование анализатора файлов .X для последовательностей
- •Проигрывание лицевых последовательностей со звуком
- •Использование DirectShow для звука
- •Синхронизация анимации со звуком
- •Зацикливание воспроизведения звуков
- •Посмотрите демонстрационные программы
- •Глава 12. Использование частиц в анимации
- •Работа с частицами
- •Основы
- •Рисование частиц с помощью квадратных полигонов
- •Работа с точечными спрайтами
- •Улучшения визуализации частиц при помощи вершинных шейдеров
- •Оживление частиц
- •Передвижение частиц при помощи скорости
- •Использование интеллекта при обработке
- •Создание и уничтожение частиц
- •Управление частицами с помощью класса
- •Использование излучателей в проектах
- •Создание движков частиц в вершинных шейдерах
- •Посмотрите демонстрационные программы
- •Глава 13. Имитирование одежды и анимация мешей мягких тел
- •Имитация одежды в ваших проектах
- •Получение данных одежды из мешей
- •Приложение сил для создания движения
- •Воссоздание и визуализация меша одежды
- •Восстановление исходного меша
- •Добавление дополнительных пружин
- •Загрузка данных масс и пружин из .X файла
- •Создание анализатора .X данных одежды
- •Работа с обнаружением столкновений и реакцией на них
- •Определение объектов столкновений
- •Обнаружение и реакция на столкновения
- •Создание класса меша одежды
- •Использование мешей мягких тел
- •Восстановление мешей мягких тел
- •Посмотрите демонстрационные программы
- •Глава 14. Использование анимированных текстур
- •Использование анимации текстур в ваших проектах
- •Работа с преобразованиями текстур
- •Создание преобразования текстур
- •Установка матриц преобразования текстуры
- •Использование преобразования текстур в проектах
- •Использование файлов видео в качестве текстур
- •Импорт видео при помощи DirectShow
- •Создание специализированного фильтра
- •Работа со специализированным фильтром
- •Создание менеджера анимированных текстур
- •Окончание современной анимации
- •Веб-сайты
- •Рекомендуемые книги
- •DirectX 9.0 SDK
- •GoldWave Demo
- •Paint Shop Pro Trial Version
- •TrueSpace Demo
- •Microsoft Agent and LISET
- •Предметный указатель
Глава 12
Использование частиц в анимации
Яркий взрыв, клочья травы, валящиеся деревья, клубы дыма, кричащие пешеходы - что они могут иметь общего? Факт того, что вы можете нарисовать все это, используя частицы, вот что! Частицы являются основным специальным эффектом игр, позволяя отображать множество вещей, начиная от капель дождя и заканчивая сверкающими взрывами разлетевшейся шрапнели. Применяя небольшие ноу-хау и помощь этой главы, вы можете использовать эти простые маленькие частицы для существенного улучшения внешнего вида игры!
В этой главе вы научитесь:
Рисовать частицы, используя три различные технологии;
•Передвигать частицы с использованием скорости;
•Создавать классы, управляющие частицами, в вашей игре.
Работа с частицами
Сначала о главном - что такое частицы? Частица является простым графическим объектом, используемым в качестве средства улучшения внешнего вида. Обычно частицы используются для отображения небольших графических эффектов, таких как огонь, дым, небольшие искрящиеся огоньки, оставляемые за собой магической ракетой (см. рис. 12.1). Конечно же, ваша игра может работать и без частиц, но зато их присутствие делает ее намного ярче.
На самом деле, частицы применяются не только для маленьких искрящихся огоньков и клубов дыма. Некоторые игры используют частицы неожиданным образом. Например, серия игр Tekken фирмы Namco использует частицы для представления летящих кусков травы в некоторых уровнях.
334 |
Глава12 |
Рис. 12.1. Взрыв, вызванный заклинанием, создает ливень частиц в игре Dungeon Siege фирмы Gas Powered Games
Какие еще нестандартные применения могут быть найдены частицам? Представьте - ваша новейшая игра состоит из гигантских монстров, которые опустошают различные города нации. В одном из уровней игры какой-нибудь из монстров может сломать дамбу. После нескольких точных попаданий дамба рушится и вода начинает вытекать, отскакивая от чешуйчатой спины титанического создания и заливая город. Где же в этом сценарии частицы?
Уверен, вы скажете вода, да? Вы правы, но здесь также присутствуют кусочки отлетающей дамбы, испуганные жители, покидающие городские здания, взрывающиеся трансформаторы затопленных силовых линий и, наверное даже, случайная пуля, выпущенная в монстра храбрым гражданином. Я не говорю о тех частях уровня, в которых присутствуют биллборды1, используемые для визуализации разнообразных городских знаков, деревьев, машин, которые также являются частицами.
1. Биллборд - графический примитив, вставляемый в трехмерную сцену так, чтобы одна его сторона всегда была повернута к наблюдателю. - Примеч. науч. ред.
Использованиечастицванимации |
335 |
Вот и все - вы можете добавить набор простых частиц в вашу игру, таким образом улучшив ее внешний вид и при этом прикладывая минимум усилий. Замечательным является то, что вы можете управлять большей частью частиц одним или двумя небольшими классами, которые очень просто добавить в игровые проекты.
Однако прежде чем перейти к использованию классов для управления частицами, необходимо усвоить основы. Сначала необходимо посмотреть, как рисовать частицы, а потом уже двигаться дальше.
Основы
Частицы обычно представлены в виде квадратных полигонов, которые визуализируются, используя небольшой набор текстур. Используя текстурированные квадратные полигоны, вы можете обманывать людей, заставляя их думать, что частицы на самом деле являются трехмерным мешем; этот эффект создает карта текстуры. Это очень важно, потому что если вы собираетесь показывать только одну сторону меша, то вы можете визуализировать его в карту текстуры, а потом наложить ее на квадрат.
Т. к. частица визуализируется при использовании двух треугольников (образующих квадрат), как показано на рис. 12.2, необходимо основываться на визуализации биллборда, чтобы убедиться, что многоугольники всегда направлены к смотрящему.
Квадратный полигон
Квадратные полигоны
Полигоны
Наблюдатель
Рис. 12.2. Два треугольника соединены вместе, образуя квадрат. Смотря сверху вниз, вы можете видеть, что использование биллбординга позволяет увериться, что многоугольники всегда направлены к зрителю
336 |
Глава12 |
В случае, если вы не слышали этого термина ранее, биллбординг это технология ориентирования объекта (такого как многоугольник) таким образом, чтобы он всегда был направлен на смотрящего. Сначала объект биллбординга создается направленным в отрицательном направлении оси z (как показано на рис. 12.3). По мере того, как смотрящий двигается, объект биллбординга вращается таким образом, чтобы быть всегда направленным к смотрящему.
Рис. 12.3. Квадратный полигон слева, который используется как биллборд, изначально ориентирован в отрицательном направлении оси z, и при визуализации он просто поворачивается в направлении смотрящего
Квадратный полигон слева, который используется как биллборд, изначально ориентирован в отрицательном направлении оси z, и при визуализации он просто поворачивается в направлении смотрящего.
Причины использования биллбордов очень просты - экономия памяти и ускорение визуализации. Для биллбордов обычно используется растровая картинка того, как должны выглядеть частицы (например, клуб дыма для частицы дыма), и эта картинка рисуется на многоугольник частицы. Далее, вместо визуализации трехмерного меша, представляющего дым, вы можете нарисовать многоугольник частицы, используя картинку дыма в качестве текстуры.
Однако стоит сказать, что визуализации трехмерного меша частицы не является плохой мыслью. На самом деле, частица может состоять из любого типа примитива, от пикселей и линий до многоугольников и целого трехмерного меша. Можно полагать, что бывают случаи, когда простого квадратного полигона недостаточно и придется использовать трехмерные меши.