一.作业要求

1、 图片识别与建模
2、 虚拟按键小游戏
3、开发城市定向越野运动 MR 游戏【可选】
游戏要求:

  • 准备:

    • 选择为每个用户准备一套拼图图片(含干扰图片),按一定策略发布到目标位置(随机位置偏移)
    • 越野地图一张
  • 开始游戏:
    • 玩家在起点,用手机在起点附近,捕捉图片并显示第二个目标
    • 然后每到一个目标位置,捕捉与前面捕捉的图片可拼接的图片,拼接成功,则显示下一个目标
  • 游戏结束:
    • 玩家到达终点的时间最短者胜

二.具体实现

首先是AR的介绍:增强现实(Argumented Reality (AR))是一种将真实世界信息和虚拟世界信息“无缝”集成的新技术,是把原本在现实世界的一定时间空间范围内很难体验到的实体信息(视觉信息,声音,味道,触觉等),通过电脑等科学技术,模拟仿真后再叠加,将虚拟的信息应用到真实世界,被人类感官所感知,从而达到超越现实的感官体验。
接着根据教程下载安装AR SDK:进入Unity3d,选择File->Build Settings->PlaySettings->XRSettings,点击支持虚拟现实即可开始下载Vuforia。

接着是申请密钥,进入vuforia官网,点击右上角注册,接着点击Develop->LicenseManager->Get Development Key


根据提示创建以后一个项目就创建好了。

然后添加数据库用于保存识别图的数据。点击Develop->Target Magager->Add Database


这里选择Single Images做为识别图并填写Width,我填写的是0.3m,我选择的图片如下,这样便创建好数据库了。


上传之后会生成识别图的特征点数据包,Vuforia还会为你的识别图打分,星级越高说明识别效果越好。图像的星级 我们会注意到将识别图上传到数据库时,target项右侧会有星级显示,星级越高代表识别图的质量越高。经试验,影响识别图最主要的因素就是待识别图的对比度,这里应该要极力避免使用有很多连续相同或相似大色块的图片,因为分析识别图特征点的原理是 根据色块边缘 来决定的,色彩变化越丰富,色块边缘、棱角就越多,进而特征点就越多,而特征点越多就意味着识别图质量越高。另外,以下三点是识别图质量最主要影响的三个方面:

  • 星级越高越容易识别
  • 星级越高识别速度越快
  • 星级越高更不容易出现抖动
    可以看到我选择的是别吐为4星。

    接着下载数据库,点击Download Database->Unity Editor,得到一个Unity包。

    接着在Unity中创建ARCamera

    然后点击Vuforia Configuration,复制之前的License Key粘贴到App License Key中。

    接着创建游戏对象ImageTarget,然后双击之前下载好的数据库的Unity包,便可导入这个Unity包,然后再Image Target Behaviour中选择自己导入的数据库。在Advanced中点击Add Virtual Buttion即可创建虚拟按钮了,需要注意的是虚拟按钮需要在识别图之内。

    接着调整ARcamera和ImageTarget的位置,保证camera能够照到ImageTarget


    最后是代码实现,脚本挂在ImageTarget上,先找到子对象中所有按钮,然后一点击按钮就切换物体位置。
using System.Collections;using System.Collections.Generic;using UnityEngine;using Vuforia;public class control : MonoBehaviour, IVirtualButtonEventHandler { private GameObject dra;void Start() {VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>(); for (int i = 0; i < vbs.Length; ++i) vbs[i].RegisterEventHandler(this);dra = transform.Find("dragon").gameObject;}public void OnButtonPressed(VirtualButtonBehaviour vb){switch (vb.VirtualButtonName){case "vb1":dra.transform.position = new Vector3(0.2f, 0f, 0f);break;case "vb2":dra.transform.position = new Vector3(-0.2f, 0f, 0f);break;}}public void OnButtonReleased(VirtualButtonBehaviour vb){switch (vb.VirtualButtonName){case "b1":break;case "b2":break;}}}

这样就完成了图片识别与建模和虚拟按键小游戏两个任务,最后实现图如下

三.实验总结及思考

在这次作业中我第一次接触到了AR技术并实现了简单的AR小游戏,学习了Vuforia在Unity中的使用方法,也让我体会到了AR的奇妙之处。这次作业也是3d课程的最后一次作业,在一学期的3d课程的学习之中我也学习到了很多,从最基础的Unity小游戏开始一步步变难,我也对Unity的适用于变成越来越熟悉,这些都使我受益匪浅。最后也感谢老师和TA的悉心教导以及师兄师姐博客的鼎力支持。
Github地址:ARButton
演示视频:AR制作虚拟按钮

Unity3d--AR/MR 技术相关推荐

  1. unity3D学习10 AR/MR技术

    AR/MR技术 作业要求 图片识别与建模 虚拟按键小游戏 Vuforia配置过程 虽然在课程网页上已经讲解过Vuforia的配置使用过程,但是我在实际使用过程中发现课程网页上的教程太过老旧,很多配置方 ...

  2. Unity3d AR 增强现实技术列表(2016年3月31日更新)

    名称 类型 支持平台 ARToolkit Free OSX Windows Android iOS ARmedia 可试用+收费 Android iOS CraftAR IN2AR Kudan Max ...

  3. 遇见未来-北京AR/MR线下技术交流邀请您(已过期)

      最近联合了华为准备做一次AR/MR行业技术讨论交流活动,侧重于AR/MR技术发展前沿.项目实施落地.5G风口下的产业发展前景.当前面临的困局及应对方案等话题.热忱欢迎北京这边的朋友过来交流讨论! ...

  4. 探测器视场目标位置怎么算_肖特发布新一代RealView高折射率玻璃晶圆,AR/MR眼镜可实现对角线65视场角...

    5月14日消息,作为国际化高科技集团,德国肖特推出了新一代肖特RealView™玻璃晶圆,为增强现实/混合现实(AR/MR)穿戴式硬件制造商们提供新的解决方案,其高达1.9的高折射率可大幅提升用户体验 ...

  5. 十亿红包还不够,揭秘快手春节四大技术玩法:AI/AR/MR都被装进App,为了这个春晚真拼了...

    郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 要不大家现在都喜欢科技互联网公司呢. 如今每年春节,这些公司都是绞尽脑汁.争前恐后想给全国人民拜年.互动,发红包. 这不,BAT之后,今年 ...

  6. 谈谈XR关键技术及VR/AR/MR/XR关系

    一.先别被VR/AR/MR/XR搞晕,说说区别 虚拟现实(Virtual Reality,VR).增强现实(Augmented Reality,AR)等业务以其三维化.自然交互.空间计算等完全不同于当 ...

  7. 光大控股新经济领投智能眼镜研发公司nreal,推动AR、MR“技术-产品-应用”生态体系建设...

    2月26日消息,近日,光大控股新经济完成对"MR智能眼镜"研发公司nreal的A+轮投资.此轮融资由光大控股新经济领投,爱奇艺.华创资本.顺为资本跟投.据悉,本轮融资资金将用于技术 ...

  8. 音视频云系列 - 谈谈XR关键技术及VR/AR/MR/XR关系

    作者,李琳,毕蕾,灯塔 一.先别被VR/AR/MR/XR搞晕,说说区别 虚拟现实(Virtual Reality,VR).增强现实(Augmented Reality,AR)等业务以其三维化.自然交互 ...

  9. 三维点云可以导航吗_基于视觉高精定位的“室内AR导航”技术点解析

    自1967年卫星导航技术开放民用以来,经过50多年发展,导航定位已广泛应用于交通物流.地理信息.高精度测量等多种行业中,提升了现代社会的运营效率,也为个人生活和出行都带来巨大便利. 不过,尽管导航定位 ...

  10. unity3D AR涂涂乐制作浅谈

    unity3D AR涂涂乐制作浅谈 AR为现在是虚拟现实较为火爆的一个技术,其中有个比较炫酷的就是AR涂涂乐的玩法,这个技术可以把扫描到的图片上的纹理 粘贴到模型上实现为模型上色的功能,但是我们需要怎 ...

最新文章

  1. mysql数据库备份、恢复文档
  2. pip(pip3)安装依赖库失败
  3. mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解
  4. python 读取二进制文件 转为16进制输出
  5. python中的time库安装步骤-python中time模块怎么用
  6. php 错误记录_PHP中把错误日志保存在系统日志中(Windows系统)
  7. 用jdbc连接各数据库驱动
  8. gridcontrol 控件的用法
  9. 簇的局部变量中布尔类型_java基础2(变量、常量、数据类型)
  10. 制作Docker镜像的两种方式
  11. 阿里辟谣:不会高薪聘请黑阿里网站的人;苹果欲用 iPhone 替代身份证和护照;Python 3.9.0b4 发布| 极客头条
  12. 使用 WinSCP 连接到 VCSA 6.5 失败并显示以下错误:收到的 SFTP 数据包过大
  13. day 15 模块、起别名、from导入
  14. 《Linux/UNIX OpenLDAP实战指南》——1.4 OpenLDAP目录条目概述
  15. ArcGIS API for Silverlight开发入门(0):为什么要用Silverlight API?
  16. 阿里云徐栋:“下一代互联网”三大技术趋势
  17. [Linux]正则表达式和grep使用
  18. Assimp 裁剪编译 Android 库
  19. android设置默认浏览器下载地址,android手机如何设置默认浏览器?
  20. 关于windows密码加密算法的说明

热门文章

  1. python 生成式 生成器
  2. Project(7)——收货地址 - 增加
  3. VS2015+Qt5.13.1安装教程
  4. Netty权威指南(第2版) pdf百度网盘下载
  5. excel宏破解方法
  6. 苹果计算机磁盘格式,苹果电脑上怎么进行格式化磁盘?
  7. linux 添加udp端口映射,iptables下udp端口转发
  8. 华三交换机dhcp 保留地址
  9. JS字符串转json,json转字符串
  10. 希尔密码C语言源代码,希尔密码加密解密(示例代码)