介绍
前段时间使用
leap motion
加入到我的VR程序当中,来代替手柄,但没有写交互。本以为可以使用手的模型来模拟鼠标点击与GUI发生交互,后来发现无法实现,原因之一是程序运行时画布Canvas始终会在摄像机的前面,而这个摄像机比较特殊,是VR摄像机,在VR世界里,我是无法看到UI,后来我找到了官方的example,我知道了必须自己设计三维物体来代替UI,并官方给出了一套交互引擎。这篇博客就是来总结这个交互引擎。
交互引擎允许开发者通过物理或者伪物理处理交互对象在你的VR应用中,交互引擎能帮你完成与物体的接触,抓住等交互。
API地址
:Interaction Engine
一、基本组成
- 交互对象需要添加
刚体(Rigidbody)
和至少一个碰撞体(Collider)
。 交互管理器(Interaction Manager)
从unity中接收FixedUpdate
,并处理成为交互的内在逻辑,包括更新手和控制器数据以及交互对象数据(在场景中至少需要一个其中一个交互对象才能运行)。交互控制器(Interaction Controllers)
做与所有交互对象的实际内容(whether by picking them up, touching them, hitting them, or just being near them)。
二、物理默认
在添加InteractionBehaviour
给对象之后,默认会发生:
- 自动添加刚体属性
- 如果你有交互管理器,下面有一个或多个交互控制器,你可以用双手来拾取、戳、拍打对象。
第一个例子是介绍了几个不同对象在初次成为交互对象时的默认行为。
三、在unity中场景中配置
现在我们开始在unity中配置完整的交互。
准备工作
- 需要unity版本5.6以上
- 导入leap motion的核心包core以及交互引擎包。
- 更新物理时间步:Unity的物理引擎具有“固定的时间步长”,并且时间步并不总是与图形帧速率同步。将物理时间步设置为与渲染帧速率相同,这一点非常重要。
Edit -> Project Settings -> Time
,设置为0.0111111 (每秒90帧)
。
- 更新物理时间步:Unity的物理引擎具有“固定的时间步长”,并且时间步并不总是与图形帧速率同步。将物理时间步设置为与渲染帧速率相同,这一点非常重要。