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

在Unite 2017 Shanghai的VR/AR专场,Unity技术经理鲍健运带来了使用Unity开发HoloLens平台应用相关的主题分享。今天这篇文章将为大家分享此次演讲的主要技能点。

什么是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/ ... y/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,打开全息模拟器窗口。

你可能感兴趣的:(HoloLens)