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

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

Computer Graphics Support Group
of 30 Phys-Math Lyceum

Tough Dynamics System

Авторы:
1.Блохин ДмитрийBlohin Dmitry11-3 класс
2.Бурков ДенисBurkov Denis10-1 класс
3.Гордеев ДмитрийGordeev Dmitry11-3 класс
4.Каретников АлексейKaretnikov Alexey11-1 класс
5.Кожевников МихаилKojevnikov Michael11-5 класс
6.Косолобов БорисKosolobov Boris11-3 класс
7.Кулагин РоманKulagin Roman11-3 класс
8.Лонч ВадимLonch Vadim11-5 класс
9.Налимов АнатолийNalimov Anatoly11-2 класс
10.Никитин АлексейNikitin Alexey11-1 класс
11.Романов АлексейRomanov Alexey11-5 класс
12.Рыбалкин МихаилRybalkin Michael11-1 класс

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

Presentation

Введение и постановка задачи

Целью данного проекта является проектирование и реализация системы, совмещающей в себе различные возможности синтезирования трехмерных сцен и способов взаимодействия составляющих их объектов на основе физического моделирования с последующей визуализации в реальном времени. Разработанная система представляет собой совокупность многоуровневой геометрической иерархии объектов и процедурной анимации, обеспечивающей их поведение. Иерархия объектов позволяет манипулировать геометрическими данными разных уровней посредством контекстного подхода к моделированию, что позволяет легко производить модификации и трансформации геометрии. Для оптимизации представления полигональных данных элементы делятся на индексированные треугольники, веера, полосы и регулярные сетки. Каждый уровень хранит независимые данные об аффинных преобразованиях собственной системы координат и системы координат относительно "родительского" уровня. Для описания визуальных свойств создается таблица материалов, значения которой используется при перевычислении освещенности объекта в точках "на лету" (используется модель освещения Фонга [1]). В свойства каждого подобъекта входят параметры текстурирования, уровня прозрачности и цвет.

Геометрическое моделирование

Помимо контекстного подхода для облегчения задания геометрических данных в системе разработано несколько методов моделирования: добавление в текущий контекст простейших геометрических фигур (сфера, усеченный конус, тор и т.п.); для создания сложных протяженных тел реализован метод протаскивания одной ломаной по другой ([2]); метод вращения фигур вокруг координатных осей для тел с осью симметрии; Для задания рельефных поверхностей по карте высот нами был реализован алгоритм displacement mapping ([1]), а также разработан алгоритм "выдавливания" различных геометрических тел из плоскости. В системе реализованы различные способы проекционного текстурирования (mapping [3]): планарное наложение, цилиндрическое, сферическое и торическое. Для текстурирования разработан внутренний "кеш" текстур, позволяющий обрабатывать их согласно требованиям низкоуровневого API (импорт текстур использует цветовые данные и "альфа"-канал [4]). Одим из способов моделирования является моделирование объектов при помощи метаболов (meatballs [5]). В нашем проекте разработано два способа применения метаболов: это деформация объектов при помощи метаболов и создание новых объектов на основе метаболов. Деформация объектов позволяет изменять на основе скелета (skinning [6]) отдельные множества точек из выбранной геометрии. При помощи моделирования объектов на основе метаболов можно реалистично имитировать, капли воды, облака, или ветки деревьев. Также для осуществления произвольных трансформаций в проекте реализован метод "деформации произвольных форм" (FFD [6]) на основе трикубического пространства Безье ([2]).

Физическое моделирование и процедурная анимация

Для синхронизации, обслуживания и изменения динамических сцен предназначен разработанный в проекте модуль процедурной анимации. В его основе лежит объектно-ориентированный подход к моделированию поведения объектов в сцене. Все "единицы" сцены находятся в т.н. "складе объектов". Основной принцип обслуживания единиц анимации заключается в переборе всех объектов, зарегистрированных (добавленных) на "складе" согласно заранее предустановленным приоритетам и вызове для них методов обновления (реагирования) и вывода (построения) на экран. Поведение объектов целиком зависит от управляющей ими функцией реагирования (обновления). В систему добавлены методы моделирования физики на основе т.н. rigid-bodies ([5, 7, 8]) - тел, изменяющих свою ориентацию и положение в пространстве согласно законам кинематики, а также управление эффектами, основанными на системах частиц (particles [5, 7, 9]). В реализациях динамических систем важную роль играет алгоритм нахождения столкновений между телами, находящимися в движении. Нами был разработан следующий алгоритм. Каждый объект разбивается на части, каждая из которых является выпуклым телом. После чего применяется алгоритм нахождения расстояния между выпуклыми телами (GJK). Для ускорения нахождения столкновений у каждого объекта задается его оболочка (простейший охватывающий геометрию объект bound volume [1]), пересечения между которыми ищется быстро. Пересечения между самими объектами ищется только в том случае, если пересеклись охватывающие тела. Для того, чтобы облегчить работу пользователя, был разработан набор функций, позволяющих в любой момент времени легко найти расстояние между любыми двумя телами.

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

Для интерфейса с аппаратными возможностями видеокарты для вывода 3D графики с удалением невидимых поверхностей в системе используется два API: DirectX 8.0 ([10, 11]) или OpenGL 1.2 ([12, 13]). Программист полностью абстрагирован от системы вывода. Разработанный функциональный интерфейс обеспечивает корректную работу системы и визуализацию запрошенных данных. Для целей вывода вспомогательной информации поверх синтезируемого изображения в проекте разработана система консолей - буферов изображений в памяти, для каждой точки которых задано значение уровня прозрачности. Консоли выводятся согласно заданному приоритету, а также могут быть использованы в роли текстур. Для консолей разработана отдельная библиотека 2D графики для обеспечения полноценного вывода. Также посредством API Direct X 8.0 осуществляется взаимодействие с устройствами ввода и вывод звука.

Заключение

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

Литература

  • James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes. "Computer Graphics: Principle and Practice", 2nd ed., Addison-Wesley Publishing Company, MA, 1990.
  • David F. Rodgers, J. van Adams. "Mathematical Elements for Computer Graphics", 2nd ed., McGraw-Hill Publishing Company, 1990.
  • David S. Ebert (ed.), F. Kenton Musgrave, Darwyn Peachey, Ken Perlin, Steven Worley. "Texturing and Modeling. A Procedural Approach", AP Professional, Academic Press, 1994.
  • Д.Мюррей, У. ван Райпер. "Энциклопедия форматов графических файлов", К.: Издательская группа BHV, 1997.
  • Tomas Akenine-Moller, Eric Haines. "Real-Time Rendering", 2nd ed., A K Peters, Natick, Massachusetts, 2002.
  • Alan Watt, Mark Watt. "Advanced Animation and Rendering Techniques. Theory and Practice", ACM Press, Addison-Wesley Longman Limited, 1992.
  • Alan Watt, Fabio Policarpo. "3D Games. Real-time Rendering and Software Technology. Volume One", ACM Press, Addison-Wesley, New York, 2001.
  • David Baraff, "An Introduction to Physically Based Modeling: Rigid Body Simulation", Robotics Institute, Carnegie Mellon University, 1997.
  • Andrew Witkin, "An Introduction to Physically Based Modeling: Particle System Dynamics", School of Computer Science, Robotics Institute, Carnegie Mellon University, 1997.
  • Д. Гончаров, Т. Салихов, "DirectX 7.0 для программистов", С.Петербург: ПИТЕР, 2001.
  • Андре Ламот, "Программирование игр для Windows. Советы профессионала", Киев: Вильямс, 2003.
  • Ву Мейсон, Нейдер Джеки, Девис Том, Шрайнер Дейв, "OpenGL. Руководство по программиста", Москва: ДиаСофтЮП, 2002.
  • Дейв Шрайнер, "OpenGL. Официальный справочник", Москва: ДиаСофтЮП, 2002.
ФМЛ № 30
 
Сайт Физико-математического лицея № 30, Санкт-Петербург, Россия