Unity+MRTK(2):用于Hololens的Main Camera初始设置

内容来自官方文档
操作系统:Win10
Unity版本:2019.4
MRTK版本:2.4.0
全息设备:Hololens2

若要优化全息设备的视觉质量和全息稳定性,应对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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用MRTK2.8接入Hololens2 Rest API导入导出锚点定位信息,实现多台设备共享锚点定位,需要遵循以下步骤: 1. 在Unity中创建一个新的场景,然后导入MRTK2.8插件,并添加Hololens2 Rest API的Unity插件,例如Hololens Toolkit。 2. 创建一个用于导入和导出锚点信息的脚本。可以使用C#或其他Unity支持的语言编写。 3. 在脚本中,使用Hololens2 Rest API提供的接口来连接到Hololens2设备,并获取锚点信息。可以使用UnityWebRequest类来发送HTTP请求。 4. 在接收到锚点信息后,可以将其转换为Unity中的游戏对象,并将其添加到场景中。可以使用Unity的Transform组件来控制游戏对象的位置、旋转和缩放。 5. 对于导出锚点信息,可以使用Unity的JsonUtility类将游戏对象转换为JSON格式,并将其发送到Hololens2设备。可以使用UnityWebRequest类来发送HTTP请求。 6. 在应用程序中实现多台设备共享锚点定位。可以使用Azure Spatial Anchors服务来实现多台设备之间的锚点共享。可以使用AnchorLocateCriteria类来定义锚点定位的条件。可以使用AnchorLocateOperation类来执行锚点定位操作。 7. 在应用程序中实现多台设备之间的实时通信。可以使用Unity的UNET或Photon等网络引擎来实现多台设备之间的实时通信。可以使用NetworkManager类来管理网络连接,并使用NetworkIdentity类来标识游戏对象。 8. 最后,需要测试应用程序的功能,确保它可以正确地实现Hololens2 Rest API的导入导出锚点定位信息和多台设备共享锚点定位。 需要注意的是,Hololens2 Rest API的接口可能会有所变化,具体实现方法可能会有所不同。因此,在开发期间需要查阅Hololens2 Rest API的文档,了解其最新的接口和使用方法。此外,使用Azure Spatial Anchors服务可能需要付费,具体费用和使用方法需要查阅Azure Spatial Anchors的文档。在开发期间需要仔细测试应用程序的功能,确保它可以稳定地运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值