EN

# 五、SDK示例

# 5.1 导入Samples

图5.1 导入示例

# 5.2 场景说明

Sample场景主要演示了如何使用VR输入法键盘、XR ActionBased、XR DeviceBased、角色控制器的使用。

# 5.2.1 Boundary

Sample中, BoundaryTest 场景提供了调取虚拟围栏接口的sample,其中包括围栏是否可见、获取所有围栏点集,以及与围栏交互的信息。

在BoundaryTest.cs中可以查看到实现判断如何触发围栏,以及获取相关围栏数据。

开发者可以在demo界面看到4个按钮:

No. 按钮 说明
1 GoMainScene 返回主场景
2 Visible 设置围栏可见
3 InVisible 设置围栏不可见
4 CreateGeometry 获取围栏圈点集

以及Overlay 显示的右手柄的实时数据(当然你可以更改demo换成左手柄):

No. 标签 说明
1 isTriggering 是否触碰到围栏
2 ClosestDistance 离围栏最近的距离
3 ClosestPoint 离围栏最近的点坐标
4 ClosestNormal 离围栏最近的法线(此点垂直于围栏的线)
5 GetConfigured 是否为自定义围栏
6 GetVisible True: 围栏可见;Flase: 围栏不可见
7 getDimensions 围栏尺寸范围
8 getFloorLevel XR 接口Floor Level

详见4.2 Boundary API: https://dev-qiyu.iqiyi.com/doc/zh/develop/unity/unityxr/reference.html#_4-2-boundary-apis

# 5.2.2 QIYU Controller

在ButtonTest.cs中,我们使用UnityXR 官方的接口实现了手柄相关信息,包括速度、加速度、按钮等接口的调用情况:

头戴信息:

No. 标签 说明
1 isValid 是否生效
2 name 名称
3 serialNumber 目前暂时不支持此功能
4 manufacturer 设备厂家
5 characteristics 角色名称
6 devicePosition 设备位置坐标
7 deviceRotation 设备角度
8 refreshRate 刷新率

手柄信息:

No. 标签 说明
1 isValid 是否生效
2 name 名称
3 serialNumber 目前暂时不支持此功能
4 manufacturer 设备厂家
5 characteristics 角色名称
6 batteryLevel 电量
7 devicePosition 手柄位置
8 deviceRotation 手柄角度
9 refreshRate 刷新率
10 deviceVelocity 设备速度
11 deviceAngularVelocity 角速度
12 deviceAcceleration 加速度
13 deviceAngularAcceleration 角加速度
14 grip 抓握力度
15 gripButton 抓握按钮是否按下
16 menuButton 菜单按钮
17 primary2DAxis 摇杆方向坐标
18 primary2DAxisClick 是否按下摇杆
19 primary2DAxisTouch 是否手指放在上面
20 primaryButton X/A 按钮
21 primaryTouch 是否手指放在上面
22 secondaryButton Y/B 按钮
23 secondaryTouch 是否手指放在上面
24 trigger 按trigger力度
25 triggerButton 按下trigger键
26 triggerTouch 是否手指放在上面

详见Unity XR InputDevice: https://docs.unity3d.com/ScriptReference/XR.InputDevice.html (opens new window)

# 5.2.3 Keyboard

在Keyboard中,我们提供Sougo输入法及调用方式,示例中展示了不显示密码和显示密码输入框:

# 5.2.4 QIYU Overlay

QiyuOverlay 示例场景演示了如何使用Overlay 和Underlay高质量地合成到合成层中,相关合成层设置的详尽信息,请参阅QIYU Compositor Layer。

加载示例场景时,您会在相机前看到多个图层渲染,包括overlay、underlay、OES、Default渲染结果。

# 5.2.4.1 脚本

我们提供了Earth.cs 和 OESHelper.cs 供开发者参考地球转动和OES 纹理的方法。另外,在QiyuOverlay文件中提供了inspector里设置的样例。

# 5.2.4.2 主要功能

Samples中的QiyuOverlay场景提供了各个类型和形状的合成图层示例。

图5.2.4.2.1 Qiyu Overlay示例场景

Is External Surface Demo参见Underlay-oes层和OESHelp脚本。

图5.2.4.2.2 OES层示例

# 5.3 脚本说明

  • QiyuScreenFade.cs脚本

由于亮灭屏或者切换场景过程中,相机渲染发生突变过程,导致屏幕出现闪白光问题,该脚本提供了FadeIn效果,亮屏时屏幕有渐变过程。使用时,只需将该脚本挂到Main Camera上即可。

img

图5.3 QiyuScreenFade脚本使用

# 5.4 Unity官方XR交互示例

可以参考Unity官方提供的XR交互示例进行开发,其中包含摇杆移动、抛物线移动、UI点击等。示例地址https://github.com/Unity-Technologies/XR-Interaction-Toolkit-Examples。