敲黑板!揭开“VR APP开发”的神秘面纱

导语:2016作为VR虚拟现实的元年,各大VR厂商纷纷推出自己的硬件设备,巨头们建立自己的VR生态圈,推出各自的设备-平台-sdk为一体的闭环,随着VR硬件设备以及各大平台的推出完善,VR内容将成为下一阶段的需求爆点,VR开发也将成为IT热门职位。

本文旨在为各路希望进军VR的开发者们提供VR的开发指引。


Step1 了解VR app依赖的运行环境和硬件设备

VR APP代码的运行环境(不包括显示环境)包括PC端、移动端、浏览器端和VR头显端,运行环境主要依赖于VR头显(Head-mounted Display,缩写HMD)类型。

目前主要市场上主要有以下 3 种VR头显(HMD) 设备:

滑配式头显

入门级HMD,价格便宜。这种设备由一个盒子和两块凸透镜组成,与智能手机相连接,将 2D 显示变成 3D VR 显示。滑配式头显设备性能依赖于主机系统(智能手机),智能手机是提供 VR 效果的必备部分,因此为移动端VR native app以及移动端浏览器的WebVR网页运行提供硬件支持。

厂商:滑配式 HMD 设备包括谷歌 Cardboard 和三星 Gear VR。

cardboard插入智能手机体验VR,主要交互形式是凝视触发事件,新一代的cardboard提供手柄

分离式头显

分离式 HMD 设备较滑配式 HMD 设备复杂,内置多种电子零部件。两者的主要不同是,分离式 HMD 设备拥有自己的显示屏,计算和处理模块主要还在电脑或者主机。因此主要支持运行在PC端的APP或者WebVR网页。

厂商:分离式 HMD 设备包括 Facebook Oculus Rift、HTC Vive 和 PlayStation VR。

整合式头显

整合式 HMD 设备拥有强大的计算能力和追踪系统。作为一款独立的计算设备,整合式 HMD 设备将处理器和显示器合为一体,配备一整套零部件,价格高昂,app的运行环境主要是头显的操作系统,因此现在应用还不是很广。

厂商:微软 HoloLens(AR)


Step2 认识VR app项目产出流程

 一个VR app项目从落地到可运行大致需要经历三步:产品设计、UI设计和3d建模、开发编程。

1.产品设计

产品经理向来都把握着app的第一环,在这个阶段VR产品经理需要定位产品是面向移动端用户、还是使用onculus或者HTC vive头显的用户,还需要对用户行为和产品功能进行多方面考虑,比如需要设计用户在裸眼下点击菜单和VR环境下凝视菜单的交互流程。同样,如果开发的是VR游戏,我们需要VR游戏产品经理对整个游戏进行策划。产品经理在第一环主要是输出原型交互图和prd。

谷歌VR资源平台daydream app

2.UI设计与建模

产品原型出来之后,设计师就可以根据交互原型进行VR场景设计了(大部分的VR菜单设计都是采用弧形化的metro瓷片风格),游戏的设计师还需要对场景进行3d建模,现在主流的建模工具是c4d、3dmax、maya等,一些依赖于视频资源为内容的app还需要专业的360摄像机和录音器进行全景录制。

3.开发编程

当所有资源都准备完之后,就是VR开发者发挥了,与其他app开发相比,VR 开发者需要考虑更多的是3d场景的开发以及VR设备的事件触发,下文将进行主要介绍。


Step3 理解VR开发要点

1) VR场景开发

开发阶段我们需要根据设计师的3d模型开发360°虚拟场景,这个阶段有点像web前端开发的编写html和css布局。

一个静态的VR场景主要包含三个要素:场景相机实体

VR场景的坐标轴

VR开发空间主要由 场景、相机、对象实体组成

场景scene:即用户所处的虚拟环境,VR场景的中心坐标轴x、y、z分别代表3d环境里的宽度、高度以及深度,我们可以将开发的场景分成由多个三维网格组成的世界,所有的VR元素如相机和实体都要被包含在内。

相机camera:代表用户的眼睛所在的位置,相机的位置代表用户在VR场景所在的位置。

实体entity:代表虚拟世界里的所有物体,这些实体一般具有四个基本属性为大小位置角度材质,按照实体在场景里的功能分类,我们还可以分成:地面、天空、灯光和其它物质,我们可以通过设置实体的位移、大小、旋转等属性来布局用户的虚拟环境。

阿里buy+虚拟商店

静态场景开发完之后,我们需要为场景元素增加动画,VR的动画产生主要是两个方式:1.页面初始化完成时触发;2.用户事件触发。

VR动画其实主要是通过编程来控制相机或者实体的属性来实现,比如控制相机的位移来模拟用户角色在场地里的移动,又比如我们给砍刀这个实体注册监听,用户挥动手柄来触发场景里砍刀的位移等,这点跟其他app开发方式是相同的,都是需要给组件注册事件监听函数,不同的是VR的事件触发类型。

2)事件触发类型:

用户在VR场景的事件类型主要为:初级模式:凝视触发、手柄触发;高级模式:体感手势触发、语音识别触发、行走触发。

凝视触发是VR头显支持的基本功能,VR按钮监听到用户凝视行为即可触发事件;

手柄触发类型依赖于VR设备配套的手柄所持支持手势类型,一般手柄都配置了水平陀螺仪、加速计等传感器,主要用于move平移、rotate转动、press按压按钮的触发事件;

玩家使用Oculus Rift手柄进行瞄准
用户使用手柄射击方式触发按钮

体感手势触发:这是个人比较支持的交互方式,它让双手进入VR世界,如leap motion。

利用装在VR HMD的leap motion实现体感手势交互

语音识别触发:通过语音识别发送指令,是VR社交较为认可的交互方案。

行走触发:比较高级的触发事件,市面较少见,一般需要万向跑步机传感输入用户的位移信息。

KAT-WALK万向跑步机可以输入用户行走、跳跃、坐等事件

3)开发技术与框架:

主要有三个方向:VR大型游戏开发、VR移动端应用开发、WebVR网页开发

VR游戏开发

目前开发VR游戏最主流的框架是Unity 3D和Unreal Engine 4。

其中,Unity3D开发语言主要使用C#或者JavaScript,所以对于web开发者来说比较容易入门。而且Unity支持上述三种类型的头戴显示器,是跨平台支持最好的开发框架和渲染引擎,这使得我们开发的VR游戏可以是运行在浏览器网页、移动端上以及PC端的app。

UE4和Unity3D是VR游戏开发主流框架

移动端VR开发

Google VR SDK主要用来开发运行在ios、Android手机上的原生app,适用于滑配式头显。

浏览器端的WebVR网页开发

VR模式浏览网页

如果我们希望将vr场景应用在网页浏览器上,WebVR API允许使用分离式头显来观看运行在PC端上的网页(草案阶段),也支持使用滑配式头显观看移动端浏览器的网页,这提供了另一个开发模式,即使用开发web前端网页的方式开发VR。

在 Web 上开发 VR 应用,有下面三种方式:

1.JavaScript, WebGL 与 监听设备方向(Device Orientation)

2.JavaScript, Three.js 与 WebVR

3.火狐WebVR框架A-Frame

A-Frame是一个通过 HTML 创建 VR 体验的开源 WebVR 框架。通过该框架构建的 VR 场景能兼容智能手机、PC、 Oculus Rift 和 HTC Vive所有使用到浏览器的场景。

关于WebVR的知识,这里就不细说啦,具体将在下一篇进行详细介绍。

社区资源:

2016中国VR研究报告:VR概论介绍以及国内VR情况描述

Unity 3D for VR:使用U3D开发VR教程

Google VR SDK:VR移动端App开发者网站

WebVR API:MDN关于WebVR API描述

Chrome Experiments for Virtual Reality:Chrome 团队提供的 6 个 VR 案例

腾讯VR官网:腾讯建立的VR开发者社区

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • WebVR即web + VR的体验方式,我们可以戴着头显享受沉浸式的网页,新的API标准让我们可以使用js语言来开...
    YoneChen阅读 11,207评论 16 66
  • 最近WebVR API 1.1已经发布,2.0草案也在拟定中,在我看来,WebVR走向大众浏览器是早晚的事情了,今...
    YoneChen阅读 13,502评论 2 16
  • 水墨山水染穹苍,碎花萋草织锦毯。 风暖鸟鸣声声脆,桥下水缓浣衣忙。 山前村中炊烟起,堤上樟花叶中藏。 河畔亭前人独...
    近者悦远者来阅读 177评论 1 1
  • 阿菱:这多大的海滩啊,怎么没有人啊! 阿球:我们不是来了吗?你是在缅怀夏日的海滩吧? 阿菱:对,夏日的海滩,嘈杂喧...
    云水坡头阅读 475评论 0 0