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

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

Computer Graphics Support Group
of 30 Phys-Math Lyceum

Tough Uniform Tracker

Авторы:
1.Киселева МаргаритаKiseleva Margarita10-3 класс
2.Лебедев СергейLebedev Sergey11-5 класс
3.Сергеев АртемийSergeev Artemiy11-5 класс
4.Федотов АнтонFedotov Anton11-5 класс

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

Presentation

Abstract

The project is devoted implementation of interactive system with visual feedback features. The system is based on capturing laser track by camera with accelerometer position correction. The system computes the three dimensional position of the track and visualizes it as a beam or particle emitter. The system designed can be used in many different ways from entertainment industry to specialized simulators.

Аннотация

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

Тезисы

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

На практике эта идея оборачивается целым рядом неочевидных сложностей. Чтобы понять природу этих сложностей, давайте сравним человеческий глаз и видеокамеру. Глаз является прибором восприятия, отработанным миллионами лет эволюции, и воспринимающим не только множество цветов, но еще и объем и яркость. Мы в состоянии отличить обычную красную точку от ярко светящейся. Помимо этого, мы не учитываем осознанность нашего восприятия. В сравнении с глазом, камера - не столь совершенный прибор. Яркий свет приводит к засвеченным областям в изображении, а отличить эту область от чисто белой по розоватому кольцу вокруг - задача практически не решаемая аналитическими методами.

Для достижения поставленной цели нами была разработана оригинальная технология. Поскольку лазер является очень ярким направленным источником света, даже при рассеивании сохраняющим значительную часть энергии, его след будет одним из самых ярких пятен на экране. Установкой фильтра на камеру мы можем значительно уменьшить яркость воспринимаемого камерой света. Необходимо изготовить собственный фильтр, поскольку готовые не обладают нужными характеристиками. Используя две поляризационные пластины, повернутые на угол, близкий к прямому, мы можем без потери качества снизить яркость и получить необходимый эффект: обычные области станут практически черными, а область, освещенная лазером - ярко красной и не засвеченной. Получить точку становится возможным, выделив наиболее яркие области полученного с камеры изображения и отсеяв не красные участки элементарными фильтрами. Таким образом, задача, практически не имеющая чисто программного решения, была решена с использованием знаний школьной оптики.

Для позиционирования источника лазерного луча используется акселерометр, включенный в прибор, разработанный компанией Sun Microsystems - SunSPOT, состоящий из программируемого устройства с датчиками, связывающегося по радиоканалу с устройством-сервером, подключающимся к компьютеру. Недостатком данного прибора является наличие SDK для него только для языка JAVA, в то время как наш проект изначально писался на языке C++. Нами была реализована связь приложения на JAVA, управляющего аппаратами, и основного приложения проекта (С++). Для повышения скорости работы системы, управляющее приложение вынесено на отдельный компьютер, передача данных осуществляется по сети.

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

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

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

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

Литература

  • Frank D. Luna "Introduction to 3D Game Programming with DirectX 9.0 (Wordware Game and Graphics Library)", Jones & Bartlett Publishers, 2003
  • Tomas Akenine-Moller, Eric Haines, and Naty Hoffman, "Real-Time Rendering", 3rd edition, A.K. Peters Ltd., 2008.
  • А.Боресков "Разработка и отладка шейдеров", БХВ-Петербург, 2006.
  • Rick Parent "Computer Animation, Second Edition: Algorithms and Techniques", Morgan Kaufmann, 2007
  • Andrew S. Glassner (ed.). "An Introduction to Ray Tracing", Academic Press, 1989.
ФМЛ № 30
 
Сайт Физико-математического лицея № 30, Санкт-Петербург, Россия