Unity版本:2019.4
MRTK版本:2.4.0
全息设备:Hololens2

主要内容

  • 项目设置
  • 相机背景设置
  • 相机位置设置
  • 剪切平面(Clip planes)设置
  • 与Windows共享深度缓冲区


若要优化全息设备的视觉质量和全息稳定性,应对Unity中的相机对象做特定设置(下面只挑选了Hololens2相关的设置并有部分针对性的改动,关于其他设备可以自行查看官方文档)。

项目设置

  1. file>Build Setting,确保选择的平台是Universal Windows Platform
  2. Edit>Project Settings>Player>XR Settings,勾选Virtual Reality Supported
  3. Virtual Reality Supported下面出现Virtual Reality SDKs框,点击框右下角的**+,选择Windows Mixed Reality**

注意:这一段和官方文档不同,没在官方文档说明的位置找到对应选项,可能是版本原因。和我描述不一样且Unity版本不同的请移步官方文档。

(这一段描述的方法与当前的Unity2019和MRTK2.4.0版本不完全兼容,谨慎使用)另外,Project Setting中有一项XR Plug-in Management,专门用来管理XR插件,点击后选择安装,会要求你移除原有的内置XR SDK,选择移除后即可安装成功,勾选Windows Mixed Reality,可以实现和上文步骤一样的效果(Unity2020版会将XR的设置完全的移到XR Plug-in Management中)

相机背景设置

对于Hololens,真实环境应该显示在相机呈现的所有虚拟内容之后,因为Hololens将黑色渲染成透明,所以相机背景需要设置为纯黑色(默认背景是Skybox):

  1. 选择Hierarchy窗口的Main Camera对象
  2. 在Inspector窗口的Camera组件,将Clear Flag属性改为Solid Color,Background属性选择纯黑色[RGBA=(0,0,0,0)]

相机位置设置

如果将用户的起始位置想象为原点(X=0,Y=0,Z=0),可以更容易的设计应用程序。所以将Main Camera的位置重置到原点(修改Transform组件的Position属性)。

剪切平面(Clip planes)设置

点击Main Camera时,可以看到场景视图中出现了一个白色线框,看起来像是四棱锥少了顶角,这个线框表示的就是Camera的视野范围,不在这个范围内的对象不会出现在相机中,其中顶面是近剪切平面,底面是远剪切平面。

为了让用户更舒适,需要调整相机的近剪切平面,从默认的0.3改为0.85(Camera组件的Clipping Planes属性,Near表示近剪切平面距相机的垂直距离,单位是米)

与Windows共享深度缓冲区

在新项目中可以选择开启深度缓冲区共享,这能提高图像稳定性与图像质量,但这也有可能导致像素的深度值不准确,如果发现图像像素深度有明显的变化时,应及时关闭深度缓冲区共享。

开启方式:
XR Settings中(具体位置见"项目设置"小节),展开Windows Mixed Reality,勾选Enable Depth Buffer Sharing

如果是通过XR Plug-in Management来管理插件,则选择Windows Mixed Reality,展开Runtime Setting,勾选Shared Depth Buffer