第一章 - 设置摄像机
我们需要对Unity中的主摄像机做一些设置上调整来确保它能在Holoens的应用程序中处理头部跟踪动然后正确的渲染影像。
首先,想要更好的放置你的全息应用程序,我们必须先知道用户的位置在哪,为了方便起见,我们会使用世界原点(X:0,Y:0,Z:0)作为用户的起始位置,也就是主摄像机的位置,你可以将主摄像机想象为用户的双眼,随着用户头部的移动,主摄像机的位置也会不断更新。以此主摄像机的起始位置为参照,我们便能方便的控制和调整全息图像和用户之前的距离。 (注意,在Unity中开发Hololens的应用,一个Unit单位就代表现实中的一米)
- 在Hierachy面板中单击选中“Main Camera”
- 接着在Inspector面板中,找到Transform组件然后将Position从(X:0,Y:1,Z:-10)更改为(X:0,Y:0,Z:0)
接下来,我们需要更改主摄像机的背景设置,因为在一个全息的应用程序中,摄像头渲染的全息图像应该使用真实世界的影像来作为背景,而非采用默认的Skybox质地作为渲染背景。
- 在Hierachy面板中继续选中“Main Camera”,在Inspector面板中找到Camera组件,然后在Clear Flags下拉框中将设置从Skybox改为Solid Color
- 使用颜色选择器将Background设置为RGBA (0,0,0,0)即纯黑色。(这样做的目的其实是为了方便Hololens在运行时将纯黑的背景设置为透明,继而能显示真实世界的影像画面。其原理和电影中制作特效时需要演员在先在一个特定颜色的帘幕前做动作,然后在后期编辑时再用特效场面来替换掉其原有的纯色背景是完全一样的)
最后,为了避免渲染的全息影像太过靠近用户的双眼,需要在Inspector面板中将Camera组件的Near clicp(视距)设置为Hololens的推荐值:0.85米,即双眼离全息影像的距离至少为0.85米远
第二章 - 创建全息应用
在Unity中创建一个全息影像的应用和创建一个普通的Unity项目并没有什么不同,当项目创建完成后,你可以基于Unity自带的坐标系统,很方便的放置一个3D模型(即最终输出为全息影像)在你希望的位置。别忘了Unity中的坐标系统既代表了真实世界的投影,Unity中的1个单位就代表真实世界中的1米 (比如将一个方块Cube 的X值设置为1,则以为着以世界原点为基准,该物体往X方向移动1米)
- 在Hierachy面板左上方的Create下拉框中选择新建一个3D Object > Cube
- 在Hierarchy面板中单击选中新建的这个Cube
- 在对应的Inspector面板中找到Transform 组件,并将其Position设置为(X:0,Y:0,Z:0)
- 在Transform组件中将Rotation 设置为 (X:45,Y:45,Z:45)来转动方块使它更具立体感,与此同时,将Scale设置为(X:0.25,Y:0.25,Z:0.25)来缩小方块使它的长,宽,高缩小至大约0.25米
- 选择Unity目录的File > Save Scene来保存当前的场景的改动
第三章 - 从Unity中导出至Visual Studio
当你跟随着之前的章节完成你的第一个全息应用的创建后,接下来要做到事便是从Unity中将项目导出到 Visual Studio中进行编译以便最终将你的全息应用部署到Hololens 设备或者Hololens模拟器中。在导出之前,我们需要在Unity对项目做一些设置上的调整
Unity 中的性能设置
对于Hololens而言,维持一个高刷新率是至关重要的,它直接影响到全息影像在现实世界中呈现的效果以及用户的感受。因此,我们有必要稍微牺牲一些画面上的质量以换取一个较高的性能。具体细节可参阅官方关于Unity 性能的文档 Performance recommend for Unity (目前仅有英文版本)
- 在Unity的主菜单中选择 Edit > Project Settings > Quality
- 在打开的QualitySettings面板中选中Windows Store 的图标(选中后会高亮显示),然后在底部的下拉框中选择Fastest将项目的质量输出设置为性能最优。
Unity 中的编译设置
在2D/3D图形相关的开发的市场中,选择Unity作为开发平台的人占比超过50%之多,其中最重要的一个原因既是Unity 能方便迅速的编译和导出针对不同运行平台的应用程序。常见的包括了Xbox,Mac,Windows Store等等。
在本文中,我们的目标平台是Hololens,一个运行Windows 10的设备。因此,我们需要在Unity中将编译的目标平台选择为Windows Store来生成Universal Windows Platform的应用程序 (UWP程序可以运行在所有的Windows 10 平台上)
- 选择Unity 目录 File > Build Settings..
- 在Building Settings 中的Platform list 里选择 Windows Store
- 将SDK 设置为 Universal 10
- 将Build Type 设置为 D3D
针对Windows 全息应用的导出设置
为了使Unity导出的应用程序能正确的以全息图像视野而非普通2D图像视野来显示,我们需要在Unity中进行一些相应的设置即添加Hololens作为其虚拟现实设备。
- 在Build Settings 窗口的左下方,点击Player Settings按钮
- 在Player Settings窗口中选择 Settings for Windows Store 选项卡
- 展开Other Settings 面板
- 在Rendering栏目里,勾中Virtual Reality Supported 多选框来添加一个新的虚拟现实设备到列表中(确认Windows Holographic已添加到支持的设备列表中)
导出到Visual Studio解决方案
到这一步为止,我们构建的Unity项目已经全部设置好了,接下来我们将从Unity中把项目编译然后导出相应的Visual Studio解决方案及项目文件
- 首先返回到Build Settings 窗口 (从Unity目录选择File > Build Settings)
- 点击Add Open Scenes 按钮将当前打开的场景添加到此次编译中来
- 勾中 Unity C#Projects 确保Unity会生成相应的C# 项目文件
- 点击Build 开始编译
- 在弹出的窗口中选择导出C#项目的保存路径,建议在其Unity项目根路径下直接添加一个新目录 “App”
- 点击确定后Unity则开始编译,一旦编译完成后Windows会自动打开其导出的目录
- 在弹出的文件浏览器中进入到App目录
- 双击生成好的解决方案文件(本例中为 HelloHolograms.sln)
设置应用程序为Windows 全息应用
在默认情况下,从Unity中导出的Universa Windows Platform 应用程序将会在所有的Windows 10设备上运行。但是对于全息应用程序来说,有些功能上的优势是holoLens有且仅有的,因此如果你不打算在其他非Hololens的Windows10 设备上运行你的应用程序的话,那么最好将应用的目标设备设置为仅运行在Hololens设备上。
- 在Visual Studio 中,从右边的解决方案浏览器面板中右击 Package.appxmainifest文件,然后选择 View Code
- 在开打的文件中,找到TargetDeviceFamily 这一行然后将其从默认的Name="WindowsUniversal" 改为 Name="Windows.Holographic"
- 在同一行中,将MaxVersionTested="10.0.10240.0"改为 MaxVersionTested="10.0.10586.0"
- 保存Package.appxmainifest 以完成更改
第四章 - 编译和部署全息应用程序
现在我们唯一剩下的工作就是从Visual Studio中编译然后部署我们的第一个全息应用程序了。首先,在Visual Studio顶部的编译选项工具栏里,将目标从Debug改为Release ,平台从ARM改为X86. 接下来的步骤,需要取决于你是在模拟器中或者Hololens真机上进行部署,具体请参阅如下
通过Wi-Fi将应用部署到Hololens真机
- 在Visual Studio的编译选项栏里,将设备这一下拉框中选择 Remote Machine
- 在弹出的对话框中输入 Hololens的IP地址 (Hololens 和你的笔记本需要加入同一个Wi-Fi网络),然后更改Authentication Mode 为 Universal(未加密协议)
- 选择Visual Studio 的菜单目录 Debug > Start without debugging. 如果这是你第一次从你手上的笔记本部署应用到Hololens中,你需要先将你的Hololens和你的笔记本做一次配对,具体操作参阅 pair it with Visual Studio
通过USB将应用部署到Hololens真机
-
在Visual Studio的编译选项栏里,将设备这一下拉框中选择 Device
-
选择Visual Studio 的菜单目录 Debug > Start without debugging.
通过USB将应用部署到Hololens模拟器
- 在Visual Studio的编译选项栏里,将设备这一下拉框中选择 HoloLens Emulator
- 选择Visual Studio 的菜单目录 Debug > Start without debugging.