【Hololens开发】Holograms 100: Getting started with Unity
本文我们将通过Unity创建一个Hololens应用。这个项目将可以作为一个Hololens应用的初始模板供你以后开发时使用。
目录
Chapter0 - 预先准备
- 一个正确配置Hololens 开发环境的 Win10 PC机。
Chapter1 - 新建一个项目
为了使用Unity开发一个应用,你首先需要创建一个新的项目(Project),项目由若干个文件夹(Folder)构成,其中最重要的是 Assets 文件夹。这个文件夹包含了所有你准备的所有资源:
- 你从数字内容创作软件,如 Maya、C4D、Photoshop 中引入的素材
- 你使用例如 Visual Studio 等编辑器编写的代码
- 你使用 Unity 创建的 Unity 组件等
为了创建一个UWP(Universal Windows Platform 即 Windows通用应用平台),Unity 可以将项目导出为一个 Visual Studio 的解决方案,其包含了所有必须的资源和代码。
- 打开 Unity
- 选择 New,新建一个项目
- 输入项目名字(例如:MixedRealityIntroduction)
- 输入一个位置保存项目
- 保证 3D 选项被选中
- 选择 Create project ,创建项目。
新建项目
Chapter2 - 对Camera进行设置
Unity 中的 Main Camera 它可以处理头部跟踪(head tracking)和立体再现(stereoscopic rendering)。这里需要完成下面的步骤使其符合我们开发的要求:
- 选择 File > New Scene
首先,可以想象,如果我们把用户的起始位置定在 (X:0, Y:0, Z:0) 将更容易部署我们的应用。由于 Main Camera 追踪用户的头部运动,用户的起始位置可以设定为 Main Camera 的起始位置。
- 在 Hierarchy 面板中选中 Main Camera
- 在 Inspector 面板中找到 Transform 组件,修改其 Position 的数值,从 (X:0, Y:1, Z:-10) 修改为 (X:0, Y:0, Z:0)。
其次,默认的摄像头背景需要做一些修改。
对于 Hololens 应用来说,真实世界应该出现在摄像头渲染呈现的影像背后,而不是一个天空盒素材(Skybox texture)背后。
- 继续选中 Main Camera,在 Inspector 面板中找到 Camera 组件,把其 Clear Flags 属性从 Skybox 修改为 Solid Color。
- 接着选中其 Background 属性,修改其 RGBA 值为 (0, 0, 0, 0),即黑色。
再者,我们需要考虑一下 Unity 中的近裁剪面(near clip plane),避免物体被渲染的离用户的眼睛太近。
对于 Hololens 应用来说,近裁剪面的值可以根据Hololens 推荐的值设置为 0.85 米。
- 继续选中 Main Camera,在 Camera 组件中找到 Clipping Planes,把其 Near 值从默认的 0.3 修改为 0.85 。
Main Camera设置
最后,让我们保存一下目前的进度。保存我们当前的场景(Scene),选择 File > Save Scene As,命名为 MainScene,然后 Save。
Chapter3 - 修改项目设置(Project Settings)
在这个章节中,我们将修改一些项目设置以帮助我们使用 Windows Holographic SDK 进行开发。我们也将修改一些质量设置。最终,我们会确保我们的项目导出为 Windows应用商店应用。
Unity性能(Performance)和质量(quality)设置
对HoloLens应用来说,保持高的帧率是非常重要的,我们要把性能质量设置调整为 Fastest 。想要查看更多的关于性能的信息,查询这里。
- 选择 Edit > Project Settings > Quality
- 选择 Windows Store LOGO 下的 Default 黑色箭头,选择 Fastest。正确选择后,会变成绿色。
Unity质量设置 for Hololens
指定 Windows 10 SDK
我们需要让Unity知道我们的应用是在全息视图下的,而不是2D视图。为此我们要** Virtual Reality Support 并指定 Windows 10 SDK。
- 选择 Edit > Project Settings > Player
- 在 Inspector 面板中选择 Windows Store 选项卡
- 展开 Other Settings
- 在 Rendering 部分中,勾选 Virtual Reality Supported 复选框,添加一个新的 Virtual Reality SDKs,确认我们的 Windows Holographic 在其中。
指定 Windows Holographic SDK
Chapter4 - 创建一个立方体
在Unity项目中创建一个立方体跟创建其他物体没有任何区别。在用户面前放一个立方体非常简单,因为 Unity 中的坐标是跟真实世界匹配的,Unity中的1米差不多也是真实世界中的1米。
- 在 Hierarchy 面板中右键,选择 Create 然后接着选择 3D Object > Cube。
- 选中刚才新建的 Cube。
- 找到 Cube 的 Transform 组件,修改其 Position 的值为 (X: 0, Y: 0, Z: 2)。这个位置是距用户的开始点 2 米的位置。
- 接着修改 Rotation 值为 (X: 45, Y: 45, Z: 45),Scale 值为(X: 0.25, Y: 0.25, Z: 0.25)。这个立方体的长宽高都为0.25米。
- 保存场景, File > Save Scene。
Chapter5 - 在设备上确认一下吧!
现在,我们是时候在设备上查看一下效果了。我们可以直接在 Unity Editor 中完成这个过程。
远程模式:使用Hololens进行远程遥控(Remote)
- 在 Hololens 上,安装并运行 Holographic Remoting Player,可以从 Windows Store 下载。运行它,设备会进入一个等待状态,并且显示一个设备的 IP 地址。记录 IP 地址。
- 回到我们的PC上,在Unity中,选择 Window > Holographic Emulation。(译者提示:如果你的 Holographic Emulation 打开后提示你“You must enable Virtual Reality support……”,且你前面的步骤确认已经完成,此时,打开 File > Build Setting,选择 Windows Store ,单击 Switch Platform 即可解决问题)
- 将 Emulation Mode 从 None 修改为 Remote to Device。进入远程模式。
- 在 Remote Machine 一栏中,填入一开始记录的 IP 地址。
- 点击 Connect
- 确保 Connection Status 变为绿色的 Connected
- 现在可以在 Unity Editor 中单击正上方的 Play 按钮。
译者注:您可以暂停、检查对象和调试,就像在编辑中运行普通应用一样,区别之处在于视频、音频和设备的输入是通过网络在主机和远程设备之间进行传输的。远程模式对于验证性能来说并不奏效(因为所有繁重工作都是由PC主机处理的),但它可用于在开发过程中进行快速迭代。
远程模式
模拟模式:Simulate in Editor
(译者添加)
- 将 Emulation Mode 修改为 Simulate in Editor
- 按下 Play 按钮即可
您的应用将由编辑器内置的模拟器开始运行,不需要头戴设备。您可以选择5个虚拟房间(与XDE HoloLens Emulator 提供的相同)并指定执行手势的虚拟手掌(左或右)。
模拟模式
在模拟模式下,您将使用游戏控制器来控制虚拟人物。
模拟模式中的控制方法
请注意,使用游戏控制器需要将焦点放在游戏窗口。使用UI做其它操作后只需点击一下游戏视图窗口就会对焦。
已知限制
- 目前远程全息模式并不支持语音(PhraseRecognizer语音识别),而是获取编辑器所在主机的语音。
- 在全息模拟模式下可以执行图像捕捉,但因为图像捕捉会使用本地相机(例如网络摄像头),您将无法使用TryGetProjectionMatrix或者TryGetCameraToWorldMatrix来获得矩阵。
- 在远程模式下,主机PC端所有的音频将重定向到设备上(而不仅是来自应用的)。
Chapter6 - build项目并且部署到设备
现在我们可以导出我们的项目到 Visual Studio 并部署到我们的目标设备。
导出 Visual Studio 解决方案
- 打开 File > Build Setttings 窗口。
- 单击 Add Open Scenes ,添加场景。
- 把 运行平台 即 Platform 修改为 Windows Store 并且单击 Switch Platform。
- 在 Windows Store 的设置中,确保 SDK 选择的是 Universal 10。
- Target Device,可以是 Any Device 或选择 Hololens。
- UWP Build Type 要选 D3D。
- UWP SDK 可以选 Latest installed。(译者注:最好与你装VS2015时安装的那个版本一致,否则VS会提示项目需要更新)
- 选中 Unity C# Projects。
- 点击 Build。
- 在打开的资源管理器中,新建一个文件夹,命名为 APP 。
- 选中 APP 文件夹,单击 Slect Folder 按钮。
- 当Unity 完成 Building 的时候,会自动打开一个资源管理器。
- 打开 APP 文件夹。
- 打开生成的 Visual Studio Solution(在此例中,是 MixedRealityIntroduction.sln)
编译 Visual Studio 解决方案
最后,我们可以编译这个导出的VS解决方案了。
- 在VS工具栏中,把 target 从 Debug 改为 Release,从 ARM 改为 x86。
接下来的设置将根据你的选择有些不同:
通过 Wi-Fi 部署到 Hololens 设备
- 单击 本地计算机(Local Machine) 旁边的小箭头,将部署目标变为 远程计算机(Remote Machine)。
- 输入设备的 IP 地址,将身份验证模式(Authentication Mode) 改为 通用(未加密协议)Universal(Unencrypted Protocol)。
- 点击 调试(Debug) > 开始执行不调试(Debug without debugging)
通过 USB 部署到 Hololens 设备
- 单击 本地计算机(Local Machine) 旁边的小箭头,将部署目标变为 Device。
- 点击 调试(Debug) > 开始执行不调试(Debug without debugging)
部署到模拟器
- 单击 本地计算机(Local Machine) 旁边的小箭头,将部署目标变为 Hololens Emulator。
- 点击 调试(Debug) > 开始执行不调试(Debug without debugging)
试试你的应用程序吧!
现在你的应用程序已经部署了。试试到处走走观察一下呈现在你眼前世界里的这个立方体。