Интерфейс фонарика - это библиотека, позволяющая легко создавать трёхмерный пользовательский интерфейс на базе жестов. Для ввода жестов данный интерфейс использует обыкновенный карманный фонарик и стандартную веб-камеру. При этом допускается расширение активной зоны за счёт использования дополнительных камер, причём процедура калибровки камер выполняется прозрачно для пользователя и в реальном времени. Помимо библиотеки, доступен полный исходный код.
Условно интерфейсы для манипулирования трехмерными объектами можно разделить на две категории: традиционные (командная строка, иконографический интерфейс) и естественные (основанные на жестах). Преимуществом первого подхода является легкость расширения (добавление новых команд или графических иконок не требует замены устройства ввода), к преимуществам второго относится меньшее время обучения и более широкая доступность (действия и эффекты действий интуитивно понятны благодаря возможности проецировать опыт взаимодействия с реальностью на виртуальную среду). В исследовательских задачах суть взаимодействия состоит не в выполнении повседневных операций, а в изучении нового, ранее неизвестного объекта. Следовательно, необходимо создать такой интерфейс, в котором манипуляции с устройством ввода в точности соответствуют воздействию на виртуальный объект (к примеру, поворот манипулятора приводит к аналогичному повороту объекта). Вместе с тем, поскольку мы взаимодействуем с новым, ранее неизвестным объектом, разработчик интерфейса не может с уверенностью сказать, какие именно манипуляции потребуются конечному пользователю. Значит, необходимо создать такой интерфейс, который бы совмещал преимущества традиционных и естественных интерфейсов, т.е. позволял бы взаимодействовать с виртуальным объектом так же, как если бы перед нами был его реальный аналог, мог легко расширяться без замены устройства ввода и, по возможности, оставался простым и недорогим.
Описание устройства ввода
Поскольку любой манипулятор ограничивает набор возможных взаимодействий, от него следует отказаться и осуществлять пользовательский ввод при помощи трехмерных жестов. Различных подходов к реализации захвата движений (Motion Capture) достаточно много, но, к сожалению, все они обладают определенными недостатками. Оптические методы требуют закрепления специальных маркеров и определенного размещения нескольких камер (для безмаркерного варианта требуется плотно облегающая одежда и отсутствие прочих движущихся объектов в кадре). Инерциальные системы также требуют закреплять датчики и, кроме того, они не способны определять абсолютное положение в пространстве без поддержки оптических систем. Механические системы, помимо прочего, достаточно тяжелы, требуют периодической калибровки и имеют привязку к конкретному размеру. Электромагнитные и ультразвуковые методы являются аналогами оптических систем, но при этом они менее устойчивы к внешним помехам. Поскольку для манипуляций виртуальными объектами необходимо захватить положение рук в пространстве, наилучшим решением является использование оптической технологии. Сложность использования, связанную с закреплением датчиков на теле человека, можно устранить, выделив все датчики в отдельное устройство, которое пользователь будет брать в руку. В качестве дешевого манипулятора для ввода трехмерных жестов был выбран обыкновенный карманный фонарик. В качестве датчика света используется стандартная веб-камера, которая крепится к монитору. Фонарик, помимо низкой стоимости и легкости использования обладает одним немаловажным преимуществом: он является не точечным, а протяженным источником света. Иными словами, камера видит фонарик не как точку, а как круг. Эта особенность позволяет нам вычислять расстояние до объекта на основе анализа изображения всего одной камеры. Поэтому, при установке системы не требуется производить калибровку, а сама камера может быть размещена совершенно произвольно. Изображение, получаемое с веб-камеры, подвергается анализу: изменение положения светового пятна позволяет определить две координаты, на основе изменений размера светового пятна определяется третья, а путем анализа геометрической формы светового пятна вычисляются вектор направления фонарика. Проведенные исследования показали, что «интерфейс фонарика» является удобным для пользователей, эффективно работает при любых условиях внешней освещенности, и обладает достаточной точностью и скоростью для успешной игры в аркадные игры.
Распознавание жестов
Для создания богатого интерфейса недостаточно просто определить трехмерное положение рук пользователя. Необходимо также уметь распознавать пользовательские жесты – траектории, по которым перемещаются фонарики. В качестве основы алгоритма распознавания жестов используется “$1 Gesture Recognizer Algorithm”, предложенный Jacob O. Wobbrock, Andrew D. Wilson, Yang Li. Данный алгоритм обладает отличной точностью: при использовании единственного шаблона для каждого жеста точность достигает 97%, при использовании трех и более шаблонов точность превышает 99%. Другим важным преимуществом является низкая вычислительная сложность и линейная зависимость от количества базовых фигур. Вместе с тем, данный алгоритм не умеет выделять жест в непрерывном пользовательском вводе, а также работать с трехмерными траекториями. Выполненная модификация позволила этому алгоритму работать в трехмерном пространстве и осуществлять распознавание жестов в процессе их ввода (т.е. без необходимости как-то обозначать начало и конец жеста). Несмотря на то, что новый алгоритм оказался в несколько раз сложнее, внесенные изменения не повлияли ни на вычислительную сложность, ни на точность распознавания жестов. Т.к. мы хотим реализовать возможность оперирования виртуальными объектами точно так же, как если бы объект был реален, и поскольку в руках у пользователя находится фонарик, в «виртуальной руке» пользователя тоже должен находиться предмет, с помощью которого и осуществляется воздействие на виртуальную среду. Иными словами, все манипуляции с объектами должны выполняться не непосредственно, а при помощи виртуальных инструментов. Благодаря этому подходу пользователь, основываясь на опыте реальной жизни, знает, какой жест применить, чтобы воспользоваться определенным инструментом, и каких результатов от этого действия следует ожидать. Таким образом, пользователь может взаимодействовать с виртуальной средой без предварительного обучения, либо с минимальным обучением принципам функционирования системы. Также следует отметить, что подобные жесты связаны исключительно с предметами и потому не зависят от национальной культуры человека.
Метод автоматической калибровки камер
Интерфейс фонарика позволяет решить еще одну серьезную проблему: задачу калибровки камер в системах оптического Motion Capture. Классические подходы, использующие эталонные объекты или светящиеся точки требуют больших вычислительных ресурсов и могут давать ошибочный результат (в силу вычислительной неустойчивости задачи и наличия помех). Интерфейс фонарика, в отличие от традиционного Motion Capture нуждается во всего одной камере для определения трехмерного положения маркера (т.е. фонарика). Если мы имеем откалиброванную и не откалиброванную камеры, которые обозревают перемещения одного и того же фонарика, то мы получим две пространственные траектории перемещения (по одной относительно каждой из камер). Совмещая эти траектории в пространстве, мы сможем вычислить положение и ориентацию одной камеры относительно другой, а также отношение их фокусных расстояний. Иными словами, мы произведем калибровку. Поскольку каждая камера работает независимо, и в качестве калибрующих перемещений может выступать любая активность пользователя, процедуру калибровки можно выполнять в фоновом режиме. Т.е. при запуске системы активна одна камера (которой достаточно для начала работы), а затем, незаметно для пользователя, выполняется калибровка всех остальных камер. При этом процесс калибровки может выполняться даже в случае использования нескольких фонариков, т.е. на пользователя не накладывается абсолютно никаких ограничений. Т.к. калибровка выполняется динамически, то мы можем позволить себе произвести перекалибровку камеры, если первоначальная калибровка оказалась недостаточно точной, либо если камера была перемещена пользователем в другое место. Перекалибровка выполняется автоматически, поскольку система постоянно проверяет каждую камеру на предмет возможных изменений. Каждая камера функционирует независимо от остальных, следовательно, система может временно отключать те камеры, которые гарантированно не видят фонарики (включая их, когда фонарики приблизятся к их зоне видимости). Также данное свойство позволяет использовать несинхронность камер для увеличения частоты кадров, и чрезвычайно хорошо распараллеливать систему (в графе потоков данных отсутствуют циклы, а объем передаваемых данных минимален). Описанные выше свойства позволяют строить системы, состоящие из очень большого числа камер, не требующие при этом очень больших вычислительных ресурсов. Иными словами, данная система может успешно функционировать не только в масштабах персонального компьютера, но и в масштабах больших экранов. При этом интерфейс фонарика остается простым, недорогим и удобным решением, подходящим для взаимодействия с любыми 3D-объектами.
Растекание лавовых потоков
Для описания процесса течения лавовых потоков или роста лавовых куполов рассматривается задача численного моделирования растекания вязкой неоднородной несжимаемой жидкости под действием...