【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

时间:2024-04-09 12:08:52

Skeleton是Steam VR 2.0中,用来描述手部模型各个关节信息的,呃,可以说是数据类型。它会根据用户的设置,在抓取物体时,使手的模型,更加贴合待抓取物,增加沉浸感。

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

这是我制作的一个抓取球体的手势

 

我们可以利用skeleton pose来为每一个可抓取物,制作专属的抓取手势

 

以下是Steam VR的官方教程

https://valvesoftware.github.io/steamvr_unity_plugin/tutorials/Skeleton-Poser.html

 

1.利用Skeleton Poser 为自己的可抓取物制作专属的抓取手势

首先我们先创建一个空场景,并拖入VR预制体Player

然后随便拿一个模型,用来做测试(这里我拽了一根外星人的手指头来做测试)

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

首先为其添加组件。Interactable,和Throwable,并为自动生成的刚体,取消Gravity然后勾选Is Kinematic取消物理运算(这是为了测试抓取动作,以至于物体不会总掉到地上,或者手模型碰一下就飘走了)

然后为你的模型添加Collider碰撞器,这里我添加了MeshCollider 并勾选了Convex

此时运行程序,碰触物体有高亮,并且已经可以抓取物体,

 

下面为你的模型,添加SteamVR_Skeleton_Poser组件

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

使用Create创建一个Poser

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

添加后,默认会显示右手的模型。

可以在上图看见右侧Right Hand部分,下面的Show Right Preview已经勾选

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

在你的模型下,也会生成一个手部模型的克隆体

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

我们手动拉动这个生成的克隆体的骨骼,调节其骨骼位置到我们想要的位置即可(直接拉动其骨骼关节,旋转调节即可)

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

当调节满意后,勾选Show Left Preview,此时左手也会显示处理

点击Copy Right Pose To Left Hand,将右手已经做好的手势,Copy给左手

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用             【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

然后点击Save Pose

开始运行前,别忘了将,外星人手指头上挂取的Interactable上,取消勾选Hide Hand On Attach

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

运行即可查看效果,使用Grib或Trigger都可以抓取

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

 

2.Blending Editor 实现不同Action绑定不同的手势

例如

使用Grib实现抓握的手势

使用Trigger按键实现捏的手势

 

要实现多个手势,首先需要在PoserEditor中添加对应的手势

下面先创建一个“捏”的手势

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

然后编辑手势,如下

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

接下来在Blending Editor中点击加号,添加事件

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

设置参数如下

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

选择Pose为PoserEditer中的Main手势,即“握住”手势

下面Type为Action的类型,我们选择Boolean

然后可以在下面Action_bool中,选择要绑定此手势的Action,这里我选择Grib

 

接下来再次点击添加

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

为Trigger按键设置参数

 

其最下方的Smoothong Speed参数为,状态切换时,平滑的参数,值越大,切换状态越快,默认0为瞬间切换

运行后可看见,

按Trigger键,手势为捏,

按Grib键,手势为握

并且二者切换时有一个简单的平滑过渡

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

 

3.混合行为的叠加使用(握住枪柄 扣动扳机)

多个行为的混合使用,可是创建非常酷的效果

例如可以实现类似Grab握住手枪,再按Trigger可以扣动扳机。

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

实现上图的效果

 

基于上面的手指,我们复制一个finger2,作为本例使用的手指

抓取动作直接使用原来的

再创建一个(复制AlienFingerPose,再在其基础上调节,以保证位置不变),食指伸开的抓握手势,命名为AlienFingerPose_OneFingerOut,作为本次的Main手势

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

如下

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

需要注意的是,AlienFingerPose_OneFingerOut和AlienFingerPose,只是食指的动作不一样

 

 

然后再Blending Editor中做如下设置

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用

需要注意的是,我们此次的Grab键绑定的是OneFingerOut手势,作为默认手势

在下面,开启了UserMask并只留食指

更改Type为Analog Action

然后选择Actin为Squeeze,此手势,是一个0-1的值,可以获取Trigger按下的程度

并且将其Smoothing Speed设置为0

 

另一种设置方式:

下方的Type若选择Boolean的话,给Smoothing Speed设置一个合适的值(10-30)也可以实现以上效果

 

 

-