环境

  • HoloLens
  • Unreal Engine 4.26.2(也可以使用UE5)
  • Visual Studio 2022
    • .NET 桌面开发
    • 使用 C++ 的桌面开发
    • 通用 Windows 平台 (UWP) 开发
    • 使用 Unity 进行游戏开发(如果计划使用 Unity)

需要安装UE4带HoloLens

杂项

项目设置里面勾选Start in AR才能在HoloLens里面全屏跟随视角播放 渲染设置Forward Render减少开销 blender模型导出fbx导入虚幻,模型光照出现反向,面朝光照的暗,背光的亮,导入的时候取消勾选生成光照UV

插件安装

EPIC虚幻商城搜索安装两个插件:, Mixed Reality Toolkit Hub, Mixed Reality UX Tools HoloLens上安装OpenXR运行时(如果使用OpenXR插件),Remote Hologram(流式调试工具)

注意,Microsoft OpenXR插件目录下的nuget.exe是损坏的,需要自行下载替换,不然编译的时候会报错 >

UE4自带的Microsoft Windows Mixed Reality要启用,如果安装了Microsoft OpenXR(虚幻商城),跟前者冲突,而且测试过后者不能设置输入?还是名称变了,前者在使用远程调试时会有目视数据,后者不会有,需要实机安装 这两个插件二选一

rpclib导入

UE4的第三方源码库里面有rpclib可以用作通信,修改编译配置文件,增加Windows下的导入头文件可以实现库的导入

bEnableExceptions = true;
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PrivateDependencyModuleNames.AddRange(new string[] {  });
// 添加rpclib
AddEngineThirdPartyPrivateStaticDependencies(Target, "RPCLib");
string rpcLibDir = Path.Combine(Target.UEThirdPartySourceDirectory, "rpclib");
PublicIncludePaths.Add(Path.Combine(rpcLibDir, "Source", "include"));

然后把导入头文件加到源码目录(该头文件从UE4ML插件里的做的修改)

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once

#pragma push_macro("check")
#undef check

// we define 'nil' since on Macs we treat C++ as Objective-C++
#pragma push_macro("nil")
#undef nil

#pragma warning(disable:4005)
#pragma warning(disable:4668)

#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundef"
#pragma clang diagnostic ignored "-Wshadow"
#endif

#ifndef RPCLIB_MSGPACK
#define RPCLIB_MSGPACK clmdep_msgpack
#endif /* ifndef RPCLIB_MSGPACK */

#include "Windows/PreWindowsApi.h"

#include "rpc/client.h"
#include "rpc/server.h"
#include "rpc/this_handler.h"
#include "rpc/msgpack.hpp"

#include "Windows/PostWindowsApi.h"

#ifdef __clang__
#pragma clang diagnostic pop
#endif

#pragma warning(default:4005)
#pragma warning(default:4668)

#pragma pop_macro("check")
#pragma pop_macro("nil")

Conan、Vcpkg导入第三方库

参考 https://github.com/BlurringShadow/ue-vcpkg-integrate 的工程格式,但是需要添加HoloLens平台,Windows的库和HoloLens的库需要分开编译放入

导入的第三方库需要注意是否和UE的自带的库冲突,冲突的库需要做隔离。比如Grpc依赖zlib,但UE自带zlib库,则需要Grpc把zlib静态链接到库里面防止链接的时候冲突(修改UnrealBuildTool脚本不知道能否解决)

HoloLens设置立方体图标

项目设置>平台>HoloLens>打包>中性资产>Images>3D标志,勾选然后导入glb模型,这样打包的应用程序在启动后会出现一个立方体包裹的模型,点击播放然后进入应用程序

打包好的软件使用Web安装出错

使用HoloLens管理Web把安装包上传到设备上,用设备的文件管理器点击安装(猜测由于Smart Screen在没联网的情况下安装包可能不通过),只需要拷贝xxx.appboundle

教程

视频教程: https://dev.epicgames.com/community/learning/courses/M97/hololens-2-mixed-reality-production-for-unreal-engine/orLB/introduction-to-hololens-2-mixed-reality-production-for-unreal-engine

文字教程: https://learn.microsoft.com/zh-cn/windows/mixed-reality/develop/unreal/unreal-development-overview?tabs=ue427%2Cmrtk%2Casa%2CD365