ФизМатШкола № 30
 

ФизМатШкола № 30
ГРУППА КОМПЬЮТЕРНОЙ ГРАФИКИ
ФИЗИКО-МАТЕМАТИЧЕСКОГО ЛИЦЕЯ № 30

Computer Graphics Support Group
of 30 Phys-Math Lyceum

Tough Nature Phenomena

Авторы:
1.Александров АлексейAlexandrov Alexey10-1 класс
2.Березин КириллBerezin Kirill11-3 класс
3.Екимов ЛеонидEkimov Leonid10-3 класс
4.Куликов ВладиславKulikov Vladislav11-4 класс
5.Мельников РоманMelnikov Roman10-3 класс
6.Пинаев ИгорьPinaev Igor11-4 класс

Научный руководитель проекта: Галинский Виталий Александрович

Введение

Данный проект посвящен синтезированию и визуализации "неплотных" сред (дым, огонь и т.д.). Система основана на придуманном механизме представления и отображения трехмерных частиц, которая позволяет проводить визуализацию явлений в реальном времени. Проект состоит из нескольких частей, обеспечивающих иерархическое представление геометрических данных, визуализацию оптических свойств объектов, моделирование шумов и многое другое. Визуализация происходит посредством API DirectX 9.0 [1]. Весь проект базируется на объектно-ориентированном подходе, что позволяет легко разрабатывать и создавать новые классы объектов со своим собственным поведением и уровнем взаимодействия.

Система визуализации в реальном времени

В работе спроектирована система анимации, ориентированная на вывод и обслуживание подобъектов визуализации. Единицы анимации посредством синхронизации по времени осуществляют моделирование визуальных эффектов. Для поддержки вывода полупрозрачных объектов разработана и реализована подсистема отложенного вывода, позволяющая строить очередь прозрачных частей сцены с последующим построением. Данный подход позволяет отображать прозрачные объекты без учета их глубины визуализации, однако, с учетом глубины выводимой трехмерной сцены. Основная идея вывода "неплотных" сред - размещение в подсистеме отложенного вывода анимационных единиц, строящих на базе подсистемы частиц визуально-правдоподобную модель синтезируемого явления.

Представление геометрических данных

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

Моделирование шумов

В качестве одной из основных функциональных частей проекта реализована система шума [2, 3]. Шум - суть объект, который выдает псевдослучайные числа с интерполяцией, благодаря чему мы получаем связанные случайные величины. На основе полученных значений можно строить случайные непрерывные функции. Шум имеет достаточно обширное применение, как то: генерация объектов, траекторий, процедурных текстур и т.п. Такие предметы как облака, пламя, дым моделируются посредством таких случайных функций. В нашем проекте реализован двухмерный и трехмерный шум.

Для построения шумовой таблицы псевдослучайных величин авторами был реализован алгоритм получения последовательности псевдослучайных чисел. Был использован конгруэнтный метод, предложенный Д. Г. Лехмером в 1949 году [4] (параметризация алгоритма была взята из работы Парки-Миллера).

Система частиц

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

Система визуализации

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

Для взаимодействия с аппаратной частью видеоподсистемы используется интерфейс API DirectX 9.0, который обеспечивает вывод 3D-графики с удалением невидимых поверхностей на аппаратном уровне.

Вывод

Данный проект является простым и удобным средством для динамической визуализации "неплотных" сред. Он позволяет моделировать сложные эффекты в реальном времени по заданным начальным параметрам.

Литература

  • Frank D. Luna. "Introduction to 3D Game Programming with DirectX 9.0". Wordware Publishing, Inc., 2003.
  • David S. Ebert (ed.), F. Kenton Musgrave, Darwyn Peachey, Ken Perlin, Steven Worley. "Texturing and Modeling. A Procedural Approach", AP Professional, Academic Press, 1994.
  • Пэрент Р. "Компьютерная анимация". М: Кудиц-Образ, 2004.
  • Кнут Д.Э. "Искусство программирования (Том 2. Получисленные алгоритмы)". К:Вильямс, 2000.
ФМЛ № 30
 
Сайт Физико-математического лицея № 30, Санкт-Петербург, Россия