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

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

Computer Graphics Support Group
of 30 Phys-Math Lyceum

Tough TB

Авторы:
1.Гриднев МаксимGridnev Maxim11-1 класс
2.Машинский ЛеонидMashinsky Leonid11-1 класс
3.Чуринов АндрейChurinov Andrey11-1 класс

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

Presentation

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

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

Визуализация 3D сцен

Система вывода изображения на экран основана на взаимодействии нашей надстройки над средствами Microsoft Direct3D 9.0 и системы управления шейдерами. Базовой единицей представления объектов является примитив, который содержит не только геометрическую информацию, но и свойства поверхности, такие как цвет каждой вершины, текстуры, которых может быть одновременно включено в количестве четырех. При помощи шаблонов примитив сам включает в себя нужное количество нужных свойств, которые указываются при инициализации. Также в проекте используется два механизма освещения: статическое - для неподвижных объектов и динамическое, которое реализовано уже при помощи вершинных шейдеров. Во время отображения на экран существует возможность активировать любой другой шейдерный эффект.

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

Система обработки устройств ввода

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

Система обработки столкновений

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

Заключение

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

Литература

  • Блинова Т.А., Порев В.Н., "Компьютерная графика", Корона Принт ЮНИОР, 2006
  • Frank D. Luna. "Introduction to 3D Game Programming with DirectX 9.0". Wordware Publishing, Inc., 2003
  • Д.Мюррей, У. ван Райпер. "Энциклопедия форматов графических файлов", К.: Издательская группа BHV, 1997
  • Дэвид Конгер, "Физика для разработчиков компьютерных игр", М.: БИНОМ. Лаборатория Знаний, 2007
  • МакКаски М. "Звук в играх: Технологии программирования: Учебно-справочное пособие", М: Кудиц-Образ, 2004.
  • 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
  • Kris Gray, "Microsoft DirectX 9 Programmable graphics pipeline", Microsoft Press, 2003.
  • David Baraff, "An Introduction to Physically Based Modeling: Rigid Body Simulation", Robotics Institute, Carnegie Mellon University, 1997.
  • Tomas Akenine-Moller, Eric Haines. "Real-Time Rendering", 2nd ed., A K Peters, Natick, Massachusetts, 2002.
  • C.Fares, Y.Hamam, "Collision Detection for Rigid Bodies: A State of the Art Review", Computer Graphics and Applications (GraphiCon'2005), Fifteenth International Conference, June 20 - 24, 2005.
  • E.Catto, "Fast and simple physics using sequential impulses", In Proceedings of Game Developers Conference, 2006.
  • D.Baraff, A.Witkin, M.Kass, "Physicaly based modeling", SigGraph 2001 Course Notes, Pixar Animation Studios, 2001.
ФМЛ № 30
 
Сайт Физико-математического лицея № 30, Санкт-Петербург, Россия