Unity 2018.3中多平台VR功能
面向多个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官方中文论坛