去年有幸参与且领导了一个VR项目的开发,我们三个人组成了一个小团队,一起开发了一个VR体验项目,团队成员包括一个乐于钻研技术的大佬,一个设计水平很高的可爱小姐姐,加本咸鱼。从完全不懂虚幻引擎到建立一个具有基本功能可以完成交互的VR项目,我们花费了4个月左右的时间,而且大家都并非是专职做这个,开发研究基本是在每天的空余时间完成的。前段时间有朋友问我如何实现VR的开发,需要做哪些准备,正好在这里整理一下。这篇文章是希望给其他高校的研发团队或者喜欢VR的个人提供一个初步的指引的作用,尽量让大家少走弯路,也是将我们开发过程中的经验效果最大化吧。

1.明确并搭建好你的开发平台 (硬件平台与软件平台)

如果你不是实力雄厚的大企业或者科研机构,并不是希望从盘古开天辟地以来开始完全开发一个VR相关的项目(有些真正的研发机构是做平台的,硬件平台或者是软件平台,当然这样的还是少数),那么你需要选择一个适合的平台来完成VR的搭建。当前比较常见的VR软件开发平台就是unreal engine和unity平台,两者各有优势,如果你的编程基础并不是太好的话,建议使用unreal平台,因为unreal engine(虚幻引擎)可以使用蓝图进行图形化编程,如果你了解这个开发的逻辑,那很容易就可以上手!实现更多的交互功能,创建比较真实而丰富的VR研究和体验环境。

硬件平台的话,大家往往还是选择HTC VIVE PRO作为开发的第一选择。当前在steam vr平台下其实也有很多其他选择,比如HTC VIVE PRO \HTC VIVE PRO EYE \VALVE INDEX\。建议大家选择可以和电脑连接的VR平台,开发调试会更加简单。

如果你是用于学术用途,建议选择HTC VIVE PRO EYE,这是HTC与TOBII共同合作开发的平台,大家做眼动追踪的都知道tobii,眼动追踪行业的大哥,对于搞学术来说是比较有用的。HTC的产品内部的模型和现成的蓝图也更多一些,开发起点较低。

但是如何实现VR环境下的眼动追踪,大家还需要去研究TOBII 和HTC提供的SDK,看如何将数据提取出来。

 

当然开发是离不开计算机的,做VR开发肯定是要组装一台高配的工作站的。HTC VIVE PRO EYE建议的最低计算机配置:

处理器:
英特尔 ® 酷睿™i5-4590或AMD FX™8350,等效或更高。

显卡:
NVIDIA ® 的GeForce ® GTX 970或AMD的Radeon™R9 290相当或更好。

内存:
4 GB RAM或更多

影像输出:
DisplayPort 1.2或更高版本

USB端口:
1个USB 3.0或更高版本的端口

操作系统:
Windows 7的Windows 8.1或更高版本,Windows 10

升级到Windows 10的双重面向前方的相机最好的结果

但是说实话,你要想开发的顺利,建议使用最低(Intel i5 9400F 或者 AMD R5 3600 + NVIDIA RTX 2060+的平台)这里不推荐AMD显卡的原因是N家驱动兼容比较好,还有空余时间还可以进行CUDA加速的任务,总的来说还是N卡更加适合。

顺便个人经验来说,一定要有个双屏或者21:9显示器,宽大的显示面积在调试蓝图与材质的时候能够事半功倍。

2.确定你的项目需求

你是要实现一个怎样的VR项目呢?这个应该是产品经理的工作,但是大家往往只有一个小的科研团队,而且初次上手会不知从何下手。

这个建议一点,首先确定项目需求,项目目标可以团队共同讨论决定,但是讨论的前提是团队每个人都有足够的经验去判断我们能够在VR中实现哪些功能,能够实现哪些交互动作。这个可以参照大家玩过的游戏,比如吃鸡PUBG手机版就是通过UNREAL引擎开发的,那么大家在玩吃鸡游戏的时候绝大多数的交互功能都可以通过虚幻引擎实现。当然我们开发的是VR项目,那大家可以从STEAM或者EPIC GAME商店上找到VR的游戏,下载下来体验一下,别人能够实现的功能,也就代表着肯定在原理上是通的,但是有的功能只需要几个节点就可以完成,有的需要复杂的C++开发来实现,到底有多难,只有亲自上手开发的时候才能知道。

当明确了需求之后,使用VISIO或者脑图之类的软件,将大概的流程清晰的画出来,如上图所示。

3.与专业的人士交流与提问

我们在开发的过程中曾经遇到过一个跨蓝图的调用问题,自己怎么也解决不了,而在网上的话很少找到相关的教程,最后在QQ群里找到了一个大佬愿意帮忙教,不到十分种就解决了。常言道:“一个人走得快,一群人走得远,”,如果你遇到了卡壳的问题,请教专业人士总是最快解决问题的方法,如何请教问题也是一个重要的基本技能,十几年前曾经在网络上有个黑客教你如何问问题的国外老帖,个人觉得还是很有用的,在这里概括一下:

1.问问题之前最好说语气诚恳,比如说:“请问………………我这个问题如何解决?”、“或者请教一下…………?”这里也是个人素质的体现

2.准确描述问题的情景和背景,以及准确的错误代码,而不是一句莫名其妙的诸如“我点了没反应怎么办?”,“为啥我按教程操作了就是不行呢?”

很多软件运行时候都有错误提示,UE的提示经常出现在右下角或者编译的窗口标红位置,准确截图出现的问题,描述自己的操作,能够有效的让专业人士了解你遇到的问题,并提供更好的解答。

3.最好提供截图来方便大佬们识别问题。

真正专业的人是非常忙的,每天有数不尽的工作需要去做,截图+问题描述是最快传达问题的方式。愿意回答问题的总是少数热心人,不要让热心人寒心,也能让自己得到想要的解答,是最好的双赢。

4.制定开发计划

可以使用时间管理软件或者直接打印一个日历,一个团队需要有人来划定开发时间。举个栗子,我们是三个小组,同样的配置去开发,但真正最后独自开发成功的只有我们团队,其他团队在deadline之前还需要我们的技术支持。个人觉得还是因为没有详细的计划和时间节点。面对一个陌生的软件,不好判断时间是正常的,但是大家仍需要一个基本的开发计划,比如说我们要做几个关卡,实现那些功能的开发,这些要在几月几号之前完成。如果没有计划的限制,每个成员都去做别的事情而没有把时间和精力专注于手头的项目,最终团队只能成为一盘散沙,功能的开发也无从谈起了。

 

5.通过真正上手来掌握基本的功能开发

unity开发文档:https://docs.unity.cn/cn/current/Manual/index.html

unreal engine 官方开发文档:https://docs.unrealengine.com/zh-CN/index.html

虚幻引擎更是为开发人员提供了免费的在线教程,可以边开发边看看。官方的文档是最好的入门教程,如果你按照官方文档走一遍,基本就理解了。

这里以虚幻引擎为例:我们一开始是购买了多本关于虚幻引擎的书籍,当然后来发现很多书籍对于零基础的开发人员很不友好,有一些还行,硬着头皮看完第1-2章,而且一定要操作,一定要亲自开发。一定要操作,一定要亲自开发。一定要操作,一定要亲自开发。重要的事情说三遍,好记性不如烂鼠标。一开始遇到的困难会很多,但你坚持下来以后,对于程序开发有了基本的框架和理解,就能够越来越上手啦!

6.针对复杂的功能进行针对性的研究

这个略过,具体项目具体分析,但是总会遇到困难的功能难以实现,需要专门花费时间攻坚。

8.借助现有资源节约时间

使用UE自带的VR模板可以很好的简化开发流程,除此之外,善用淘宝也是很好的选择,但是一定要注意版权问题哦!你自己玩玩可以,但是如果商业化开发是不能随便利用TB资源的

EPIC商城的很多资源也会限时免费或者很便宜的付费资源,可以下载使用~这个多数是可商用的。

EPIC官方共享的一些项目非常精致,比如虚幻竞技场什么的,可以下载学习一下。

9.debug和输出项目

当完成开发的时候,还需要打包输出才可以让项目能够在各种电脑平台上运行。

这是一个非常痛苦且蛋疼的过程

如果你使用了大量的现成素材或者导入了奇怪的材质,会导致最终打包编译的时候出现各种爆红,最终导致打包失败。此时需要对应着报错代码和文件去一一寻找问题所在。

10.申请软件著作权

既然开发都开发了,不妨申请个软件著作权吧!软著要比专利快速的多。

申请软件著作权需要准备项目的说明文档+项目的源码导出,只要你可以打包,就能够输出源码了,unreal可以直接导出蓝图的C++代码作为软件著作权的申请,导出蓝图源码的过程请参考这个:

(本坑待填)

11.撰写相关论文

这个可以从很多地方入手啦,比如空间感知,比如抓取移动分析,虚拟现实中的人机交互,比如用户情感分析等等,多看大佬论文,多看SCI……总会有所收获。

无论是SCI、EI还是中文核心期刊,VR虚拟现实都是非常重要且新颖的一个方向,说句实话,不说国外,国内的审稿老师真正懂VR开发的没几个,但是他们会接触足够多的VR论文,而且他们了解你论文中所使用的人机交互方法和实验是否严谨,很多在现实中很简单的实验,在VR空间中可以被复现,就能够写一篇不错的论文了,当然前提是你的实验设计是非常严谨的,验证方法能够说明并支持你的论点。

总之这是我总结的一些VR项目的开发经验,希望能帮助到大家。转载请务必署名哦!

 

隐者艾伦

20200703

 

本网站的其他AR\VR相关文章,感兴趣的同学可以看一下 :

一些硬件分析:

VRARMR(XR)技术的区别和主要特点

外国研究人员通过专利分析揭示了(AR)增强现实技术近年来的发展趋势

MAGIC LEAP ONE的拆解分析和工作原理分析

【置顶文章】简要介绍AR、MR原理,畅想目前存在的主要问题的解决办法。

一些虚幻引擎的程序开发:

虚幻引擎unreal 4 如何给UMG按钮添加音效及按钮触发动作

UNREAL 4 添加关卡背景音乐以及实现背景音乐循环播放

【unreal engine 虚幻引擎 4】在ACTOR蓝图中给UMG中的按钮添加事件触发

【Unreal Engine 虚幻引擎 4】 actor蓝图中碰撞触发左右自动门的蓝图实现