Вы находитесь на странице: 1из 7

Наукосфера.

№3(2), 2021 Технические науки

УДК 004.582

МОДУЛЬ УПРАВЛЕНИЯ ИГРОВЫМ ПРОЦЕССОМ ПРИ ПОМОЩИ


ЖЕСТОВ И ДВИЖЕНИЯ ГОЛОВЫ

GAME CONTROL MODULE USING GESTURES AND HEAD


MOVEMENT

БАЙЦЕРОВ ДЕНИС СЕРГЕЕВИЧ,


Санкт-Петербургский национальный исследовательский университет информа-
ционных технологий, механики и оптики.

BAYTSEROV DENIS SERGEEVICH,


Saint-Petersburg National Research University of Information Technologies, Mechan-
ics and Optics.

В статье приведен метод реализации модуля управления игровым процессом при помощи изме-
нения положения головы. Проводятся сравнения решения автора с другими решениями. Описываются
разные методы и раскрываются проблемы взаимодействия сторонних библиотек вместе с Unreal
Engine 4. Приводится архитектура выбранного решения. По результатам работы были выявлены до-
стоинства и недостатки выбранного способа управления.

The article presents a method for implementing a game control module by changing the position of the
head. Comparisons of the author's solution with other solutions are made. Various methods are described and
problems of interaction of third-party libraries with Unreal Engine 4 are revealed. The architecture of the
chosen solution is given. According to the results of the work, the advantages and disadvantages of the selected
control method were identified.

Ключевые слова: Unreal Engine 4, OpenCV, лицевые ориентиры, программирование, человеко-


машинное взаимодействие.

Keywords: Unreal Engine 4, OpenCV, facial landmarks, programming, human-machine interaction.

В настоящее время не редкостью являются случаи, когда человек не может управлять


своим компьютером посредством стандартных решений вроде клавиатуры и мыши. На
данный момент таким людям приходится пользоваться самодельными устройствами
или находить нетривиальные способы использования стандартных решений. Моя работа пред-
лагает одно из решений данной проблемы, которая поможет облегчить управление компьюте-
ром во время игры.
Моё решение предлагает получать входные данные для управления мышью через веб-
камеру, которая в пору пандемии есть практически у каждого. Решение разработано в виде
плагина для проекта с использованием Unreal Engine 4 версии 25.4, что позволит переносить
модуль управления в другие проекты с минимальным количеством действий.
Существуют другие решения данной проблемы. Например, очки Tobii Pro Glasses фик-
сируются на голове пользователя и вычисляют точку на мониторе, на которую смотрит поль-
зователь. Это довольно удобно, однако для точного вычисления голова пользователя должна
находиться на определённом месте перед экраном, а выход за неё приводит к сильному сни-
жению точности вычисления. Другой вариант решения, использует сверточные нейросети для
вычисления направления глаз и картинку с веб-камеры, однако этот способ крайне зависим от

ISSN 2542-0402 145


Наукосфера. №3(2), 2021 Технические науки

качества получаемого изображения и всё еще имеет проблемы с получением корректного по-
ложения курсора на экране.
Почему OpenCV? OpenCV - библиотека компьютерного зрения с открытым исходным
кодом. Включение в проект OpenCV в качестве зависимости позволят разработчикам созда-
вать приложения с использованием дополненной виртуальной реальностью. В разрабатывае-
мом модуле OpenCV используется для работы с веб-камерой, обработки получаемого с нее
изображения и разметки ключевых точек лица с помощью предобученной модели.
Проект Unreal Engine 4 строится на модульной архитектуре. Это означает, что у нас есть
возможность поделить наш код на абстрактные секции и сделать его более многоразовым и
структурированным. Также в Unreal Engine 4 существует система плагинов. Плагины следует
воспринимать как проект, который можно вставить в другой проект. Как и проект, он может
состоять из нескольких модулей и имеет свой файл проекта (Рис. 1).

Рис. 1. Структура проекта в файловой системе.

Связывание OpenCV с Unreal Engine 4 возможно произвести с помощью UnrealBuildTool.


Средства Unreal Engine 4 уже поддерживают подключение сторонних библиотек и заголовков
в проект, однако для нашего проекта это не подходит, так как подключение заголовков
OpenCV вызывает коллизию пространств имён с системой Unreal Engine. Для избежания этой
проблемы было принято решение о выносе отдельных функций, которые работают с библио-
теками OpenCV, в динамическую библиотеку и производить явную загрузку динамической
библиотеки в Unreal Engine (Рис. 2).
Для детекции лица в OpenCV существует каскадный классификатор для лиц, однако он
выдавал крайне неточные результаты. Взамен этому инструменту, в дополнительных модулях
OpenCV, которые не входят в стандартные модули, есть инструмент, который позволяет ис-
пользовать обученные глубокие нейронные сети без подключения соответствующих фрейм-
ворков, на которых они были обучены. Для детекции лиц была взята предобученная в Caffe
нейросеть, которая показала высокую точность вместе с достаточной скоростью работы.
Для детекции ключевых точек лица был использован Facemark API из модуля OpenCV
Face. Он имеет три различных реализации обнаружения ориентиров:

ISSN 2542-0402 146


Наукосфера. №3(2), 2021 Технические науки

1. FacemarkKazemi [1]
2. FacemarkAAM [2]
3. FacemarkLBF [3]
Плагин использует реализацию FacemarkLBF, на которую доступна предобученная мо-
дель, позволяющая в реальном времени определять ключевые точки лица.
Для определения жестов лица (табл. 1) используются формулы соотношения:
1. Соотношение сторон глаза (EAR) вычисляю по формуле [4]
𝐸𝐴𝑅 = (||𝑝2 − 𝑝6|| + ||𝑝3 − 𝑝5||) ÷ (2 ∗ ||𝑝1 − 𝑝4||), где p1-p6 - ключевые точки
глаза. (Рис. 3)

Рис. 2. UML-диаграмма вынесенных в dll функций.

Рис. 3. График зависимости EAR от положения ключевых точек глаза.

2. По аналогии с соотношением сторон глаза была выведена формула для соотношения сто-
рон рта (MAR):
(||𝑝2 − 𝑝8|| + ||𝑝3 − 𝑝7|| + ||𝑝4 − 𝑝6||)
𝑀𝐴𝑅 =
(2 ∗ ||𝑝1 − 𝑝5||)

ISSN 2542-0402 147


Наукосфера. №3(2), 2021 Технические науки

, где p1-p8 - ключевые точки рта. (Рис. 4)

Рис. 4. Ключевые точки рта.

3. Формула соотношения положения бровей:


(max(||p1 − p2|| + ⋯ + ||p1 − p6||) , (||p1 − p7|| + ⋯ + ||p1 − p11||))
𝐵𝐴𝑅 =
4 ∗ ||p1 − p12||
, где p1 - p12 - ключевые точки бровей. (Рис. 5)

Рис. 5. Ключевые точки, который используются для высчитывания BAR.

Для каждого вида жеста реализована система валидации, которая заключается в про-
верке получаемых данных на определенном для каждого жеста отрезке времени.
В проекте была создана библиотека Blueprint’ов “UFLD_BPL” (Рис. 2) в C++, в которой
реализуется явная загрузка динамической библиотеки и получение указателей на используе-
мые функции. Данное решение позволяет удобно использовать функции из внешней библио-
теки как в C++, так и в системе визуального программирования Blueprint.

ISSN 2542-0402 148


Наукосфера. №3(2), 2021 Технические науки

Таблица 1. Жесты человеческого лица и их значение для системы


Действие Значение

Активация/деактивация контроля мышью

(Открытие рта)

Левый клик мыши

(Моргание)

Правый клик мыши

X 2 (Моргание два раза)

Активация/деактивация режима прокрутки

(Прищурить глаза)

Активация/деактивация режима кликов


мыши

(Поднятие бровей)

Движения курсора / поворот колеса мыши

(Движение головой)

Для тестирования плагина был создан класс “AWebcamReader”, унаследованный от


класса “AActor”, в котором, с помощью методов библиотеки “UFLD_BPL”, управлял логикой
поведения. Для начала работы системы требуется, чтобы пользователь самостоятельно выбрал

ISSN 2542-0402 149


Наукосфера. №3(2), 2021 Технические науки

положение своей головы и активировал режим контроля мыши однократным открытием рта.
С этого момента игрок может управлять движениями мыши отводя нос от центра выделенной
области. Для переключения режимов работы мыши используются соответствующие жесты
(Табл. 1). Для симуляции мыши была создана Blueprint библиотека “UCursor_BPL” (Рис. 6),
это позволяет избежать излишнего копирования кода. “UCursor_BPL” симулирует клики и
движения мыши, это означает, что все настройки пользовательского ввода и событий для
мыши в игре будут работать также, как если бы мы управляли игровым процессом стандарт-
ной мышью. Для гибкой настройки движения курсора по экрану был создан класс
“FGameAnalogCursor”. Он реализует ускорение скорости по мере движения, учитывание ми-
нимального значения сигнала ввода для движения мыши. Однако такой класс не доступен для
настройки значений по умолчанию в редакторе Unreal Engine 4, для решения данной проблемы
в плагине реализован класс “UCamMouseCursorSettings”, который содержит значения по умол-
чанию, график ускорения и указатель на экземпляр класса “FGameAnalogCursor” (Рис. 7).

Рис. 6. UML-диаграмма классов “AWebcamReader”, “UCursor_BPL”,


“FGameAnalogCursor”.

ISSN 2542-0402 150


Наукосфера. №3(2), 2021 Технические науки

Рис. 7. Скриншот настроек “UCamMouseCursorSettings” в редакторе Unreal Engine 4.

По результатам работы были соблюдены условия для наиболее простого развертывания


плагина в других проектах, а также полностью перенесён функционал мыши на использование
веб-камеры. Были выявлены недостатки, при определении точек лица, при большом угле по-
ворота головы точки начинают “дребезжать” или занимать неправильное место. Однако, в це-
лом, данное решение работоспособно, как показала практика, полноценное использование
подходит лучше всего для игровых жанров, где не требуется быстрота и точность управления,
например, пошаговые стратегии.

СПИСОК ЛИТЕРАТУРЫ

1. V.Kazemi, J. Sulliva One Millisecond Face Alignment with an Ensemble of Regression Trees //
[Электронный ресурс]. URL: http://www.csc.kth.se/~vahidk/papers/KazemiCVPR14.pdf (дата обращения:
16.03.2021).
2. G. Tzimiropoulos, M. Panti Optimization problems for fast AAM fitting in-the-wild. //
[Электронный ресурс]. URL: https://ibug.doc.ic.ac.uk/media/uploads/documents/tzimiro_pantic_
iccv2013.pdf (дата обращения: 16.03.2021).
3. Shaoqing Ren, Xudong Cao, Yichen Wei, Jian Sun Alignment at 3000 FPS via Regressing Local
Binary Features // [Электронный ресурс]. URL: http://www.jiansun.org/papers/ CVPR14_FaceAlign-
ment.pdf (дата обращения: 16.03.2021).
4. Tereza Soukupova´ and Jan Cˇ ech. Real-Time Eye Blink Detection using Facial Landmarks. In 21st
Computer Vision Winter Workshop, February 2016. // [Электронный ресурс]. URL: https://vision.fe.uni-
lj.si/cvww2016/proceedings/papers/05.pdf (дата обращения: 23.03.2021).

© Байцеров Д. С., 2021.

ISSN 2542-0402 151