|
ФИЗИКО-МАТЕМАТИЧЕСКОГО ЛИЦЕЯ № 30 of 30 Phys-Math Lyceum Tough TBАвторы:
Научный руководитель проекта: Галинский Виталий Александрович Введение и постановка задачиЦелью нашей работы является моделирование реалистичных трехмерных сцен в реальном времени. В основном проект концентрируется на корректной и быстрой визуализации физики твердого тела (rigid body), а также создании реалистичных эффектов, основанных на использовании вершинных и пиксельных шейдеров. Весь процесс отображения регулируется удобной системой управления устройствами ввода. Вывод на экран полигональных объектов оптимизирован благодаря строгой типизации объектов, которые делятся на индексированные треугольники, веера, полосы и регулярные сетки. Для вычислений, возникающих во время визуализации, была реализована и использована библиотека линейной алгебры. Весь проект написан на объектно-ориентированном языке C++, и разбит на различные независимые, но взаимодействующие модули, и поэтому легко дополняем и изменяем. Визуализация 3D сценСистема вывода изображения на экран основана на взаимодействии нашей надстройки над средствами Microsoft Direct3D 9.0 и системы управления шейдерами. Базовой единицей представления объектов является примитив, который содержит не только геометрическую информацию, но и свойства поверхности, такие как цвет каждой вершины, текстуры, которых может быть одновременно включено в количестве четырех. При помощи шаблонов примитив сам включает в себя нужное количество нужных свойств, которые указываются при инициализации. Также в проекте используется два механизма освещения: статическое - для неподвижных объектов и динамическое, которое реализовано уже при помощи вершинных шейдеров. Во время отображения на экран существует возможность активировать любой другой шейдерный эффект. Система анимации представляет собой конвейер специальных 'юнитов' с определенными приоритетами и свойствами, которые выполняются в заданном порядке. Любое действие в программе синхронизируется по времени при помощи высокоточного таймера. Система обработки устройств вводаДля облегченного получения данных с любого устройства ввода (мышь, клавиатура, джойстик, руль и т.д.) авторами была реализована система отслеживания за состояниями их объектов (клавиш, осей и т.д.). Идейно система представляет собой возможность регистрирования любой пользовательской переменной за определенным объектом данного устройства с возможностью приведения состояния к нужному диапазону. Благодаря инициализации данных в процессе обработке сцены, система позволяет обрабатывать данные практически с любых перечисленных выше устройств. Система обработки столкновенийДля корректного взаимодействия твердых тел и применения к точке контакта импульсов, нужно решить задачу об обнаружении их положения. Для точного определения точек контактов сложных тел требуется довольно длительное время, которое неприемлемо для моделирования в реальном времени. Поэтому сложные объекты разбиваются на простые (сфера и ориентированный параллелепипед), которые охватывают данную геометрию. Также для ускорения поиска пересечений служит первоначальная обработка. Она включает в себя простые тесты для определения того, что могут ли данные два объекта находиться в соприкосновении. Ландшафты, особый тип статичных объектов, делятся на сегменты, и определяется, какие твердые тела находятся в них, чтобы отбросить часть рассматриваемой геометрии ландшафта. ЗаключениеДанный проект был разработан авторами для быстрой визуализации простых физических моделей, но также его возможности можно направить в русло программирования игровых приложений. Благодаря объектно-ориентированному подходу в разработки и реализации проекта, а также модульному принципу программирования данный комплекс был разбит на независимые этапы, каждый из которых реализовывался отдельными членами авторского коллектива. В итоге предложенный проект позволяет легко и быстро реализовать физический эксперимент или графическое приложение. Литература
|
|