@VR简介

虚拟现实VR(Virtual Reality)和增强现实AR(Argument Reality)的概念其实在很多年前就已经出现,2015年下半年开始变得火热,在各大媒体圈子中频繁出现,而今年2016年成为VR元年,像Facebook、Sony、HTC、Google等行业巨头都在虚拟现实领域推出自己的硬件设备或者专门成立虚拟现实部门做出很大的投入。

虚拟现实首先在人机交互上发生了跨越性的改变,一方面使用遥控手柄代替传统键盘鼠标等输入设备,跟踪玩家头部,玩家可以通过头部运动自然的以自由视角观察整个虚拟世界,能够720全视角观看周边环境,而在此之前,像观看电影屏幕时,120度为最佳视角范围,电影屏幕只是现实世界的一部分小视角,而虚拟现实技术强调的是玩家的“浸入感”,这也是评估VR设备质量的最重要指标,眩晕感、与现实世界的差异感都是VR设备努力避免的缺陷和努力改进之处。

目前虽然VR话题成为热点,相关技术飞速发展,但其面临的挑战十分巨大,几大公司研发的VR头盔普遍很笨重,需要大量的线缆连接,移动性差,同时价格昂贵,短时间难以推广开来。另一方面,像国内的低端VR设备,如“暴风魔镜”,利用手机屏幕做显示设备,移动性好,设备轻便,价格便宜,但其实现的原理实际上是将手机屏幕分成两部分,即牺牲一半的手机分辨率,造成实际体验中颗粒感强,“浸入感”也差,同时受帧率等因素影响眩晕感、眼睛不适感都很强,难以满足人们的期望。

@暴风魔镜开发流程


VR设备中成本最低的属国内的暴风魔镜,最新的暴风魔镜4代仅售199元人民币,其世界第一的VR设备销量和其知名度主要是因为其体型轻便、价格便宜,成为很多游戏玩家的掌上“玩具”。

暴风魔镜为开发者提供了SDK和示例Demo,使开发者可迅速将暴风魔镜加入到游戏工程中作为VR输入交互设备,暴风魔镜支持的游戏引擎为Unity3d和UnrealEngine4,官方提供的开发文档介绍了魔镜设备的开发方法,支付SDK的接入以及参数的回调、工程的配置等等。另外官方提供了暴风魔镜游戏应用发布平台,注册开发者帐号并进行个人认证或企业认证之后便可以提交应用,审核通过便可将应用进行发布以及获取利润。

这里使用暴风魔镜SDK开发一个场景游戏Demo,实现角色在场景中使用手柄控制自由走动,确认按钮人物跳跃,以及跟踪头部运动以720度自由视角观察场景和天空,并将Unity工程导出Xcode工程,进行相关配置后运行在iPhone真机设备上,使用暴风魔镜进行体验。

一、使用暴风魔镜SDK实现Demo中第三人称角色控制自由走动和自由视角的原理过程并打包在iPhone上运行:


         

可以直接改装已有的第三人称角色Demo也可以按照如下方式自行构建:

1.新建一个Unity工程,导入MojingSDK For iOS AndroidUnity暴风魔镜SDK包;

2.创建一个Scene场景,场景中导入一个地形,设置好光源以及背景音乐等;

3.导入一个人物角色模型,绑定骨骼,设置好状态机人物动画,动画主要有休息、前进、跳跃,角色控制器实现上下左右控制人物前进、左转、右转、转身,确认键控制人物跳跃。SDK提供的Demo中MojingThirdCharacterController预设已经实现了上面的功能以及监听手机陀螺仪事件跟踪用户头部运动实现自由视角;

4.设置好角色模型后要将场景中的MainCamera替换为MojingMain预设摄像头,实际上是将左右两个摄像头绑定在一起,将屏幕分成左右两部分;

5.另外加入IntegrateInputManager跨平台交互预设和Overlay聚焦预设,IntegrateInputManager用于获取手柄的按键事件,可以上下左右切换按钮,按确认键选中触发按钮;Overlay预设组件实现场景中心的GazePointer射线准星,用于聚焦UI按钮,聚焦按钮后点击确认键可以触发按钮点击事件;

完成以上步骤后运行Unity工程Game场景中出现两个摄像头视角的场景,键盘方向键可控制人物走动,但自由视角需要在真机上结合暴风魔镜进行测试;

6.使用Unity打包前需要修改Player Setting设置,Graphic APIs修改为OpenGLES2和OpenGLES3,Tartget SDK可以选择Xcode工程使用真机调试还是模拟器调试,这里选择Device SDK真机调试;

7.打出Xcode工程之后需要在工程中添加libz.tbd和libsqlite3.tbd库:

@另外真机运行可能会出现如下现象崩溃,解决办法在下面的文章中:

http://blog.csdn.net/cordova/article/details/51286551

二、暴风手柄输入按键的适配与获取(可以单独作为游戏输入设备使用):


使用手柄的输入事件需要先将IntergrateInputManager预设添加到场景中,然后在脚本中可以直接像Unity中Input.GetButtonDown(KeyCode)类似的方法获取按键事件,SDK中已经进行了键值的适配,适配在脚本中可以找到:

获取事件的脚本中需要引入:using MojingSample.CrossPlatformInput;

然后在Update周期函数中进行时间判断,比如获取按键按下:if(CrossPlatformInputManager.GetButtonDown("OK")){ }

实例脚本如下:

//
//MojingInput.cs
//
// Created by [JiangXinhou]
//
// Copyright jiangxinhou@outlook.com (http://blog.csdn.net/cordova)
using UnityEngine;
using System.Collections;
using MojingSample.CrossPlatformInput;//引入暴风魔镜跨平台输入类库public class MojingInput : MonoBehaviour {// Update is called once per framevoid Update () {if (CrossPlatformInputManager.GetButtonDown ("LEFT")) {//十字键左键按下}if (CrossPlatformInputManager.GetButtonDown ("RIGHT")) {//十字键右键按下}if (CrossPlatformInputManager.GetButtonDown ("UP")) {//十字键上键按下}if (CrossPlatformInputManager.GetButtonDown ("DOWN")) {//十字键下键按下}if (CrossPlatformInputManager.GetButtonUp ("OK")) {//手柄OK键抬起}if (CrossPlatformInputManager.GetButtonUp ("C")) {//手柄返回键抬起}if (CrossPlatformInputManager.GetButtonUp ("MENU")) {//手柄菜单键抬起}if (CrossPlatformInputManager.GetButtonUp ("CENTER")) {//十字键中心抬起}//获取手柄摇杆水平摆动值float x = CrossPlatformInputManager.GetAxis("Vertical");//获取手柄摇杆竖直摆动值float y = CrossPlatformInputManager.GetAxis("Horizontal");}
}

@目前工作暂时不涉及VR相关,不能更新了~

Unity使用暴风魔镜VR游戏开发相关推荐

  1. 《Unity 2D与3D手机游戏开发实战》简介

    #好书推荐##好书奇遇季#<Unity 2D与3D手机游戏开发实战>,京东当当天猫都有发售.彩色印制,定价89元,网店打折销售更便宜.本书配套源码.PPT课件,适合Unity游戏开发初学者 ...

  2. 揭秘VR游戏开发:与传统3D差距仅10% 低延迟是核心

    背景介绍 北京时间3月16日,索尼在GDC 2016上公布了其虚拟现实头盔--PS VR消费者版的售价:399美元(约合人民币2600元).同时,著名电子游戏<孤岛危机>开发商Crytek ...

  3. 100天学会VR游戏开发

    最近看了一篇关于VR的文章,没事干就在翻译,希望对其他人有所帮助. 第一次翻译,不足的地方还请包含和纠正. 原文链接: https://medium.com/@skynite/100-days-of- ...

  4. 从零开始丨使用Unity3D进行VIVE VR游戏开发

    从零开始丨使用Unity3D进行VIVE VR游戏开发 SteamVR插件的导入 使用Unity3D进行VR游戏的开发,首先需要具备以下条件 1 拥有一台显卡不低于GTX960性能的主机 2 拥有一部 ...

  5. 走进VR开发世界(4)——走进VR游戏开发的世界

    注: 原文2016年2月发表于公司内部社区, 最近才由同事转载出来, 删去了文中引用的一些内部文章和视频. 在这里我也只是把外网版本转过来, 留做备份. 背景介绍 我们组在2014年下半年尝试开发了一 ...

  6. 走进VR游戏开发的世界

    原文地址:http://geek.csdn.net/news/detail/76504 我们组在2014年下半年尝试开发了一款Xbox One平台的体感游戏,2015年上半年进行收尾工作的同时,结合之 ...

  7. 基于Unity的多人协作游戏开发

    基于Unity的多人协作游戏开发–第一次迭代 小组成立与大型应用软件设计第一周课堂,小组由一共5名成员组成,由王虎林担任组长,组员分别是:陈志健 李子钊 杨捷 林博韬.下面将是我们第一次迭代的主要历程 ...

  8. Unity 3D数学\图形学基础-游戏开发(向量)

    Unity 3D数学\图形学基础-游戏开发(向量) 向量运算的几何意义 标量与向量的计算 向量的模长 标准化向量 normalize 0向量 向量与向量的加减法 两点间距离公式(向量间距离) 点积,点 ...

  9. 项目三:基于vizard软件的VR游戏开发

    项目三:基于vizard软件的VR游戏开发 [知识点笔记] 1.了解 Vizard 的所有模块内容: 参阅 Vizard 命令索引(help>Introdution>welcome> ...

最新文章

  1. 2018全球硬科技创新暨“一带一路”创新合作大会,这些硬科技都要来!
  2. “数据中台”万字深度思考
  3. win10电脑插耳机没声音_教你Win10怎么录制电脑内部声音
  4. AI 时代,如何布局算力基础设施
  5. ethereum(以太坊)(七)--枚举/映射/构造函数/修改器
  6. 记一次 .NET WPF布草管理系统 挂死分析
  7. 关于半马尔可夫(semi-markov)的一个形象解释
  8. 当winform窗体的Bordestyle设置为None时,鼠标可以拖动窗体的办法
  9. Java:一步步带你深入了解神秘的Java反射机制
  10. Java线程安全策略
  11. unix编程之文件锁,exit
  12. 3Dmax转的fbx模型导入unity赋材质不能改变颜色一直是黑色
  13. Charles使用详解
  14. H5+canvas+js实现连线题
  15. IDEA git 切换分支注意事项
  16. Spring中的用到的设计模式
  17. 密码分析之单表代换原理详解与算法实现
  18. PHP的电子邮件列表替代方法:使用Mailgun的List API
  19. 城市轨道交通站应急照明疏散指示系统设计
  20. 职业生涯规划之自我探索论文

热门文章

  1. Android工程师遇到瓶颈后转行什么最好?https://blog.csdn.net/feiyu1947/article/details/86438086
  2. Redis跳跃表(SkipList)
  3. 2022-2028年中国国际货运代理行业市场竞争态势及未来前景分析报告
  4. recyclerview在Q平台的最新使用方法
  5. 【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
  6. 激光SLAM导航系列(二)SLAM与导航系统框架
  7. 在无网络时使用Unity Hub
  8. Python 中的 is not None 和 not
  9. 美团2018校招笔试
  10. webGl应用场景有哪些