Анимация и эффекты

Анимация предметов и камеры

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

Гораздо более сложной задачей является анимация живых существ.

Веса вершин, Skeleton

Одним из популярных способов анимации живых существ является привязка вершин с теми или иными весовыми коэффициентами к сразу нескольким матрицам, которые в свою очередь могут соответствовать тем или иным костям «скелета» живого существа

Lipsync

Еще одной из характерных задач компьютерной графики является синхронизация движения губ и воспроизводимой речи. Решение делиться на два этапа:

  • 1 Распознавание характерных фонем с привязкой к таймлайну. Это распознавание звука возможно с использованием текста. Так как, например, в играх тексты реплик известны заранее. Эта задача решается заранее, а не в процессе использования приложения. Результатом является анимация матрицы для всех лицевых «костей». Кости в данном случае виртуальные и соответствуют мышцам: левая бровь, правый угол рта и т.д.
  • 2 В процессе выполнения приложения липсинк становиться обычной скелетной анимацией

Эффекты. Системы частиц. Огонь, Дымы. Пары

При симуляции реального мира много важных явлений не описываются устойчивой поверхностью или даже поверхностью вообще. Например: огонь, дымы, пары, брызги. Еще на заре компьютерной графики был разработан метод под названием «система частиц» (particle system). Его суть заключается в том, что отображается большое количество мелких объектов с характерным поведением. Т.е много небольших граней двигаются по схожим, но разным траекториям и при этом меняют свой цвет и прозрачность.

С повышением производительности современных видеокарт варианты алгоритма системы частиц могут быть применены и для задач реального времени. Задавая характерное поведение частиц и их свойств можно получать разные эффекты - те же дымы, брызги, пар, снег, дождь.

Трава, деревья

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

Создание красивых, сложных деревьев можно эффективно реализовать с помощью рекурсивных алгоритмов, порождающих ветки на концах веток с учетом силы тяжести и с добавлением случайной величины в размер, толщину и цвет порождаемой ветки (или листа). Деревья, видимые лишь с большого расстояния, традиционно формируются из трех-четырех прямоугольных граней с полупрозрачными текстурами.

Ландшафт, Водная поверхность

Реализация ландшафта имеет свои сложности. Так, если мы стоим на земле, то можем видеть до нескольких километров вдаль или даже дальше, если ландшафт имеет дальние особенности (далекие горы). Детальность ландшафта вокруг нас должна быть довольно высокой. Если весь ландшафт отображать с одинаковой подробностью, то количество примитивов будет огромным даже для современных видеокарт. Существует большое количество алгоритмов, которые позволяют отображать ближние участки ландшафта подробнее дальних. Основные проблемы, связанные с этим, вызваны возможностью наблюдателя перемещаться, тем самым заставляя менять триангуляцию поверхности «на ходу», не допуская разрывов, скачков и других видимых проблем.

Вода чем-то схожа с ландшафтом. У нее есть то, что делает задачу проще, например, волны сравнительно одной высоты и в дали ее легче сводить к плоскости. Так же есть и очевидная сложность - ее динамика. Реализация воды разбивается, как правило, на два этапа:

  • 1 Расчет карты высот или ее аналогов (например, на основе спектра и обратного преобразования Фурье);
  • 2 Триангуляция. Неплохие результаты дает project grid, но он довольно старый и есть более сложные алгоритмы.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >