HTC Vive 开发(二)——VRTK使用

本文介绍了使用VRTK库在HTC Vive开发中实现手柄的各种交互功能,如发射射线、交互事件、物体抓取、使用、手柄震动、TouchPad控制、物体排除列表、UI交互、瞬移方式以及双手操作等。详细讲解了各个功能的实现方法和所需脚本组件。
摘要由CSDN通过智能技术生成

VRTK使用

参考文档:https://blog.csdn.net/qq_25601345/article/details/78497537?tdsourcetag=s_pcqq_aiomsg#_Toc31475
VRTK:3.2.1 版本  Steam VR:Assets Store下载

1、手柄发射射线

  • 手柄控制器挂载两个脚本:VRTK_Pointer 射线发射脚本 和 VRTK_Stratight Pointer Renderer 射线渲染脚本(或 VRTK_Bezier Pointer Renderer 射线脚本组件,射线的模型和目标点模型等参数可自定义),VRTK_Pointer脚本中指定Pointer Render类型;

2、手柄基本交互事件(触摸、抓取和使用)

给手柄控制器添加 VRTK_Controller_Events 脚本(手柄事件机制必需);

  • 根据需要添加以下脚本组件 :
    VRTK_Interact Touch(触碰)
    VRTK_Interact Grab(抓取 注:指定默认的抓取按键 Grab Button
    VRTK_Interact Use(使用 注:指定默认的使用按键 Use Button
    一般 Events、Touch、Grab、Use 这几个脚本都给控制器添加上
    在这里插入图片描述

抓取和使用脚本中,按钮若指定默认值,被交互物体所挂脚本中按钮可默认不更改;按钮若不指定,被交互物体所挂脚本中按钮要自定义;否则,被交互物体不能响应手柄的事件

3、物体抓取

  • 物体能够被抓取的条件*
    需要有RigidbodyCollider组件,
    挂载 VRTK_Interactable Object 脚本才可以响应手柄的交互,Touch Highlight Color 调整触碰时的高亮颜色,
    如果不给物体添加抓取方式,默认使用固定关节抓取方式:VRTK_FixedJointGrabAttach,
    挂载VRTK_ Outline Object Copy Highlighter脚本使物体 外轮廓 呈现高亮,默认整体高亮

注:

  • VRTK_Interactable Object脚本中的 Is Grabable(Is Usable) 默认是不勾选的,如果想要该物体能够被抓取,需要勾选该选项
  • 如果想点击抓取按钮之后就拿到物体,而不是一直按着按钮,取消勾选 Hold Button To Grab 即可
  • 挂载 VRTK_Swap Controller Grab Actions 脚本实现物体可以左右手交换
七种抓取方式:

VRTK_FixedJointGrabAttach 固定关节抓取(系统默认方式)
VRTK_SpringJointGrabAttach 弹簧关节抓取(手柄和被抓取物体之间弹簧链接效果,比如抽屉的弹性效果)
VRTK_CustomJointGrabAttach 自定义关节抓取(添加所需类型的Joint组件,并指定给自定义关节参数 Custom Joint)
VRTK_TrackObjectGrabAttach 对象追踪抓取(被抓取物体跟踪手柄,受外力阻挡时不会掉落)
VRTK_ClimbableGrabAttach 可攀爬抓取(实现手抓物体可攀爬效果),另外需要在场景上挂载 VRTK_Player Climb 脚本
VRTK_RotatorTrackGrabAttach 旋转体抓取 (效果和弹簧关节相似,比如门旋转的弹性效果,笔者猜测钟摆效果也可
VRTK_ChildOfControllerGrabAttach 作为控制器子物体(抓取物体成为手柄控制器模型子物体,射箭的典型例子)

4、物体使用(第25个例子未研究,一些物体的使用)

手柄控制器添加 VRTK_Interact Use 脚本,
被使用物体添加自定义脚本,继承VRTK_Interactable Object 类(勾选 Is Usable),重写该类的 StartUsing () { //自定义“使用”功能 } 和 StopUsing () 方法

注:

  • 若多个物体组成被交互对象,其中有使用对象,脚本挂在父容器上即可
  • 射线使用物体:勾选 Use Options 中的 Pointer Activates Use 实现

5、物体交互手柄震动

TriggerHapticPulse() 函数实现手柄震动:

  • 参数:
    index:手柄索引
    strength:震动强度
    duration:持续时间
    旧版本VRTK中使用的是 VRTK_Controller Action.TriggerHapticPulse(float strength);
    较新版本中使用的是 VRTK_SharedMethods.TriggerHapticPulse ( int index ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值