设为首页收藏本站

微软Hololens全息现实网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

一键登录:

查看: 597|回复: 1

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

[复制链接]
发表于 2017-7-10 15:42:04 | 显示全部楼层 |阅读模式

在Unite 2017 Shanghai的VR/AR专场,Unity技术经理鲍健运带来了《运用Unity开发HoloLens应用实战技巧》的主题分享,从设备介绍、开发环境部署,到实际的HoloLens应用开发案例等,全方位分享了使用Unity进行HoloLens内容开发的最新内容。 今天这篇文章将为大家分享上半部分,介绍一些准备工作与构建配...

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


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


附演讲的现场视频(时长30分钟):


什么是HoloLens?
b2719ad270392493eab3c59fb65dbaf9.jpg

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


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


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


系统准备最低要求:

64 位 Windows 10 专业版、企业版或教育版(特别提醒:家庭版不支持)4 核及以上 64 位 CPU8G 及以上内存配置虚拟化与 Hyper-VGPU 支持 DirectX 11.0 或以上,WDDM 1.2 驱动及以上


需要安装的软件:

Unity 5.6Visual Studio 2015 Update 3(Visual Studio 2017也支持,但本文介绍以前者为主)Tools (1.4) 和 Windows 10 SDK (10.0.10586)HoloLens EmulatorWindows Device Portal(如果有HoloLens设备,建议安装)


详情请参照微软官方的网址:https://developer.microsoft.com/ ... y/install_the_tools
项目搭建第一步:新建Unity项目

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


20740da8098c7d5fc0ab1670075c1056.jpg


第二步:调整主相机

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


df832cb6504a29060138954c19c5a17d.png


首先,需要将其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 米的剔除平面,这正好接近于普通人的臂长。


2088234975e01ed188e4bdc354d65b34.jpg


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



c622baff36628179781a1779f18360d7.jpg



第三步:设置品质

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


6391057eb54c5064eabdeddb01e981d5.jpg


注意:本文中关于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。



b3b1adb9eb3a07a494404030b738ff53.jpg


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。



f0637d5df8a4d4f74266b544209eae34.jpg


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


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


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


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

7676ba58e0fef94ad8128fc48a25bc92.gif


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


886e6c75b4b760360d8c970b50738dba.gif


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


第六步:生成Visual Studio项目

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



9d9172183432d51bf2a5aeede942d6ed.jpg


第七步:Visual Studio运行模拟器

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


2dedf99e2413f88f9c97bf0c454176f6.png


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

当操作系统是Windows 10 Anniversary或以上版本时,并且安装的Windows 10 SDK支持10.0.14393.0及以上时,这个便利的功能就可以使用了。
启用这个功能需要先打开一个特定的窗口。点击Unity编辑器菜单栏Window→Holographic Emulation,打开全息模拟器窗口。


e56498bf683de2d9a94dae87376c8846.jpg


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


论坛(HoloLens全息现实网): http://hololens8.cn

VR/AR/HoloLens开发者QQ群:220104582
VR/AR资源分享QQ群:281921834
HoloLens/VR/AR交流QQ群:433190386





上一篇:在Unity中如何利用真实物理空间校正虚拟世界
下一篇:Unite 2017 | 运用Unity开发HoloLens应用实战技巧(下)
发表于 2017-7-10 16:05:26 | 显示全部楼层
太好了!
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

注册验证邮件查收提醒:

由于各大邮箱政策原因,

如果没收到邮件提醒,

您的注册验证邮件可能

被投送到您邮箱的垃圾箱,

请注意查收验证哦


QQ|小黑屋|Hololens全息现实网 ( 京ICP备15026232号   点击这里给我发消息

GMT+8, 2018-1-24 07:51 , Processed in 0.424877 second(s), 32 queries .

Powered by Hololens全息现实网 X3.2

© 2001-2017 Hololens全息现实网

快速回复 返回顶部 返回列表