近期总有朋友询问该如何学习VR相关的知识,花了些时间,结合着自己的经验,以及参考国外的一些教程推荐(主要参考Tee Jia Hen的总结),将相关知识做了以下整理,希望可以给大家带来小小的帮助。总体来说,VR技术知识的学习,大概涉及三部分。
原生VR app开发
开发VR app或者游戏可以让VR内容更加丰富,刺激整个VR大环境的发展, 进而吸引更多的用户接触VR,让整个VR生态更繁荣。你开发的应用将安装在MAC、PC、Play Station 或者安卓、iOS上面。
这将是VR的其中一个边界。你需要弄清楚VR的UI/UX,然后让用户以正确的方式充分享受VR带来的益处。你需要学习一种3D引擎。Unity是个优秀的入门引擎,掌握它需要学习C#和JavaScript.html" target="_blank" class="relatedlink">JavaScript语言。
如果你是个编程新手,我推荐你看《JavaScript DOM编程艺术》、《Eloquent JavaScript》这两本;如果你已经有一定程度编程经验,可以直接看《JavaScript语言精粹》。对于Unity,可以看一下Unity3d官网.html" target="_blank" class="relatedlink">Unity3d官网给出的Roll-a-ball,是个不错的小教程,可以用它初步熟悉下Unity。看完了这个,就可以直接去Oculus官网的Developer Center学习文档和SDK了。
个人认为,学习Unity的最佳方式就是自己去尝试着开发一个简单的小游戏,在过程中遇到问题的地方就去Google一下,或者去Stackoverflow寻求帮助。其次就是和VR开发者论坛的朋友们多交流,互帮互助。
其次,刚刚上面讲的教程都是关于VR的输出设备或者说VR头显,如果你对VR输入设备感兴趣,想开发VR的UI/UX,Leap Motion是个不错的选择(当然还有Oculus touch 或者 HTC Vive),可以去leapmotion官方看看开发者文档。
最后,除了基础编程知识,我建议再补充一些数学知识,推荐《Essential Mathematics for Games and Interactive Application:A Programmer’s Guide,Second Edition》。
VR电影的录制
VR电影是VR另一个边界,方法是使用特殊的全景摄像机来录制360度视角的影片。
拍摄全景视频,首先需要一套VR摄影设备。目前有很多解决方案,这里不一一列举了,有兴趣的同学可以Google搜索「VR camera rig」。光场相机将会是这个领域的颠覆者,其中360Heros全景相机架是个不错的选择。
平时如果你想给你的朋友分享一段普通视频,原生的VR视频足矣。但如果你想拍一段电影,你需要对视频做编辑,这时候普通的视频编辑器就不能用了,必须使用VR视频编辑器,比如「SpliceVR Editor」。
VR web开发
毋庸置疑,原生VR应用和游戏以及VR视频会最先普及,但是最终,肯定会走向web。开发者们还记得「一次编写,处处运行」这句古老的名言吗?网页就是我们实现这一承诺的最大可能。与其开发仅能在单一平台或VR头显上运行的原生应用程序,开发者们不如采用web来打造自己的VR体验,这样就可以简简单单通过浏览器运行了。Google和Mozilla携手致力于WebVR的建设,我们可以预见3D版本的万维网的到来。
随着用户们对原生VR应用需求的膨胀,他们也一定期待开发者创造出VR的web应用。
首先,VR web体验将带给你类似浏览facebook或youtube的体验。用户在web上,可以将视频切换到「VR模式」。和VR电影不同的是,用户可以在VR环境中来做VR购物、VR约会或者VR在线课程的学习。
首先你需要学习一下three.js。three.js是一款运行在浏览器中的 3D 引擎,你可以用它创建各种3D场景,包括了摄影机、光影、材质等各种对象,它是由JavaScript编写的WebGL第三方库。你可以去它的官网学习:threejs.org。然后参考Github上的 borismus/webvr-boilerplate项目试着实现一个简单的VR网站。记住使用Chromium或者Mozilla nightly来测试你的VR站,参考webvr.info。接下来,试着向你的场景中加入3D模型,并试着改变它的位置,并将它旋转,threejs.org的examples中有丰富的小例子。假如你想向其中加入一些物理信息系统,参考Github中的Hello-Cannon.js!项目。
看到这,你是否对VR技术的入门知识有个大概的了解呢?其实VR开发并不是什么特别的新东西,它跟传统的Native和Web开发相差并不远。希望这篇文章可以给喜欢VR的同学们带来一些小小帮助。