AR、VR开发特刊(虚拟与现实开发特辑)Unity教程合集VR

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

2016-12-11  本文已影响2799人  YoneChen

导语: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开发者社区

上一篇下一篇

猜你喜欢

热点阅读