Ввод взгляда
Входные данные взгляда в приложениях смешанной реальности — это сведения о том, на что смотрят ваши пользователи. Когда камеры отслеживания взгляда на устройстве соответствуют лучам в мировом пространстве Unreal, данные о линии зрения пользователя становятся доступными. Взгляд может использоваться как в схемах, так и в C++, и является основной функцией для таких механизмов, как взаимодействие с объектами, поиск путей и элементы управления камерой.
Включение отслеживания взгляда
- В параметрах > проекта HoloLens включите возможность ввода взгляда :
- Создание нового субъекта и его добавление в сцену
Примечание
Отслеживание взгляда HoloLens в Unreal имеет только один луч взгляда для обоих глаз. Стереоскопическое отслеживание, для которого требуется два луча, не поддерживается.
Использование функции отслеживания взгляда
Сначала убедитесь, что устройство поддерживает отслеживание взгляда с помощью функции IsEyeTrackerConnected . Если функция возвращает значение true, вызовите Метод GetGazeData , чтобы найти, где глаза пользователя смотрят в текущем кадре:
Примечание
Точка фиксации и значение достоверности недоступны в HoloLens.
Используйте источник и направление взгляда в трассировке линии, чтобы узнать, где именно ищут пользователи. Значение взгляда — это вектор, начинающийся с начала взгляда и заканчивающийся в источнике, а также направление взгляда, умноженное на расстояние трассировки линии:
Получение ориентации головы
Вы также можете использовать поворот монитора HMD, чтобы представить направление головы пользователя. Вы можете получить направление движения пользователей, не включив возможность ввода взгляда, но вы не получите никаких сведений об отслеживании взгляда. Добавьте ссылку на схему в качестве контекста мира, чтобы получить правильные выходные данные:
Примечание
Получение данных HMD доступно только в Unreal 4.26 и более поздних версиях.
Использование C++
- В файле build.cs игры добавьте EyeTracker в список PublicDependencyModuleNames :
PublicDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Engine",
"InputCore",
"EyeTracker"
});
- В разделе Файл/ Новый класс C++ создайте новый субъект C++ с именем EyeTracker.
- Решение Visual Studio откроет новый класс EyeTracker. Выполните сборку и запустите, чтобы открыть игру Unreal с новым субъектом EyeTracker. Найдите "EyeTracker" в окне Place Actors (Место субъектов ) и перетащите класс в окно игры, чтобы добавить его в проект:
- В EyeTracker.cpp добавьте элементы для EyeTrackerFunctionLibrary и DrawDebugHelpers:
#include "EyeTrackerFunctionLibrary.h"
#include "DrawDebugHelpers.h"
Прежде чем пытаться получить данные о взгляде, убедитесь, что устройство поддерживает отслеживание взгляда с помощью UEyeTrackerFunctionLibrary::IsEyeTrackerConnected . Если отслеживание глаз поддерживается, найдите начало и конец луча для трассировки линии из UEyeTrackerFunctionLibrary::GetGazeData. После этого можно создать вектор взгляда и передать его содержимое в LineTraceSingleByChannel для отладки результатов попадания в луч:
void AEyeTracker::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if(UEyeTrackerFunctionLibrary::IsEyeTrackerConnected())
{
FEyeTrackerGazeData GazeData;
if(UEyeTrackerFunctionLibrary::GetGazeData(GazeData))
{
FVector Start = GazeData.GazeOrigin;
FVector End = GazeData.GazeOrigin + GazeData.GazeDirection * 100;
FHitResult Hit Result;
if (GWorld->LineTraceSingleByChannel(HitResult, Start, End, ECollisionChannel::ECC_Visiblity))
{
DrawDebugCoordinateSystem(GWorld, HitResult.Location, FQuat::Identity.Rotator(), 10);
}
}
}
}
Следующий этап разработки
Если вы следуете изложенным нами инструкциям по разработке для Unreal, вы как раз прошли половину в изучении основных стандартных блоков MRTK. Отсюда вы можете перейти к следующему стандартному блоку:
Или перейдите к возможностям и API платформы смешанной реальности:
Вы можете в любой момент вернуться к этапам разработки для Unreal.