查看原文
其他

Unite 2017 | 运用Unity开发HoloLens应用实战技巧(上)

鲍健运 Unity官方平台 2022-05-07

在Unite 2017 Shanghai的VR/AR专场,Unity技术经理鲍健运带来了《运用Unity开发HoloLens应用实战技巧》的主题分享,从设备介绍、开发环境部署,到实际的HoloLens应用开发案例等,全方位分享了使用Unity进行HoloLens内容开发的最新内容。


今天这篇文章将为大家分享上半部分,介绍一些准备工作与构建配置。


附演讲的现场视频(时长30分钟,流量党随意):


https://v.qq.com/txp/iframe/player.html?vid=w0517ktpo7l&width=500&height=375&auto=0

什么是HoloLens?

Microsoft HoloLens是微软Windows Holographic的使用主要混合现实设备,是一款Windows 10的便携可穿戴智能产品。它采用先进的传感器、高清晰度3D光学头置式全角度透镜显示器以及环绕音效,进而其能够在增强现实中用户界面与用户透过凝视、语音和手势互相交流。

HoloLens与Unity

Unity是微软官方指定应用开发引擎,Microsoft和Unity的密切合作,帮助Unity开发人员提供为HoloLens创建混合现实(MR)应用程序的工具。自Unity 5.5正式发布开始,开发者就可以使用Unity制作自己的HoloLens应用。

开发准备

开发HoloLens应用有些很必要的准备,主要分为两方面。

系统准备最低要求:

  • 64 位 Windows 10 专业版、企业版或教育版(特别提醒:家庭版不支持)

  • 4 核及以上 64 位 CPU

  • 8G 及以上内存

  • 配置虚拟化与 Hyper-V

  • GPU 支持 DirectX 11.0 或以上,WDDM 1.2 驱动及以上


需要安装的软件:

  • Unity 5.6

  • Visual Studio 2015 Update 3(Visual Studio 2017也支持,但本文介绍以前者为主)

  • Tools (1.4) 和 Windows 10 SDK (10.0.10586)

  • HoloLens Emulator

  • Windows Device Portal(如果有HoloLens设备,建议安装)


详情请参照微软官方的网址:

https://developer.microsoft.com/en-us/windows/mixed-reality/install_the_tools


项目搭建

第一步:新建Unity项目

启动Unity Launcher,新建一个3D项目,填写Project Name并指定保存路径。然后,点击“Create project”创建。



第二步:调整主相机

在新建的默认空场景的Hierarchy层级视图中,我们会看到仅有Main Camera和Directional Light两个GameObject。这时需要选中Main Camera,并在检视视图中对其的参数进行调整。



首先,需要将其Transform的Position设置为 (0,0,0),使得摄像机在坐标系原点,一方面便于MR体验的设计,另一方面也利于MR视频录制等工作。接着,将Clear Flags设置为Solid Color,Background值为RGBA全0,这样背景就完全是黑色了。背景的全黑色是便于HoloLens在系统内部做视频流内容融入背景,相当于电影特效拍摄时绿幕的作用。然后,将Clipping Planes的Near设置为0.3 ~ 0.85之间的值,Near 0.85就是近端 0.85 米的剔除平面,这正好接近于普通人的臂长。



Clipping Planes依据是MR理想体验范围是半径在1.25~5米的距离,显示的对象最舒服的位置就是在2米左右。




第三步:设置品质


其实就是设置渲染的品质。点击Unity编辑器菜单栏Edit→Project Settings→Quality,打开品质设置视图。找到Windows Store列,在Default选择Fastest,最快速的渲染,即在保证渲染速率的情况下牺牲部分画面质量。然后,确认Fastest为绿色的勾。为何要做这样的设置呢?因为HoloLens拥有一个移动级GPU,不可能像桌面级的GPU那样性能强劲,但是对于MR体验而言,帧速率更为重要。



注意:本文中关于HoloLens系统的大部分设置还是属于Windows Store相关的,在Unity 2017.1版本开始,统一会切换到UWP(Universal Windows Platform,微软Windows通用应用平台缩写)。


第四步:设置构建


点击Unity编辑器菜单栏File→Build Settings,打开构建窗口。在Platform列表选择“Windows Store”,并点击Switch Platform切换发布平台。在右边,选择SDK为Universal 10,针对Windows 10 SDK,将Target device设定为HoloLens。而UWP Build Type使用D3D模式,UWP的SDK可以选择10.0.10586.0或其他的。如果想本地调试Build and Run on则指定Local Machine,以及同样便于本地测试可以勾选Unity C# Project用于输出Visual Studio的项目工程。最后,记得点击Add Open Scenes,将当前Scene添加到Scenes In Build。



UWP Build Type 

UWP构建类型主要影响我们Build出来的App是用哪种视图模式。


  • D3D:就是Direct 3D,即3D视图应用。作为HoloLens这种混合现实设备,在空间中画面表现推荐使用D3D类型,已获得不错的MR视觉体验。

  • XAML:如果熟悉Microsoft UWP应用开发的话,应该会比较了解这种2D视图应用类型制作的内容。当然使用这种模式可以做HoloLens开发,但是大多数情况就是在3D空间中,展示2D的应用面板或者做系统的2D虚拟输入键盘。相对于D3D设计与展现的可能性就有限得多,因此不推荐使用。


UWP SDK

现在一共有4个SDK可供选择,而每个代表Windows 10更新中的一个里程碑。


  • Latest installed :Unity 5.6 自动对应现有最新的SDK版本 10.0.15063。这个SDK理想的开发环境组合是需要安装Microsoft Creators SDK和Visual Studio 2017。

  • 10.0.10240.0:这个是最早支持 HoloLens 的Windows 10 SDK版本,很多内容已经过时,不建议选择。

  • 10.0.10586.0:现在HoloLens硬件设备最广泛支持的SDK版本,支持.Net 3.5,这里比较推荐选择这个版本的SDK。

  • 10.0.14393.0:对应Windows 10 Anniversary 版本,虽然现在还有不少硬件暂不支持,但是如果想使用Unity编辑器内模拟HoloLens,可以选择这个SDK,下文中会具体提及。


第五步:开发选项


点击Build Settings窗口的Player Settings按钮,在检视视图中打开相关的窗口。在完善Company Name与Product Name信息后,选择Windows Store选项卡中的Other Settings进行进一步的设置。勾选Virtual Reality Supported启用VR的支持,设定系统为Windows Holographic。



Depth Format

深度缓冲区通常组织成一个保存每个屏幕像素深度的x-y二维数组。如果场景中的另外一个物体也在同一个像素生成渲染结果,那么GPU就会比较二者的深度,并且保留距离观察者较近的物体。然后这个所保留的物体点深度保存到深度缓冲区中。最后,GPU就可以根据深度缓冲区正确地生成通常的深度感知效果:较近的物体遮挡较远的物体。这个过程叫作z消隐。

深度缓冲的分辨率对于场景质量有很大的影响:当两个物体非常接近的时候,16位的深度缓冲区可能会导致“z缓冲区fighting”的人为噪声。使用32位的深度缓冲区就会表现得较好。

单通道立体渲染

Hololens是使用双显示的,这个优化非常实用。为什么呢?单通道立体渲染,改变了之前先渲染左眼,再渲染右眼的模式,一次性完成两只眼睛的渲染。通常情况下可以把Main Thread上的渲染时间减半,也可以降低Render Thread上所消耗的渲染时间。

下图是标准的VR渲染模式: 先完成左眼的渲染, 然后再做右眼的渲染。


而下图是单通道立体渲染的,这种模式下, Unity会为左右眼各分配一个Render Texture做渲染, 目的是和非VR模式下的渲染方式尽可能的兼容。



这种模式的原理上,我们会先向主线程发送一组绘图指令, 然后把这组指令转换成渲染线程上两组交叉存取的指令, 这样我们就可以把场景中的每一个物体同时渲染到左右眼。为了支持上述功能, 我们现在的做法是分配一个两倍宽度的Render Texture, 这样左眼和右眼会得到这张Render Texture的一半。

第六步:生成Visual Studio项目


回到Build Settings窗口,点击Build按钮开始构建Visual Studio项目。如果是第一次构建,会弹出指定存放工程文件夹的窗口,新建App文件夹并选择保存,构建就开始进行直至完毕。



第七步:Visual Studio运行模拟器


打开刚才新建的App文件夹,启动这个同名的Visual Studio项目工程。将Target设置为Release,构建architecture为x86,以及device为HoloLens Emulater。最后,点击绿色箭头启动模拟器运行,浏览效果。



第八步:Unity编辑器运行项目


当操作系统是Windows 10 Anniversary或以上版本时,并且安装的Windows 10 SDK支持10.0.14393.0及以上时,这个便利的功能就可以使用了。


启用这个功能需要先打开一个特定的窗口。点击Unity编辑器菜单栏Window→Holographic Emulation,打开全息模拟器窗口。



结语

本文暂时为大家分享到这里,下一篇将继续为大家讲解Unity编辑器中的全息模拟器,并以实际案例演示如何利用Unity引擎与HoloLens设备的空间识别等功能,来开发各种精彩的混合现实应用。


如果您有关于使用Unity开发HoloLens应用的相关问题,也欢迎访问Unity中文官方社区(unitychina.cn)。


更多Unity相关技术文章

Unity中可用于VR环境的空间化音效

Unity 5.6中的混合光照

Unity实验预览版支持为macOS开发VR及AR内容

基于Animation Instancing的大规模人群模拟

eaglEEye性能测试平台详解


点击“阅读原文”访问Unity官方中文社区

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存