Skip to main content
 首页 » 资源教程

SteamVR+Unreal4 VR开发心得

2016年08月27日 18:24:0516160

最近开始使用SteamVR(HTC Vive)+Unreal4做VR开发,平时有空的时候就把开发过程中一些心得写一下。

现在国内这两个开发方向的资料真心不多,自己想查些什么也是国外各种找博客论坛视频看文档,什么语言的都有,感觉很辛苦,记录这些希望能为后人提供帮助。

靠着老板的实力,硬件配置这边应该算是非常不错了。老板特意买了块1080显卡,再有i7 6700K加32G内存和全固态,真是非常享受。另外再就是好几台Vive设备了。

目前在做的东西,可能会需要用到多个手柄,所以N多台Vive设备也就有作用了~这次就记录下超过两个Vive手柄的识别注意事项。

正常来说,Vive只用两个手柄,SteamVR程序中默认只识别两个无线连接的手柄,如图

如果想在一台PC机上识别两个以上的手柄,现在来说只能使用usb线将另外的手柄连接到电脑上让SteamVR识别,这一点也询问过HTC官方了。而且在识别的时候需要注意配对的问题,也就是一次只能配对两个手柄,区分好左右手柄。具体连接时应该如下操作:

1.先不打开任何手柄,所有手柄都处于关闭状态,除手柄外其他设备就绪后,拿两个手柄通过无线连接,按下手柄按钮直接连接。(这两个手柄设备ID号到Unreal4中应该为0,且为默认的motion controller组件所识别,这个后面详细讨论)

2.再使用数据线将另外的两个连接到电脑,SteamVR会再识别这两个手柄,程序会再多出两个手柄图标。(设备ID号应该为1)

3.同样的再继续连接其他手柄,注意一定要两个两个连接,不要一次把所有的手柄都开启电源,让SteamVR识别,不然麻烦区分哪两个是配对的,而且会容易导致配对的时候出现:一次只能配对两个手柄的提示,这时候就可能需要重启SteamVR全部重新识别。

再来到Unreal4中,这里需要注意一点:必须先开启SteamVR,再打开Unreal4编辑器,否则SteamVR会打不开。而且在SteamVR退出的时候,Unreal4编辑器也会自动关闭,文件还不会保存,所以要注意保存操作的文件。

Unreal4中比较常用的方便的识别手柄的方法就是为Actor添加motion controller组件了,如图:

其属性详情里面特有的如下:

其中需要标识下左右手,另外其坐标位置完全在其父组件坐标系下由实际位置决定,所以在编辑器中调整坐标是没有用的,在一开始的时候就可以把头盔手柄什么的坐标位置都设置为0。

快速显示出手柄的效果操作如下:

1.为你的主角Actor,Pawn,Character添加两个MotionController组件,标识好left和right。

2.为了能够在游戏中显示出手柄位置,可以为MotionController组件添加一个StaticMesh渲染出其位置效果

3.点击在虚拟现实中预览就能看到手柄位置了,同时你也可以打印下其坐标位置或者按你的需求做其他功能了。

到这一步还是普通的使用两个手柄时的操作,如果要识别两个以上手柄,MotionController组件就不能识别其余的手柄了,其只能识别SteamVR中最先识别配对的两个手柄,所以之前在SteamVR中识别手柄的顺序很重要,两个无线的手柄最好最先被识别,其余的用线。

剩余的手柄就需要靠提供的接口来识别了,如图蓝图函数:

扩展的插件函数中的Get Hand Position and Orientation通过给的Controller Index也就是手柄索引号和hand也就是左右手标记来获取这个手柄的Positon和Orientation。Controller Index为之前在SteamVR中两两配对的手柄顺序号,两个配对的手柄为相同的Index,通过hand参数区分。

到此就能识别多个手柄并获取其基本的坐标和角度值,目前HTC Vive和Unreal4设计上还是只想支持两个手柄的功能,在识别多个手柄上,肯定还是有不少容易出错的地方,目前我遇到有SteamVR中,如果有手柄电源关了,再想重新识别配对的话,就得重启SteamVR了。还有在Unreal4中,多个手柄识别下,按手柄的一些按键会让编辑器崩溃等等。所以想一次使用两个以上手柄开发还是有许多先天不足的,希望Vive官方能够把LightHouse定位技术做出更多成熟的应用出来。

最后再推荐youtube上不错的VR开发教学视频,其在GitHub上还有不错的演示工程,可以学习下~

https://www.youtube.com/channel/UChvlNUgZKmEd-Gul_Tdv8Uw

评论列表暂无评论
发表评论