VRTK是扩展SteamVR的一个Unity3D插件,主要是为了方便开发者快速地开发出vr产品,其内置了相当多的当下比较成熟的VR界面下的交互、操作等解决方案,目前最新版本为3.2.0,支持了更多VR设备,功能也更加强大。然而我昨天才知道并下载。。因此写下此文章来供自己参考,当然也欢迎讨论新插件的黑科技。。
另外steamVR也更新到了1.2.1,其中也有一个Demo场景,也实现了相当多的交互操作,虽然目前版本功能并没有VRTK提供的功能强大,但是使用起来感觉非常流畅,其中的射箭Demo完全就跟TheLab中的射箭操作感一模一样。。相比之下vrtk那个寒酸的射箭场景就....如果steamVR在下个版本提供更多Demo场景和更强大的功能,我想会抢走相当多的steamVR开发者抛弃vrtk了吧。。。哈哈
因为我是从老版本转过来的,因此可能很多地方会和老版本作对比。还有一些Demo场景未写,原因是跟老版本差别不大因此不再浪费时间解释。望谅解哈。
开始:
最大的感觉就是vrtk更加专业了,支持更多vr设备,每个demo都可以选择当前测试用的设备,由一个VRTK_SDK Manager脚本去动态确定用户使用的设备并由VRTK_SDKSetup脚本内的变量确定最终用户使用的左右手和头部以及其他一些信息。所有vrtk相关脚本直接挂在[VRTK_Scripts]对象下,再拖给VRTK_SDK Manager使其运行时自动找到设备左右手作为父对象。因此直接拖动camerarig到场景里就无效了。。相机直接看不了,似乎只能通过VRTK_SDK Manager的方式来管理场景VR相机。
另外steamVR在1.2.1版本中也有很多例子,关节、射箭、ui。。很多功能和vrtk出现冲突,很纠结。
注:7月6日vrtk更新到3.2.1,解决了和steamvr 1.2.2版本冲突的问题,以及一些小bug的修复;
测试发现VRTK_TrackObjectGrabAttach跟踪抓取在碰撞很多的地方比关节抓取效果要好一些,关节抓取控制器在碰撞体内时被抓取得物体会乱飞,但是跟踪抓取试了一下似乎没有这个问题。
VRTK_ObjectAppearance静态类包含一些操作gameobject的功能,例如将其高亮,改变透明度等(高亮需要这个gameobject挂了继承
VRTK_BaseHighlighter的组件,例如VRTK_OutlineObjectCopyHighlighter,还需要先调用该组件的Initialise初始化方法之后才能
用VRTK_ObjectAppearance高亮)。
002_Controller_Events 例子就是将vrtk_controllerevents脚本挂在了[VRTK_Scripts]下的左右手对象上,运行时会自动找到当前设备左右手变成他们的子物体,实现数据监听。
003_Controller_SimplePointer 传
统的vrtk_SimplePoint被取代了,现在的做法是移动手加上VRTK_StraightPointerRenderer和VRTK_Pointer来替代。
004_CameraRig_BasicTeleport
传统的VRTK_BasicTeleport脚本现在不添加在camerarig上了,而是也添加在[VRTK_Scripts]下,可以随便建一个gameobject然后添加在上面,该脚本会自动寻找当前头盔的。
005_Controller_BasicObjectGrabbing 手柄上添加的脚本不变,
传统可抓取物体只挂一个VRTK_InteractableObject就可以了,但是新版本分离了抓取方式和是否可换手(Is Swappable)选项,需要独立去挂例如VRTK_FixedJointGrabAttach关节抓取以及VRTK_SwapControllerGrabAction可交换手的脚本(这两个脚本需对应VRTK_InteractableObject脚本的grabAttachMechanicScript对象和secondaryGrabActionScript对象,若没有对应则默认生成一个关节抓取并对应。交换手没有对应的话默认此物体不能交换)。另外还有一个重要的脚本:VRTK_OutlineObjectCopyHighlighter脚本可以为被抓取物体提供边缘高亮,而不再是整体高亮。这个我看了旧版本也有此脚本,但是被我忽略了,好