Unity中使用暴风魔镜进行VR游戏开发

2023-05-16

@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.tbdlibsqlite3.tbd库:


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

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




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




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



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

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

实例脚本如下:

[csharp]  view plain  copy  print ? 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //MojingInput.cs  
  3. //  
  4. // Created by [JiangXinhou]  
  5. //  
  6. // Copyright jiangxinhou@outlook.com (http://blog.csdn.net/cordova)  
  7. using UnityEngine;  
  8. using System.Collections;  
  9. using MojingSample.CrossPlatformInput;//引入暴风魔镜跨平台输入类库  
  10.   
  11. public class MojingInput : MonoBehaviour {  
  12.   
  13.     // Update is called once per frame  
  14.     void Update () {  
  15.   
  16.         if (CrossPlatformInputManager.GetButtonDown ("LEFT")) {  
  17.             //十字键左键按下  
  18.         }  
  19.         if (CrossPlatformInputManager.GetButtonDown ("RIGHT")) {  
  20.             //十字键右键按下  
  21.         }  
  22.         if (CrossPlatformInputManager.GetButtonDown ("UP")) {  
  23.             //十字键上键按下  
  24.         }  
  25.         if (CrossPlatformInputManager.GetButtonDown ("DOWN")) {  
  26.             //十字键下键按下  
  27.         }  
  28.   
  29.         if (CrossPlatformInputManager.GetButtonUp ("OK")) {  
  30.             //手柄OK键抬起  
  31.         }  
  32.         if (CrossPlatformInputManager.GetButtonUp ("C")) {  
  33.             //手柄返回键抬起  
  34.         }  
  35.         if (CrossPlatformInputManager.GetButtonUp ("MENU")) {  
  36.             //手柄菜单键抬起  
  37.         }  
  38.         if (CrossPlatformInputManager.GetButtonUp ("CENTER")) {  
  39.             //十字键中心抬起  
  40.         }  
  41.         //获取手柄摇杆水平摆动值  
  42.         float x = CrossPlatformInputManager.GetAxis("Vertical");  
  43.         //获取手柄摇杆竖直摆动值  
  44.         float y = CrossPlatformInputManager.GetAxis("Horizontal");  
  45.     }  
  46. }  

三、。。。 。。。

@未完待续




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


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity中使用暴风魔镜进行VR游戏开发 的相关文章

随机推荐

  • 教你玩转Linux—用户账号的管理

    导读用户账号的管理工作主要涉及到用户账号的添加 修改和删除 添加用户账号就是在系统中创建一个新账号 xff0c 然后为新账号分配用户号 用户组 主目录和登录Shell等资源 刚添加的账号是被锁定的 xff0c 无法使用 1 添加新的用户账号
  • 【CMAKE系列】cmake中CMakeLists.txt脚本的常用语法

    在不同的平台编译的时候 xff0c 会用到一些系统内置的变量 xff0c 比如操作系统名称 xff0c 版本号之类 xff1a CMAKE SYSTEM xff1a 系統全名 xff0c 如 Linux 2 4 22 xff0c FreeB
  • linux usb usbip驱动详解(一)

    在分析usbip驱动前 xff0c 我们先来学习一下usb总线在linux系统下的表示 我们知道在linux中 xff0c proc和 sys这个两个文件系统包含了很多有用的信息 xff0c 所以usb的信息自然也少不了利用它们来展示 1
  • linux usb usbip驱动详解(二)

    终于来到usbip驱动代码分析了 xff01 我们在做产品时 xff0c 通常是先讨论方案 制定协议 编码和测试 usbip的方案是行得通的 xff0c 它是从URB对象获取信息 xff0c 然后从tcp发送出去的 xff0c URB是li
  • linux usb usbip驱动详解(四)

    我们先讲解vhci hcd驱动 xff08 linux 4 20 14的usbip驱动 xff09 usb主机控制器驱动hcd学习心得 xff1a 可以阅读某款SOC的主机控制器驱动代码 xff0c 譬如TI的am3358芯片 xff0c
  • docker 启动 centos-7 xrpd server

    docker 启动 centos 7 xrpd server 效果预览 docker 启动 centos 7 xrpd server 连接容器 docker run dit name 61 xrdp p 10022 22 p 13389 3
  • 常见数据结构和算法 的图形界面可视化实现

    解压后 xff0c 运行里面的index html xff0c 推荐火狐浏览器下 针对某一数据结构 或 算法的实现 xff0c 有动态的界面演示 xff0c 并且有相应的代码 xff0c 对学习有很好的参考作用 http pan baidu
  • 再见,2012,你好,2013.

    其实这篇日志过年前 xff0c 已经写得差不多 xff0c 但是忘记发了 xff0c 现在补上 xff0c 现在应该还不是太晚吧 ps xff1a 想了一个很俗的标题 61 61 2012年 xff0c 是对我意义最不平凡的一年 这一年 x
  • 无人机—加速度计与光流数据融合

    加速度计与光流数据融合 无人机的定点定高飞行时实现目标识别追踪 xff0c 航点规划 xff0c 循迹巡线等下一个任务的基础 xff0c 稳定的定高定点飞行才能执行其他高级算法 在室内没有GPS的情况下 xff0c 要想实现这个目标 xff
  • 【转】C语言中 -> 是什么意思?

    gt 是一个整体 xff0c 它是用于指向结构体 C 43 43 中的class等含有子数据的指针用来取子数据 换种说法 xff0c 如果我们在C语言中定义了一个结构体 xff0c 然后申明一个指针指向这个结构体 xff0c 那么我们要用指
  • GIS开发学习推荐书目

    书名 作者 出版社 版次 GIS 基础 地理信息系统导论 US Kang tsung Chang xff1b 陈健飞 译 电子工业出版社 第七版 ArcGIS地理信息系统空间分析实验教程 汤国安 杨昕 科学出版社 第二版 编程 基础 C语言
  • SINS/GNSS组合导航:组合导航设计(卡尔曼滤波)

    SINS GNSS组合导航将SINS输出信息与GNSS信息进行组合 xff0c 状态量为 卡尔曼滤波原理参照卡尔曼滤波 xff08 KF xff09 与扩展卡尔曼滤波 xff08 EKF xff09 讲解与推导 xff0c 核心就是五个递推
  • VSLAM学习(一) 三维运动、相机模型、SLAM模型

    目录 VSLAM学习 一 三维运动 相机模型 SLAM模型 VSLAM学习 二 非线性优化 VSLAM学习 三 单目相机位姿估计 VSLAM学习 四 Bundle Adjustment 一 三维空间刚体运动 1 1 旋转矩阵 同一向量在不同
  • ssh远程提示“找不到匹配的keyexchange算法”解决方案

    20230216更新 xff1a xshell官网地址 xff1a https www xshell com zh free for home school 新的知识 xff1a 是因为openssh版本比自己的ssh工具如xshell4版
  • JAVA中的类和对象之this的详解

    系列文章目录 第一章 JAVA中的类和对象之this的详解 目录 前言 一 为什么要有this引用 二 this的三种用法 1 this 成员变量 2 this 成员方法 3 this 调用其它的构造方法 三 this的引用特性 前言 JA
  • 这么学,好玩,有趣,逗死了!(2017年系统规划与管理师上午综合知识试题试题解析(六))

    IT服务风险管理中 xff0c 对风险的识别是很重要的一项工作 识别方法中 xff0c 通常采用文档审查 信息收集技术 检查表 分析假设和图解技术 下面 xff08 xff09 选项不属于信息采集技术 xff08 51 xff09 A 德尔
  • 松滋历史(1)--松滋县建县历史考证

    刘鲋鮈总共4个儿子 xff1a 刘建德 刘梁 刘延年 刘度 长沙顷王刘鲋鮈的儿子刘梁 汉昭帝始元六年 xff08 公元前81年 xff09 xff0c 六月乙未封高城节侯 汉宣帝元康元年 xff08 公元前65年 xff09 xff0c 正
  • 松滋历史(2)--高成县为什么这么高光?

    东汉开国皇帝刘秀 xff0c 是长沙定王刘发第5代世孙 也就是说 xff0c 东汉开国皇帝刘秀爷爷的爷爷与高城侯刘梁 xff08 高城县 xff08 松滋县前身 xff09 创始人 xff09 的爷爷是亲兄弟 在哪个特别讲血统的年代 xff
  • 为什么要报考系统架构设计师考试

    为什么要报考系统架构师考试 最近一年多 xff0c 很多朋友来信 xff0c 问我什么要报考系统架构设计师考试 为什么参加这个考试 xff0c 这个考试有用吗 xff1f 对自己的职业会带来什么好处 xff1f 我想有以下几个方面 xff1
  • Unity中使用暴风魔镜进行VR游戏开发

    64 VR简介 虚拟现实VR Virtual Reality 和增强现实AR Argument Reality 的概念其实在很多年前就已经出现 xff0c 2015年下半年开始变得火热 xff0c 在各大媒体圈子中频繁出现 xff0c 而今