本章主要内容

本章节主要向读者介绍VRTK具体使用方法,如何在SteamVR之上使用VRTK,VRTK具体的应用以及好处都有哪些,会具体分析VRTK所提供给我们的基础应用场景,通过小的案例来进行实际操作。

2.1 Unity VRTK内容介绍

Unity VRTK目前是开发HTCVIVE最全的一套开发工具,这套插件主要是在SteamVR之上进行扩展,新的扩展内容以及场景几乎包括所有常见的案例演示,甚至于很多底层代码我们都不需要接触就可以开发出相应的作品。
VRTK目前共有44个场景案例演示,每一个场景案例都会有一个具体功能,比如我们经常用到的使用射线来进行瞬移、基本的物体交互和抓取、使用贝塞尔曲线进行瞬移、通过触控板触摸来进行移动小车、使用手柄触控板来控制人物移动、通过射线来远程使用物体、射箭功能、手柄上的UI制作等,可以看出来VRTK是一个非常强大的一个开发工具,集成于很多开发环境,目前国内很多VR游戏公司、创业型VR公司、VR室内外建筑、都在使用VRTK来进行开发,他可以快速有效的缩短开发时间和开发成本。
VRTK全称是Virtual Reality Toolkit,是在SteamVR Toolkit扩展的,从开发时间上来看你可以用30%的时间来开发出80%的内容,在速度上就远远超过传统的SteamVR,VRTK实现了我们大部分所能用到的交互效果,使用VRTK对于零基础学员来说可以快速入门上手开发出相应的作品,对于程序功底深厚的开发者来说,还可以进行深入研究,在VRTK的基础上在扩展一些其他功能,相对而言对于VRTK说明文档也要比SteamVR说明文档要多的多,VRTK目前的说明文档可以多达200多页,并且对于Unity2017版本以后的兼容性也特别好。
总体上述我们可以看到VRTK无论是在性能上,还是开发速度上,都是我们现在目前唯一的首选,也许将来或者以后VRTK插件会融入到Unity开发编辑器当中,我们尽请期待以后的发展,希望读者在看完VRTK以后能开发出相应的作品出来,接下来我们看一下VRTK的场景演示案例。如图2.1所示

 VRTK场景简单概述如下:
 001_CameraRig_VRPlayArea:显示游玩区空间设置。
 002_Controller_Events:在控制台打印控制器的事件,记录手柄按键值。
 003_Controller_SimplePointer:一个具有基本对象的场景,可以通过 Touchpad来发出一条激光射线。指针事件也显示在控制台窗口中。
 004_CameraRig_BasicTeleport:具有基本对象的场景,可以使用控制器手柄Touchpad,其中用户将通过按压Touchpad来发出一条激光射线,当射线接触地面时进行触发。当Touchpad释放时,用户被传送到激光束终点位置。
 005_Controller_BasicObjectGrabbing:一个具有选择对象的场景,可以通过用控制器手柄触摸它们并且按下Grip握紧键按钮来抓取它们。释放握紧键物体将掉落。场景还演示了控制器触进行触摸换颜色等。
 006_Controller_UsingADoor:具有门可交互式对象的场景设置为usable,当按下控制器Trigger按钮时进行触碰门,门触发被打开。
 007_CameraRig_HeightAdjustTeleport:具有不同高度对象的选择位移,可以使用控制器激光束射线指向物体,如果激光束射线指向物体的顶部,则用户将被传送到物体的顶部。
 008_Controller_UsingAGrabbedObject:可以抓取可交互式对象的场景(按下Grip控制器按钮)然后使用(按下Trigger控制器按钮)。桌子上有一把枪可以被拿起来射击。
 009_Controller_BezierPointer:采用贝塞尔曲线进行瞬移,采用不同的高度进行瞬移。
 010_CameraRig_TerrainTeleporting:具有3D对象的场景,同时也是使用贝塞尔曲线进行瞬移,同上,他可以对物体的整体高度选择进行瞬移,同时搭载一个激光束射线来进行选择3D模型。
 011_Camera_HeadSetCollisionFading:设置角色头部区域,进入到物体内部显示黑屏状态,并且还可以设置碰撞后的一个黑屏颜色和渐变时间。
 012_Controller_PointerWithAreaCollision:开启可玩区域碰撞,在进行瞬移的时候确定区域空间大小是否发生碰撞,如果是无法瞬移,可以在指定的大小区域空间内瞬移。
 013_Controller_UsingAndGrabbingMultipleObjects:多个物体使用的一个3D场景,通过连续按住抓取按钮或按下抓取按钮一次拾取并再次释放来演示如何抓取可交互对象。场景还显示使用按钮可以按住以继续使用或按下使用按钮一次开始使用,再按一次停止使用,这允许多个对象同时进入其使用状态。
 014_Controller_SnappingObjectsOnGrab:演示如何设置物体的抓取位置,具有选定对象的场景,演示对控制器机制的不同捕捉,两把绿色枪,它使用一个空的游戏对象作为可交互对象的子项作为抓取的方向点,因此对象的旋转和位置与给定的旋转和位置相匹配。
 015_Controller_TouchpadAxisControl:使用控制器触控板控制汽车场景,通过触控板来移动小车,具有一定的物理学模拟,在触摸板上,上下移动手指将导致汽车向前或向后行驶。将手指移动到左侧或右侧Touchpad会导致汽车朝那个方向转动。按下Trigger将导致汽车跳跃,这利用触发轴,按下触发器越多,汽车将跳越高。
 016_Controller_HapticRumble:一个带有易碎盒子和剑的场景。剑可以被拾起并在盒子里摆动。控制器在击打盒子的同时也会放生震动,取决于剑击中盒子的力度。如果被剑击得足够硬,盒子也会分开。
 017_CameraRig_TouchpadWalking:可以通过触控板来进行前后移动的一个场景。
 018_CameraRig_FramesPerSecondCounter:按下触发器扳机键会生成一个新球体,按下触摸板会生成十个新球体。最终当存在大量球体时,FPS将下降并展示预制体。
 019_Controller_InteractingWithPointer:一个显示控制器指针激光如何用于切换可交互式对象上的使用操作,按触摸板激活激光束并将其瞄准对象,将切换其使用状态,还演示了通过手柄设置应用按钮,来显示一个手柄上的菜单。
 020_CameraRig_MeshTeleporting:通过激光束射线在导航网格上面瞬移,没有更新新的内容。
 021_Controller_GrabbingObjectsWithJoints:使用关节来抓取物体,演示了多个物体使用的实例,还有灭火器案例实验等,主要体现在Objects可以具有不同的附加机制,以确定将对象连接到控制器的最佳方式。
 022_Controller_CustomBezierPointer:演示了贝塞尔曲线,通过贝塞尔曲线进行传送或者是瞬移。
 023_Controller_ChildOfControllerOnGrab:一个射箭的场景案例,如果想做射箭游戏可以通过此场景来进行实现。
 024_CameraRig_ExcludeTeleportLocation:演示了如何将一些地点设置为不可瞬移点。
 025_Controls_Overview:一个物体使用例子,展示现有的交互式控件,不同的设置方式以及如何对它们发送的事件做出反应。
 026_Controller_ForceHoldObject:一个显示如何在游戏开始时抓取对象并防止用户丢弃该对象。场景自动抓取两把剑到每个控制器,并且不可能掉落任何一把剑。
 027_CameraRig_TeleportByModelVillage:通过使用物体瞬移,一些物体也会跟着一起瞬移。
 028_CameraRig_RoomExtender:扩展游玩区域的例子,实用性不高。
 029_Controller_Tooltips:为手柄和物体添加小贴士的一个小例子,实用性比较强。
 030_Controls_RadialTouchpadMenu:可以通过控制器触摸板上下左右触摸移动来动态选择菜单,可以应用于选项菜单,实用性比较强。
 031_CameraRig_HeadsetGazePointer:通过区域碰撞和头部跟踪进行传送。
 032_Controller_CustomControllerModel:演示多种模拟抓取枪支以及按下扳机键是否开枪的一些判断,场景比较实用,如果说做枪战类的游戏可以考虑此场为基础。
 033_CameraRig_TeleportingInNavMesh:演示如何使用网格烘焙来定义允许用户传送到的区域。
 034_Controls_InteractingWithUnityUI:演示如何使用Unity UI元素交互的场景,场景使用VRTK_UIPointer右侧控制器上的脚本,允许使用激光射线Unity UI元素进行交互,可以使用激光射线选中UI然后使用控制器扳机键来进行控制,建议使用此场景,可以在所有大型项目当中应用此UI。
 035_Controller_OpacityAndHighlighting:演示如何更改控制器的不透明度以及如何触发颜色或者使用按键可以提示UI元素。
 036_Controller_CustomCompoundPointer:演示贝塞尔曲线(Bezier)指针如何通过有效的位置进行传送,这个场景提供了一个纹理环境,用来测试传送,场景包含一个大的等离子球体和一个小的等离子球体,小球可以使用控制器扳机键进行抓取,同时大球可以使用射线来控制大球。
 037_CameraRig_ClimbingFalling:演示如何设置具有不同活动攀爬机制的场景。
 038_CameraRig_CameraRig_DashTeleport:演示了显示传送行为,场景有一个盒子,可以使用控制器抓取盒子,并且使用物体来进行传送。
 039_CameraRig_AdaptiveQuality:演示了每秒的帧数,一个优化的例子,VRTK_AdaptiveQuality,挂载这个脚本,游戏会根据GPU的负荷去调整渲染的效果,仅与Unity 5.4及更高版本兼容,。按下触发器会生成一个新球体,按下触摸板会生成十个新球体。最终当存在大量球体时,FPS将丢弃并演示脚本。
 040_Controls_PanelMenu:演示如何将可交互的面板预制物加到游戏对象以提供其他设置的场景。
 041_Controller_ObjectSnappingToDropZones:演示使用VRTK_SnapDropZone预制物为一系列对象设置预设捕捉区域的场景,并演示如何仅将某些类型的对象捕捉到某些区域,举例比如你将磁带放置到录音机里面来进行捕捉。
 042_CameraRig_MoveInPlace:演示用户如何通过以步行方式摆动控制器或利用头部摆动运动的现场跑步来移动和穿越碰撞器,按住Touchpad,人体原地踏步即可前进,也可以做左右晃动头部。
 043_Controller_SecondaryControllerActions:演示了使用一个控制器抓取对象的能力,并通过抓取和拉动第二个控制器来缩放它。
 044_CameraRig_RestrictedTeleportZones:设置一些指定的点才可以进行瞬移。

VRTK基础入门案例演示相关推荐

  1. 跟着王进老师学开发Python篇:基础入门案例讲解-王进-专题视频课程

    跟着王进老师学开发Python篇:基础入门案例讲解-166人已学习 课程介绍         共计45个项目案例+项目源码,跟着王进老师尽情玩转Python解释器! 本课程涉及Python的基础语法, ...

  2. 视频教程-跟着王进老师学开发Python篇:基础入门案例讲解-Python

    跟着王进老师学开发Python篇:基础入门案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥ ...

  3. 【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)

    [Drools规则引擎]基础入门案例五(Kie-Server+WorkBench) 介绍 搭建WorkBench 搭建Kie-Server 使用WorkBench 访问登入 客户端测试 介绍 java ...

  4. javascript高级编程教程,javascript基础入门案例

    谁有比较好的javascript视频教程 李炎恢的javascript教程,在verycd上可以下载. 结合<javascript高级程序设计>学习,应该会比较好,他这个教程就是参考了&l ...

  5. Python爬虫以及数据可视化分析!这才是零基础入门案例!

    简单几步,通过Python对B站番剧排行数据进行爬取,并进行可视化分析 下面,我们开始吧! PS: 作为Python爬虫初学者,如有不正确的地方,望各路大神不吝赐教[抱拳] 本项目将会对B站番剧排行的 ...

  6. lisp实战文库_AutoLISP基础入门案例,很受用-推荐下载

    语法简单 不用特殊的变量宣告 , 非常富有弹性 , 比起其它的程序语言 , 它的语法可 说是非常简单而有其独特的风格 ! 功能函数 强大 除一般性的功能函数外 , 又拥有为数不少控制配合 AutoCA ...

  7. 【手把手带你Godot游戏开发 第一弹】零基础入门案例:FlappyBird(教程目录及源代码)

  8. 【MAX78000基础案例演示】

    [MAX78000基础案例演示] 1. MAX78000配套软硬件 1.1 硬件 1.2 软件 1.3 demo例程 2. ADC 2.1 描述 2.2 设置 2.3 输出 3. GPIO 3.1 描 ...

  9. 零基础入门深度学习(二):用一个案例掌握深度学习方法

    导读 本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越.从本课程中,你将学习到: 深度学习基础知识 numpy实 ...

最新文章

  1. python _、__和__xx__的区别
  2. 一篇比较深刻的讲FP特性的文章
  3. Android下的Linux
  4. 写一个php发通知公告,从我的服务器PHP发送推送通知
  5. boost::hana::detail模块实现相关算法的测试程序
  6. asp.net web常用控件FileUpload(文件上传控件)
  7. 逻辑分析推理(戴帽子问题)博弈
  8. 花呗可延后还啦!支付宝“移动花卡”开启预约
  9. 二分归并排序算法_02 算法推送归并排序
  10. RS485 RS232
  11. 「转发领抱枕」40万奖金等你来挑战!阿里云ECS Cloudbuild开发者大赛重磅开启
  12. 思维导向树6级节点_树形图或思维导图类似的数据结构中如何删除特定节点?
  13. 阿里云弹性计算首席架构师分享云上应用架构演进三大方向
  14. 什么是超级立方体,HyperCube
  15. oracle语句查询时间范围
  16. OpenCV4学习笔记(57)——基于GrabCut图像分割算法实现背景替换与背景虚化效果
  17. 解决Android studio 编译问题(版本不对问题)Unable to resolve dependency for******
  18. 【LiteOS】华为LiteOS开发初体验
  19. java gnu gettext_多国语言解决方案gnu.gettext + poedit
  20. 从“走出淘系”到“Ad Tech”,阿里妈妈迎来品牌焕新

热门文章

  1. CCIE Routing Switching备考指南2007版
  2. nnUNet Windows安装
  3. 360 序列帧html生成工具,1.gif导出为序列帧
  4. ApacheCamel简介
  5. 超详细XP蓝屏代码大全
  6. 蒙特卡洛算法具体是什么
  7. 语音合成论文优选:Unified Mandarin TTS Front-end Based on Distilled BERT Model
  8. 蔡徐坤正式成为FILA全新代言人
  9. oci连接mysql_Oracle Call Interface (OCI)
  10. Dozer 时间转换问题