VRTK配置

VRTK配置,第1张

打开unity把VRTK的unity package和Steam VR的unity package导入到你的项目里面,然后新建一个空物体

然后把名字改成CamRig然后建立子物体把名字改成[VRTK_SDKManager](也可以不用这名字,开心就好)将其坐标归零,然后给其建立一个子物体,子物体也是一个空物体归零,名字叫SDKSetups,然后在给其建立一个子物体取名叫SteamVR给这个脚本添加一个叫VRTK_SDK SetUp的脚本(这个是VRTK自带的脚本),然后把SteamVR的[CameraRig]和[SteamVR]的Prefab拖到其子物体上。点击SteamVR的这个空物体,把脚本上的Auto Populate后面的对勾给取消然后把这个脚本拖GameObject到对应的地方,如图

然后再把刚才去掉的对勾打上,这这脚本的意思就是在你运行程序的时候会自动加载SteamVR的摄像机其实现的功能。然后在CamRig下建立另一个子物体名字叫[VRTK_Scripts]这里就是放置一些需要的脚本,先建立一个子物体叫PlayArea把VRTK——Body Physics和VRTK——Height Adjust Teleport脚本放到这个物体上,这两个脚本确认了你的相机能行走的范围和高度以及一些基本的参数,可以自己研究一下

然后在[VRTK_Scripts]建立两个空物体分别叫LeftController和RightController这里放置给左右手柄添加的事件,我这里添加的是左手柄为射线 *** 作,右手柄为抛物线 *** 作

pointerToggleButton:激光的显示开关,激光在VR里相当于鼠标箭头的指向功能。

pointerSetButton:激光停留的指向目标,触发目标的功能,相当于鼠标点击。

grabToggleButton:抓住物体动作,配合使用 VRTK 插件集成的抓取,投掷功能。

useToggleButton:触发目标事件,比如把手柄放在门把手上,按下这个按键,触发门打开的功能;手柄放在电灯开关上,按下按键,触发电灯开发的功能。这个和pointerSetButton区别在于后者需要激光落在目标上,才能触发目标上的功能。

uiClickButton:触发UI Canvas 目标的事件。

menuToggleButton:游戏目录显示开关。

axisFidelity:按键按下的强度,完全按下是1,松开时是0。现在只有Trigger按键(手部后面扳机)有此属性。

triggerClickThreShold:扳机要到多大程度,才能使用扳机的触发功能。如果是05,则表示只要按下一半的程度就可以触发,如果是1,则必须完全按下才能触发。

以上是设置各个按键在插件中交互的功能。

如果要获得每个按键具体的使用情况,如按下、松开按键、手触摸板的按键位置、扳机的按下强度等,则需要在 VRTK_ControllerEvent 注册对应按键的事件。

在VRTK_ControllerEvents_ListenerExample脚本中,监听了VRTK_ControllerEvent所有按键的事件,和按键的参数信息。如下图的扳机键的按键事件。 (以上别名按钮已经过时,分别被其它组件中的But取代,在“VRTK_Controller Events”脚本中有注释说明)

事件的参数在VRTK_ControllerEvents中是:

第二个要添加的是VRTK_Interact Touch

主要的作用就是和物体发生碰撞的交互

第三个要添加的是VRTK_UI Pointer

主要作用是使其能与UI发生交互

第四个要添加的是VRTK_Controller UI Pointer Events_Listener Example

第五个要添加的是VRTK_Pointer

其Enable Teleport这个选项选择是可以用此位移,不选中就是射线打中的地方摄像机不会位移到这个地方

在Pointer Renderer这里面把父物体LeftController加入进去

第六个要添加的是VRTK_Straight Pointer Renderer

这个主要就是射线的 *** 作,Layers To Ignore中选择一些被无视的对象,即射线射到这些物体上不会有反应,这些物体通过加Layer层标签来决定。

在这里我们每次导出的功能模块会觉得非常麻烦。那么我在下面就不讲解功能模块的导入了,我直接将VRTK40 Demo中的所有功能模块都导入进来,一次性使用了。

然后运行测试就可以看到我们的右手手柄的射线被忽略了 左手手柄的射线还是可以选中的。

首先我们打开菜单栏下Window->Zinnia->Observable List Component Generator,打开窗口后,名字我们自己可定义一个,然后Type类型我们选择List Contains Rule,然后点击生成,就会在Hierarchy面板上生成一个游戏物体

当然我们也可以直接将PointerValidTargetRule指定给右手射线中的Target Validity中。这样的话就是除了Cube可以是有效目标其他的都不是有效目标

很成熟的两个方案:

手柄发射射线,射线碰到UI或者你需要的东西,然后 *** 作手柄进行触发

手柄直接触摸动画播放的载体进行,手柄按键或者碰到就触发

注:如果没有动画载体,就是在看动画,也看不到手柄,就想按键触发,其实就是找到按键的方法接口就行了,个人认为比较好的几个VRSDK:VRTK,SteamVR,这两都用过,都不错

首先我们先导入功能包,导入功能包过程在这就不讲解了与上一篇文章中的导入方法一致。在此还需导入Input功能包

Indicators中包含了objectpointers对象指针与spatialtargets空间目标两个功能模块,首先我们先来看objectpointers,导入功能包后首先将上节课的UnityXR以及TrackedAlias导入,然后在Hierarchey面板上右键选择Tilia->Prefabs->Indicators->ObjectPointers->IndicatorsObjectPointersCurved导入曲线,导入后然后在IndicatorsObjectPointersCurved下的脚本PointerFacade属性中的FollowSource中我们需要指定一下我们曲线需要跟随哪个手柄这里我们指定右手的手柄,然后下面我们还需要指定一下ActivationAction(激活的动作),意思是使用什么方式来激活我们的手柄,这时候我们就需要使用输入事件了,首先在Hierarchey面板上右键选择Tilia->Prefabs->Input->UnityInputManager->ControllerMappings->InputUnityInputManagerOpenVRRightController,这里我们将右手的控制器导入,使用右手发射曲线,然后我们展开InputUnityInputManagerOpenVRRightController可以看到手柄的按键,RightTrackpad代表手柄圆盘的触摸以及按键,RightTrigger代表手柄的扳机键,RightGrip代表抓握的按键。RightButtonPrimary_Press[0]代表手柄的菜单键

我们可以展开直线的预制体可以看到里面又起始点Origin,中间的线RepeatedSegment以及终点的Destination,这时候我们就可以直接更改里面的游戏物体。

这是一个涉及到开发方面的技术了,一般常用开发HTCvive内容的主要有Unity和UE4,首先你要安装这个程序,然后运行,里面有一个HTCvive开发专用页面,你点击那里进去就可以开始编程啦。

一、准备工作SteamVR中开启摄像头

打开SteamVR在设置中开启摄像头

二、SteamVR提供了现成的例子

项目导入SteamVR Plugin 和 VRTK(应为习惯了使用VRTK),图中红框为开启摄像头的例子

打开后:发现预制体摄像机中多了,这两部分就是开启VIVE前置摄像头的关键,Quad为前置摄像头画面显示的地方

这个时候运行程序是没有效果的,因为程序并没有配置完整环境

注意:使用实例中提供的摄像机

配置好后应该是这个样

这个时候运行应该就能看到VIVE摄像机的画面,如果不行再检查一下设置中是否开启了的摄像头

但这个时候会发现有三个画面,可以调整Quad材质的相关属性

手动调整是不行的,需要在代码中修改

打开TrackedCamera下的Steam VR_Test Tracked Camera脚本

找到这个位置,通过修改红框中的代码,来实现相机画面的裁剪

通过targetlocalScale修改画面的长宽大小

以上就是关于VRTK配置全部的内容,包括:VRTK配置、VRTK_4.0使用指南(三)射线忽略以及只和某个物体检测、unity中如何利用htc的手柄进行触发动画等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9267751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存