查看原文
其他

Unity 2018.3中多平台VR功能

Unity Unity官方平台 2019-05-07

面向多个VR平台进行发布,可以让你的应用拥有更多的用户。本文将为大家介绍Unity 2018.3中多平台VR功能,通过使用这些新功能,我们可以创建适用于桌面端和移动VR设备高效的应用,而无需为不同平台特别构建。

 

 

友情提醒:

  • 本文中介绍的新功能,我们将提供项目下载以供参考,请在文末查看下载地址。

  • 本文介绍的新功能适用于以下SDK:OpenVR、Oculus、WindowsMR、Daydream和GearVR,不适用于PSVR。


构建目标平台和VR SDK的选择

根据应用程序的构建设备的不同,我们可能需要修改目标构建平台并进行多次编译。


例如,如果目标设备为Oculus Rift,构建目标平台应为“PC, Mac, & Linux Standalone”;如果目标设备为Oculus Go,构建目标平台应为“Android”;如果想面向Oculus Rift和Oculus Go构建,需要为每个目标平台分别构建一次。


 

我们必须根据构建目标平台,使用正确的VR SDK。有时通过单个exe可执行文件就能面向多个SDK进行构建,有时则需要分别进行构建。


当设定为“PC, Mac, & Linux Standalone”时,我们可以面向Oculus和OpenVR虚拟现实SDK进行构建。当设定为“Android”时,我们必须分别为Daydream和Oculus VR SDK构建。我们需要充分了解项目的目标设备,从而确定合适的构建目标平台和VR SDK选择。


Tracked Pose Driver组件

Tracked Pose Driver组件可以根据VR设备的不同,调整Transform组件的Position和Rotation属性。

 

如下图所示,XR Rig使用了Tracked Pose Driver组件,其中XR Rig的“Main Camera”,“Left Hand”和“Right Hand”游戏对象各有一个TrackedPoseDriver组件,它会根据所设置的Device和Pose Source属性,修改游戏对象的Transform。



我们也可以使用VR Lightweight RP模板创建一个新项目,在该项目中调整XR Rig对象。


Input输入

我们可以像获取非VR控制器的输入一样从VR控制器获取输入。通过参考XR Input文档的输入信息表,我们可以参考触发器、控制棒、手柄按钮等输入信息。

 

如下图所示,为左侧触发轴设置Input输入信息。

 

 

如下图所示,为左侧主按钮设置Input输入信息。

 

XRNodes

如果需要更好地了解特定设备,我们可以使用InputTracking类中的功能。

 

InputTracking.GetNodeStates()可以提供XRNodeStates列表。XRNode类型包含多个抽象表示,例如:Head、LeftHand、RightHand、TrackingReference等。XRNodeStates会提供物理信息,例如:节点的位置和旋转、节点类型、节点是否正被跟踪,并提供唯一性标识。

 

InputTracking还提供在节点添加或移除时,以及在节点上的跟踪丢失或获取时触发的事件。


启用SDK特定信息

有时候用户体验要求实现SDK特定信息。

 

XRSettings提供了全局的XR相关设置,例如:构建的应用支持哪个VR SDK,哪个SDK处于活动状态。XRSettings.supportedDevices会列出构建时选择的VR SDK。XRSettings.loadedDeviceName会告诉我们目前哪个SDK在处理输入信息。

 

通过使用该设置,我们可以启用平台特定设置,例如:选择不同的输入来处理用户操作。

private static float m_FireTriggerThreshold = 0.75f;


   public static bool FireControlActive(Handedness hand)

   {

       if (XRSettings.loadedDeviceName == "daydream")

       {

           if (hand == Handedness.LEFT)

               return Input.GetButton("VR_PrimaryButton_Left");

           else // right hand

               return Input.GetButton("VR_PrimaryButton_Right");

       }

       else

       {

           if (hand == Handedness.LEFT)

               return Input.GetAxis("VR_TriggerAxis_Left") > m_FireTriggerThreshold;

           else // right hand

               return Input.GetAxis("VR_TriggerAxis_Right") > m_FireTriggerThreshold;

       }

   }


通过结合使用XRSettings和XRNodes,我们可以控制所有VR SDK和相应设备的UX决策。


资源

想尝试本文中介绍的新功能,请下载以下项目。


Onslaught项目支持OpenVR、Oculus Desktop、Windows Mixed Reality Immersive Headsets、Oculus Mobile 和Daydream,请使用Unity 2018.3.0b3及更高版本。

下载地址:

https://github.com/Unity-Technologies/onslaught


XR Input Tests项目是一个多平台测试项目,Unity XR QA平时使用该项目来验证功能。

下载地址:

https://github.com/Unity-Technologies/XRInputTests


参考文档

如何修改构建目标平台

https://docs.unity3d.com/Manual/BuildSettings.html


如何启用VR并为构建内容选取SDK

https://docs.unity3d.com/Manual/VROverview.html


XR Input文档的输入信息表

https://docs.unity3d.com/2018.3/Documentation/Manual/xr_input.html


小结

Unity 2018.3中多平台VR功能就介绍到这里,更多Unity最新功能介绍尽在Unity官方中文论坛(UnityChina.cn)!


推荐阅读

官方活动

直播预告 | Unity全新特效工具Visual Effect Graph分享(明晚)

明晚8点Unity直播课程,Unity的技术经理罗志达将带来全新特效工具Visual Effect Graph分享。[了解详情...

直播地址:

https://connect.unity.com/events/visual_effect_graph_20181128


十一月超值Unity订阅,赠礼再加码(最后一周)

本月订阅Unity Plus加强版,赠送Unity限量礼品以及资源插件;订阅Unity Pro专业版订阅赠送Unite China 2019门票,另可获赠6件总价超过2800元的资源插件。[了解详情...]


Asset Store年终巨惠Cyber Week劲爆来袭

Asset Store资源商店年终巨惠Cyber Week劲爆来袭!多至2千余款人气热销资源参与促销,低至5折优惠,更有4.5折特惠组合资源包,好资源和低价格一包打尽!

活动地址:

https://assetstore.unity.com


点击“阅读原文”访问Unity官方中文论坛

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存