当前位置:   article > 正文

(翻译++)微软Hololens开发教程系列(1): Holograms 100-使用Unity构建第一个全息影像应用_unity enable holograms 只能是d3dproject吗

unity enable holograms 只能是d3dproject吗

前言

本系列博文翻译至微软Holograms的官方英文教程,其地址为: https://developer.microsoft.com/en-us/windows/holographic/academy

该系列文章由浅入深的讲解了如何一步步的使用Unity3D来开发Hololens的应用程序,教程中所使用到的项目文件可以作为后续的开发模板使用。此外,在翻译时,结合自己的理解和经验,我对其中的一些部分增加了额外的解释,希望能帮助大家更好的理解Hololens的开发。

 

 

开发工具和环境需求请参阅msp的昌伟哥哥 博文<HoloLens开发手记-配置开发环境 Install the tools>,对于没有Hololens真机设备的朋友,可以考虑利用模拟器进行常规的开发和调试。

基于我个人的经验,尽量使用CPU主频高一些的记笔记或者桌面电脑(有固态硬盘更好)以提高生产力,因为在大部分的情况下,在Unity中开发全息应用的一次调试和部署都会需要两次编译,第一次由Unity编译并导出相应的C# 项目及文件,第二次是则是需要使用Visual Studio打开导出的项目,然后编译并部署到Hololens模拟器或真机中进行调试。 关于使用模拟器遇到的常见问题,我会尝试在另外一篇文章中分享出来。

 

第一章 - 创建项目

在使用Unity构建一个应用程序之前,首选需要创建一个Unity项目。 一个Unity项目会包含所有用到的资源,比如来自3D Max,Maya的模型文件,动画,场景,Photoshop图片以及脚本文件和其他会使用到的素材等。值得注意的是,Unity是使用windows 或者 mac 的文件目录结构本身来管理项目资源,它并不依赖于一个中央管理文件(类似Visual Studio中的 解决方案*.sln或项目文件*.csproj)。

Unity 本身支持使用C# 或者Javascript来撰写相应的脚本代码,你可以使用任何你喜欢的编辑工具来创建和维护这些脚本。 Unity会自动发现项目文件目录下的所有脚本,除此之外,如果脚本在Visual Studio或者其他的编辑工具中被修改保存后,Unity也会自动重新加载这些更改后的脚本。

如果需要编译和部署一个UWP程序的话,可以使用Unity来导出整个源代码然后使用Visual Studio 来完成后续的编译和部署功能,接下来我们就来看看如何创建一个Unity 项目:

  1. 运行Unity
  2. 选择 New
  3. 输入项目的名称(例如 “HelloHologram”)
  4. 选择项目保存的文件目录
  5. 确保建立的是3D 项目(勾中)
  6. 点击Create Project

 

第二章 - 设置摄像机

 我们需要对Unity中的主摄像机做一些设置上调整来确保它能在Holoens的应用程序中处理头部跟踪动然后正确的渲染影像。

首先,想要更好的放置你的全息应用程序,我们必须先知道用户的位置在哪,为了方便起见,我们会使用世界原点(X:0,Y:0,Z:0)作为用户的起始位置,也就是主摄像机的位置,你可以将主摄像机想象为用户的双眼,随着用户头部的移动,主摄像机的位置也会不断更新。以此主摄像机的起始位置为参照,我们便能方便的控制和调整全息图像和用户之前的距离。 (注意,在Unity中开发Hololens的应用,一个Unit单位就代表现实中的一米)

  1.  在Hierachy面板中单击选中“Main Camera” 
  2.  接着在Inspector面板中,找到Transform组件然后将PositionX:0,Y:1,Z:-10)更改为X:0,Y:0,Z:0)

 接下来,我们需要更改主摄像机的背景设置,因为在一个全息的应用程序中,摄像头渲染的全息图像应该使用真实世界的影像来作为背景,而非采用默认的Skybox质地作为渲染背景。

  1. Hierachy面板中继续选中“Main Camera”,在Inspector面板中找到Camera组件,然后在Clear Flags下拉框中将设置从Skybox改为Solid Color
  2. 使用颜色选择器将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米)

  1. 在Hierachy面板左上方的Create下拉框中选择新建一个3D Object > Cube
  2. 在Hierarchy面板中单击选中新建的这个Cube
  3. 在对应的Inspector面板中找到Transform 组件,并将其Position设置为(X:0,Y:0,Z:0)
  4. Transform组件中将Rotation 设置为 (X:45,Y:45,Z:45)来转动方块使它更具立体感,与此同时,将Scale设置为(X:0.25,Y:0.25,Z:0.25)来缩小方块使它的长,宽,高缩小至大约0.25米
  5. 选择Unity目录的File > Save Scene来保存当前的场景的改动

 

第四章 - 从Unity中导出至Visual Studio

当你跟随着之前的章节完成你的第一个全息应用的创建后,接下来要做到事便是从Unity中将项目导出到 Visual Studio中进行编译以便最终将你的全息应用部署到Hololens 设备或者Hololens模拟器中。在导出之前,我们需要在Unity对项目做一些设置上的调整

 

Unity 中的性能设置

对于Hololens而言,维持一个高刷新率是至关重要的,它直接影响到全息影像在现实世界中呈现的效果以及用户的感受。因此,我们有必要稍微牺牲一些画面上的质量以换取一个较高的性能。具体细节可参阅官方关于Unity 性能的文档 Performance recommend for Unity (目前仅有英文版本)

  1. 在Unity的主菜单中选择 Edit > Project Settings > Quality
  2. 在打开的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 平台上)

  1. 选择Unity 目录 File  > Build Settings..
  2. Building Settings 中的Platform list 里选择 Windows Store
  3. 将SDK 设置为 Universal 10
  4. Build Type 设置为 D3D

 

针对Windows 全息应用的导出设置

为了使Unity导出的应用程序能正确的以全息图像视野而非普通2D图像视野来显示,我们需要在Unity中进行一些相应的设置即添加Hololens作为其虚拟现实设备。

  1. Build Settings 窗口的左下方,点击Player Settings按钮
  2. Player Settings窗口中选择 Settings for Windows Store 选项卡
  3. 展开Other Settings 面板
  4. Rendering栏目里,勾中Virtual Reality Supported 多选框来添加一个新的虚拟现实设备到列表中(确认Windows Holographic已添加到支持的设备列表中)

 

导出到Visual Studio解决方案

到这一步为止,我们构建的Unity项目已经全部设置好了,接下来我们将从Unity中把项目编译然后导出相应的Visual Studio解决方案及项目文件

  1. 首先返回到Build Settings 窗口 (从Unity目录选择File > Build Settings)
  2. 点击Add Open Scenes 按钮将当前打开的场景添加到此次编译中来
  3. 勾中 Unity C#Projects 确保Unity会生成相应的C# 项目文件
  4. 点击Build 开始编译
  5. 在弹出的窗口中选择导出C#项目的保存路径,建议在其Unity项目根路径下直接添加一个新目录 “App
  6. 点击确定后Unity则开始编译,一旦编译完成后Windows会自动打开其导出的目录
  7. 在弹出的文件浏览器中进入到App目录
  8. 双击生成好的解决方案文件(本例中为 HelloHolograms.sln)

 

设置应用程序为Windows 全息应用

在默认情况下,从Unity中导出的Universa Windows Platform 应用程序将会在所有的Windows 10设备上运行。但是对于全息应用程序来说,有些功能上的优势是holoLens有且仅有的,因此如果你不打算在其他Hololens的Windows10 设备上运行你的应用程序的话,那么最好将应用的目标设备设置为仅运行在Hololens设备上。

  1. Visual Studio 中,从右边的解决方案浏览器面板中右击 Package.appxmainifest文件,然后选择 View Code
  2. 在开打的文件中,找到TargetDeviceFamily 这一行然后将其从默认的Name="WindowsUniversal" 改为 Name="Windows.Holographic"
  3. 在同一行中,将MaxVersionTested="10.0.10240.0"改为 MaxVersionTested="10.0.10586.0"
  4. 保存Package.appxmainifest 以完成更改

 

 第五章 - 编译和部署全息应用程序

现在我们唯一剩下的工作就是从Visual Studio中编译然后部署我们的第一个全息应用程序了。首先,在Visual Studio顶部的编译选项工具栏里,将目标从Debug改为Release ,平台从ARM改为X86. 接下来的步骤,需要取决于你是在模拟器中或者Hololens真机上进行部署,具体请参阅如下

 

 通过Wi-Fi将应用部署到Hololens真机

  1. 在Visual Studio的编译选项栏里,将设备这一下拉框中选择 Remote Machine
  2. 在弹出的对话框中输入 Hololens的IP地址 (Hololens 和你的笔记本需要加入同一个Wi-Fi网络),然后更改Authentication Mode 为 Universal(未加密协议)
  3. 选择Visual Studio 的菜单目录 Debug > Start without debugging. 如果这是你第一次从你手上的笔记本部署应用到Hololens中,你需要先将你的Hololens和你的笔记本做一次配对,具体操作参阅 pair it with Visual Studio

 通过USB将应用部署到Hololens真机

  1. 在Visual Studio的编译选项栏里,将设备这一下拉框中选择 Device

  2. 选择Visual Studio 的菜单目录 Debug > Start without debugging.

 通过USB将应用部署到Hololens模拟器

  1. 在Visual Studio的编译选项栏里,将设备这一下拉框中选择 HoloLens Emulator
  2. 选择Visual Studio 的菜单目录 Debug > Start without debugging.

HoloLens Pin获取
    

你第一次从Visual Studio部署应用到HoloLens,你将需要验证PIN码。在HoloLens上,通过启动设置应用来生成一个PIN码,具体操作是前往Update > For Developers,然后点击配对。一个PIN将会显示在HoloLens上,然后在Visual Studio中输入此PIN码。配对结束后,点击完成(Done)按钮来隐藏此提示框。此时PC已与HoloLens配对,你将可以自动部署应用到HoloLens上。为每一台用于开发的不同PC重复此步骤。

为了解除HoloLens和PC直接的配对,可以启动设置应用,前往Update > For Developers,然后点击清除(Clear



声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号