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

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第1张图片

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

 

我们可以利用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 自定义抓取手势的使用_第2张图片

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

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

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

 

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第3张图片

使用Create创建一个Poser

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第4张图片

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

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第5张图片

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

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第6张图片

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

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第7张图片             【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第8张图片

然后点击Save Pose

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第9张图片

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第10张图片

 

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

例如

使用Grib实现抓握的手势

使用Trigger按键实现捏的手势

 

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

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第11张图片

然后编辑手势,如下

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第12张图片

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

设置参数如下

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第13张图片

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

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

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

 

接下来再次点击添加

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第14张图片

为Trigger按键设置参数

 

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

运行后可看见,

按Trigger键,手势为捏,

按Grib键,手势为握

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

 

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

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

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

实现上图的效果

 

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

抓取动作直接使用原来的

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

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第15张图片

如下

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第16张图片

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

 

 

然后再Blending Editor中做如下设置

【Steam VR 2.0】3. Skeleton 自定义抓取手势的使用_第17张图片

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

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

更改Type为Analog Action

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

并且将其Smoothing Speed设置为0

 

另一种设置方式:

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

 

 

-

你可能感兴趣的:(VR,Unity)