|
ФИЗИКО-МАТЕМАТИЧЕСКОГО ЛИЦЕЯ № 30 of 30 Phys-Math Lyceum Tough Dynamics SystemАвторы:
Научный руководитель проекта: Галинский Виталий Александрович
Введение и постановка задачиЦелью данного проекта является проектирование и реализация системы, совмещающей в себе различные возможности синтезирования трехмерных сцен и способов взаимодействия составляющих их объектов на основе физического моделирования с последующей визуализации в реальном времени. Разработанная система представляет собой совокупность многоуровневой геометрической иерархии объектов и процедурной анимации, обеспечивающей их поведение. Иерархия объектов позволяет манипулировать геометрическими данными разных уровней посредством контекстного подхода к моделированию, что позволяет легко производить модификации и трансформации геометрии. Для оптимизации представления полигональных данных элементы делятся на индексированные треугольники, веера, полосы и регулярные сетки. Каждый уровень хранит независимые данные об аффинных преобразованиях собственной системы координат и системы координат относительно "родительского" уровня. Для описания визуальных свойств создается таблица материалов, значения которой используется при перевычислении освещенности объекта в точках "на лету" (используется модель освещения Фонга [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 осуществляется взаимодействие с устройствами ввода и вывод звука.ЗаключениеРазработанная система позволяет создавать динамические симуляторы - от игр до визуализации различных процессов в реальном времени. Предоставляемые ею возможности позволяют использовать ее в различных прикладных системах, таких как системы проектирования и моделирования различных процессов, требующих качественной и быстрой визуализации.Литература
|
|