Кинжибаева
А.Д.,
магистрант
2 года обучения НПМ, спец. «Информационные системы»
Научный
руководитель: Ph.D, к.э.н., профессор Укубасова Г.С.
Новый
экономический университет им.Т.Рыскулова
СОЗДАНИЕ
МЕХАНИЗМА УПРАВЛЕНИЯ ВИРТУАЛЬНОЙ РЕАЛЬНОСТЬЮ
Данный проект представляет собой механизм
управления виртуальным пространством, основанном на использовании современных
технологий, таких как камера Kinect и видеоочки Wrap
1200 VR. За основу виртуального мира взят исторический культурный
памятник истории Казахстана город Отрар.
Известный как крупный город средневековья, Отрар несет в себе большую
информацию об истории Казахстана и является достоянием народа [1]. Внедрение
подобных систем в образовательные учреждения повысит уровень запоминания
информации обучающимися, тем самым повышая их интеллектуальные
способности. Созданный механизм
позволит внедрять любое виртуальное пространство в среду.
Создание данного проекта состоит из следующих
поэтапных работ:
– изучение существующих систем виртуальной
реальности;
– подготовка технического задания к проекту;
– изучение алгоритма работы камеры Kinect;
– изучение
принципа работы видеоочковWrap 1200 VR;
– подключение библиотеки классов видеоочков в
игровой движок Unity;
– подключение камеры Kinect к среде Unity;
– создание объектов виртуального пространства на
трехмерном редакторе Autodesk Maya;
–
перенос моделей виртуального города в среду Unity;
– полное воссоздание города в Unity,
добавление специальных визуальных эффектов в виртуальный мир.
Нижеприведенная схема на рис.1 показывает
взаимосвязь применяемых технологий в проекте.
Рисунок 1 –
Блок-схема системы

Внедрение в виртуальную реальность происходит
при помощи видеоочков Vuzix Wrap 1200 VR (рис.2), у которых высокое разрешение VGA (852 х
480), с поддержкой видео и игр в форматах 2D и 3D - это закрепляемый на голове
медиа-дисплей [2].

Рисунок 2 – Видеоочки Wrap 1200 VR
Очки модели 1200VR ориентированы на работу с
компьютером и приложениями, отслеживающими положение головы. В видеоочках
совмещены дизайнерские находки и последнее программное обеспечение Vuzix VR
Manager с поддержкой 3D-драйвера для обзора всех вариантов и моделей
графических карт Windows.
Адаптивная
технология: Wrap VR1200 - это самый
современный, широкоформатный монитор, транслирующий виртуальную реальность. Он
воспроизводит формат 2D-для игр и приложений, а также 3D - для видео. Wrap™
1200VR можно носить поверх обычных очков с диоптриями от +2 до -5. Также очки
имеют возможность регулировки для левого и правого глаз. Очки серии Wrap 1200
можно приспособлять для обоих глаз (технология IPD), а с помощью технологии
Vuzix AccuTilt® вы получаете оптимальный угол обзора и кристальную чистоту
картинки.
Подключение и
совместимость: Wrap 1200VR
подключается к практически любой ОС Windows на основе видеокарты, независимо от
марки или модели. Windows 7, Vista и XP (32 и 64-разрядные версии) всех
поддерживаемых. Если необходимо выйти за пределы платформы Windows, Wrap 1200VR
позволит подключить к компонентным видео устройствам (например, Xbox 360 и
PlayStation 3) и компонентам медиа-устройств (например: IPod Touch, iPhone, iPad,
DVD-проигрыватели и кабельных муфт) для воспроизведения видео. Даже миллиметр
разницы в глазах разделения может влиять на качество изображения, не говоря уж
о формах переносицы, что влияет на комфорт и качество изображения. Wrap
1200VR единственная система виртуальной реальности, которая учитывает
все эти факторы, и позволяет испытать лучшее видео качество.
В комплекте: чехол для
очков, лямки для очков, DVI / VGA видео
разъем адаптера, съемные стерео наушники с премиум шумоизоляцией, регулируемые
гипоаллергенные подушки наушников.
Технические
характеристики видеоочков Wrap 1200 VR:
– два
LCD-дисплея высокого разрешения 852х480;
–
разрешение картинки до 1280х768;
–
частота 60 Гц;
–
35-градусное поле обзора;
–
24-битные цвета (16 млн цветов);
– вес -
0,84 кг;
–
поддерживает 3D-видео формата Side-by side для видеоигр;
– подключается к компьютерным VGA или DVI портам
и USB2.0 Headtracker.
Для работы видеоочков в среде Unity
подключается библиотека iWearWrapper.dll.
На языке С# написан скрипт, eyewear.cs,
принимающий входные данные в программу. Алгоритм работы основан на поворотах головы
вниз, вверх, отслеживаемых основной камерой, привязанной к объекту.
Принцип работы
видеоочков:
–
подключение библиотека
iWearWrapper в Unity
–
объявлениеметодов, позволяющих считывать положение головы:
WrapIWROpenTracker();
WrapIWRGetTracking(ref
int yaw, ref int pitch, ref int roll);
WrapIWRCloseTracker();
где, yaw –
поворот вправо и влево
pitch – вверх и вниз
roll – круговые
движения, в плоскости xOz
– у
видеоочков имеется датчик - гироскоп, который отправляет данные в метод WrapIWRGetTracking();
– данный скрипт привязывается к
FirstPersonController, точнее к камере в среде Unity.
Поворачивая голову, пользователь задает угол
поворота камеры. Также переменная yaw
привязывается к аватару, скелету, привязанному к First Person
Controller, так как при повороте направо и налево идет
движение скелета. Получается, что аватар получает положение, которое передает
датчик очков. Датчиком, считывающим положение головы, является гироскоп (рис.3)
.
Гироско́п (от др.-греч. γῦρος
«круг» и σκοπέω «смотрю») — устройство,
способное реагировать на изменение углов ориентации связанного с ним тела
относительно инерциальной системы координат, как правило, основанное на законе
сохранения вращательного момента (момента импульса) [3].


Рисунок 3 – Датчик гироскоп
Данную реализацию можно представить в виде
следующей блок-схемы (рис. 4). Входными значениями идут переменные yaw,
pitch, roll. Данный метод считывает
входные значения и передает их камере. Выходное значение это повороты камеры
контроллера в сцене на соответствующие углы.
Рисунок 4 – Принцип
работы Wrap 1200 VR
Для работы очков написана программа на языке С#
[4].
Опишем функции, используемые в программе.
Функция Start() вызывается перед любым
из методов обновления в самом начале программы. Она вызывается только один раз.
Разница между Awake() и Start() в том, что Start()
вызывается в том случае, если скрипт включен. Это позволяет отложить любой код
инициализации, пока это необходимо. Awake() всегда вызывается до
начала любой функции. Start() вызывается после Awake()
и применима для всей программы.
Функция Update() вызывает каждый кадр,
если включен MonoBehaviour. Эта функция наиболее часто используемая в
создание игр.
Литература:
1. К.А. Акишев, К.М. Байпаков,Л.Б. Ерзакович.
Древний Отрар (топография, стратиграфия, перспективы) - Алма-Ата, 1972 г.
2. Официальный сайт видеоочков www.vuzix.com
3. Microsoft Kinect - Kinect SDK
4. Дэвид
А., Д.
Гоулд. Учебник Maya. Полное руководство по программированию Maya. Подробное
описание языка MEL и интерфейса C++
API.