Академический Документы
Профессиональный Документы
Культура Документы
УДК 004.582
В статье приведен метод реализации модуля управления игровым процессом при помощи изме-
нения положения головы. Проводятся сравнения решения автора с другими решениями. Описываются
разные методы и раскрываются проблемы взаимодействия сторонних библиотек вместе с 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.
качества получаемого изображения и всё еще имеет проблемы с получением корректного по-
ложения курсора на экране.
Почему OpenCV? OpenCV - библиотека компьютерного зрения с открытым исходным
кодом. Включение в проект OpenCV в качестве зависимости позволят разработчикам созда-
вать приложения с использованием дополненной виртуальной реальностью. В разрабатывае-
мом модуле OpenCV используется для работы с веб-камерой, обработки получаемого с нее
изображения и разметки ключевых точек лица с помощью предобученной модели.
Проект Unreal Engine 4 строится на модульной архитектуре. Это означает, что у нас есть
возможность поделить наш код на абстрактные секции и сделать его более многоразовым и
структурированным. Также в Unreal Engine 4 существует система плагинов. Плагины следует
воспринимать как проект, который можно вставить в другой проект. Как и проект, он может
состоять из нескольких модулей и имеет свой файл проекта (Рис. 1).
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. По аналогии с соотношением сторон глаза была выведена формула для соотношения сто-
рон рта (MAR):
(||𝑝2 − 𝑝8|| + ||𝑝3 − 𝑝7|| + ||𝑝4 − 𝑝6||)
𝑀𝐴𝑅 =
(2 ∗ ||𝑝1 − 𝑝5||)
Для каждого вида жеста реализована система валидации, которая заключается в про-
верке получаемых данных на определенном для каждого жеста отрезке времени.
В проекте была создана библиотека Blueprint’ов “UFLD_BPL” (Рис. 2) в C++, в которой
реализуется явная загрузка динамической библиотеки и получение указателей на используе-
мые функции. Данное решение позволяет удобно использовать функции из внешней библио-
теки как в C++, так и в системе визуального программирования Blueprint.
(Открытие рта)
(Моргание)
(Прищурить глаза)
(Поднятие бровей)
(Движение головой)
положение своей головы и активировал режим контроля мыши однократным открытием рта.
С этого момента игрок может управлять движениями мыши отводя нос от центра выделенной
области. Для переключения режимов работы мыши используются соответствующие жесты
(Табл. 1). Для симуляции мыши была создана Blueprint библиотека “UCursor_BPL” (Рис. 6),
это позволяет избежать излишнего копирования кода. “UCursor_BPL” симулирует клики и
движения мыши, это означает, что все настройки пользовательского ввода и событий для
мыши в игре будут работать также, как если бы мы управляли игровым процессом стандарт-
ной мышью. Для гибкой настройки движения курсора по экрану был создан класс
“FGameAnalogCursor”. Он реализует ускорение скорости по мере движения, учитывание ми-
нимального значения сигнала ввода для движения мыши. Однако такой класс не доступен для
настройки значений по умолчанию в редакторе Unreal Engine 4, для решения данной проблемы
в плагине реализован класс “UCamMouseCursorSettings”, который содержит значения по умол-
чанию, график ускорения и указатель на экземпляр класса “FGameAnalogCursor” (Рис. 7).
СПИСОК ЛИТЕРАТУРЫ
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).