记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到。目前公司有一个App开发的需求,想要融合一下AR到App中以便为客户提供更好的体验,因此我开始了一些调研和学习,会依次总结一些文章出来与各位分享。此外,也希望能给更多的.NET&.NET Core开发者看到用C#语言开发AR应用的场景,有更多的人使用C#开发应用程序。

一、理清VR、AR与MR的概念

1.1 VR

  所谓VR,就是Virtual Reality,虚拟现实,就是把虚拟世界的东西呈现到你的面前,让你以为是真实的。其实,游戏世界就是典型的虚拟现实。

  

电影头号玩家 — 里面全是VR世界

1.2 AR

  所谓AR,即Augmented Reality,增强现实,是指将虚拟世界的东西叠加到现实世界里。2018年任天堂公司推出了一款Pokemon Go的游戏,运用了AR技术,玩家可以通过手机屏幕在现实世界中发现精灵,然后进行捕捉或战斗。

  

Pokemon Go — 一款AR手机游戏

1.3 MR  

  所谓MR,即Mixed Reality,混合现实,与AR相反,MR是指将真实世界的东西叠加到虚拟世界里。

举个栗子, 对于修汽车,有些老师身怀绝技且经验丰富,但人数有限,而汽车故障可以发生在任何地方,无法保证每个修车店都有优秀的技师。如果有了MR工具,现场的技师就能把车况排成三维的虚拟图像传给你老师傅,老师傅则可以根据眼前看到的非常真实的现场情况给出修理建议,而且还能够在三维的虚拟实体上把每一步都指点出来,现场的技师只要照着做就可以保证修理质量了。

  

MR混合现实—将真实世界叠加到虚拟世界

1.4 More AR?

  目前VR已经很成熟,AR正在广泛地应用之中,而MR还在研究阶段,这里我主要关注AR。

  (1)AR的行业应用及发展趋势

  AR目前主要应用在幼教、游戏及大屏互动之中。AR游戏目前处于不断试水阶段,大屏互动已经广泛地应用在了博物馆、商场及广告屏等公共场所。

  (2)AR的主流应用玩法

  • Scan It — 根据识别图出发AR操作
  • Place It — 由用户根据需要将虚拟物体拖动到真实环境的某个区域之中
  • Find It — 将虚拟物体直接初始化在真实环境中的某个区域(就像它本来就真实存在一样)引导用户去寻找得到快感

  

  (3)如何制作AR?

  不同的项目和开发人员会有不同的选择,这里介绍一种常见的工具技术栈:

  • 引擎:Unity
  • AR开发工具包:EasyAR(中国出品)、Vuforia(高通出品)、ARKit(苹果出品)、ARCore(谷歌出品)

Note:如果将Unity比作厨房,各种资源是料理用的食材,那么制作AR的SDK就是菜品的配方。  

  • 3D美术工具:AutoDesk MAYA
  • 平面美术工具:Photoshop

二、Unity与EasyAR环境准备

2.1 Unity与EasyAR版本

    

  这里Unity选择版本为5.5.2,因为跟随了我参考的书籍《UnityAR增强现实完全自学教程》的版本,避免我在学习初期就碰到很多坑,降低学习的挫折感。

  这里AR SDK选择EasyAR,版本为1.3.1,因为也是跟随参考书籍,实际开发中还可以考虑苹果公司的ARKit以及高通公司的Vuforia。

  

2.2 安装Unity

  由于我们下载的是历史旧版本,因此到archive中找到5.5.2,并下载它:

  

  打开Unity5.5.2f1.exe开始安装:

  在选择Unity组件时,勾选“Android Build Support”,如果是Mac主机,还可以勾选“iOS Build Support”:

  然后就是一路的Next了,再然后就耐心等待一会吧,安装需要一定的时间。最后你可以注册并登陆Unity账号,我们可以选择免费个人版用于学习。

  然后就可以创建一个项目了,要注意的是项目名称及文件存放路径不要出现中文字符(包括中文输入状态下的文字及符号)。

  然后就进入了Unity的Editor主界面了:

  关于Editor的细节,这里就不再赘述了,有兴趣的可以阅读我的这一篇,或者浏览参考书《Unity AR增强现实完全自学教程》。

2.3 安装EasyAR

  首先需要去EasyAR官网注册一个账户,然后在下载页面找到历史版本v1.3.1,注意是选择v1.3.1 Unity Samples(它不是单纯的EasyAR Unity SDK v1.3.1,而是官方的样例Samples)。

  然后将下载的文件解压,以备后续使用。

三、第一个AR应用程序

  接下来我们以EasyAR SDK Unity Samples中的一个案例HelloAR来作为第一个AR应用程序,看看如何实现。

3.1 EasyAR SDK基本配置

  在Unity中打开刚刚解压后的EasyAR Unity Samples,选择HelloAR这个子项目进行打开:

  然后在弹出的对话框选择“Upgrade”。

  在打开Unity之后,我们可以在项目资源面板(Project)中按文件夹层级 Hello AR - Scenes 找到HelloAR场景文件,双击进入场景,可以看到如下图所示的画面:

  

*.图中展示了识别图和他们的增强效果模型

  在场景资源(Hierarchy)面板中,可以看到加载入的“EasyAR_Startup”这个AR相机,选中它并转到检视(Inspector)面板,可以看到如下所示的画面,要求我们输入AR密钥才能激活这个AR相机。

  

  这时需要我们回到EasyAR的官网,进入开发中心获取AR密钥。这里我们要做的就是添加一个SDK License,这里我选择的是免费版。此外,由于这里我用的是老版本1.x的SDK,因此需要复制SDK 1.0的key。

  

  将这段key粘贴近刚刚的AR密钥输入框中:

  

  点击运行按钮,(事前确保摄像头为开启状态),则可验证密钥是否有效:

  (1)识别图1:原谅我拍的不行,因为必须要与一个手机给摄像头展示识别图

  

  (2)识别图2:

  

  至此,基于EasyAR的第一个示例Hello World就跑起来了,虽然我们还没有写一行代码,但至少有了一个初步的感性认识。

3.2 发布你的AR应用

  接下来,仍然先不写代码,来体验下刚刚这个Demo应用发布的效果。

  (1)File - Build Settings :打开发布设置面板,如下图所示:

  

添加要发布的场景(Scenes)、选择要发布的平台(比如iOS),然后就是Build!

  (2)首先来一个Windows平台的发布:

  进入PlayerSettings,输入一些产品相关的信息:

  

  开启分辨率设置:Enabled

   

  然后就可以点击Build,生成后的文件如下图所示:

  

  双击exe,进入应用界面,由于启用了分辨率选择设置,会首先选择分辨率:

  

  然后点击Play,开始AR之旅:

  当然,还可以发布为Android平台的应用程序,如下图所示,不过今天就到此为止,下次有机会再介绍:

  

三、小结

  本文简单地介绍了VR、AR以及MR三者的概念及其关系,然后通过Unity与EasyAR介绍了一个HelloAR的示例的基本配置与运行,最后介绍了一下基于Unity如何发布AR应用程序。虽然都很简单,而且没有涉及到一行C#代码,但是可以对AR有个初步的认知,后续有机会还会分享更多我的学习经历。

参考资料

李晔,《Unity AR增强现实完全自学教程

  

王煜全,《混合现实:把真实世界叠加进虚拟世界

百度AR平台,《无处不在的AR应用

EasyAR,https://www.easyar.cn

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

基于Unity的AR开发初探:第一个AR应用程序的更多相关文章

  1. 基于Unity的AR开发初探:发布AR应用到Android平台

    本文接上一篇,介绍一下如何通过Unity发布第一个AR应用至Android平台,在Android手机上使用我们的第一个AR应用. 一.一些准备工作 1.1 准备Java JDK 这里选择的是JDK 1 ...

  2. 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字“Hello Android”,并将应用程序的名称更改为“FirstApp”。

    需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字"Hello Android",并将应用程序的名称更改为"Firs ...

  3. 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行

    需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行 实现步骤: 打开 Android Studio,创建一个 Andr ...

  4. 基于wepy和云开发的动漫资讯小程序----233次元

    233次元小程序 # 233次元小程序 项目描述- 基于微信小程序的动漫咨询小程序,采用`wepy`框架开发:- 后台数据采用小程序的云开发存储: 线上体验 部分截图                 ...

  5. 基于Taro与Typescript开发的网易云音乐小程序

    基于Taro与网易云音乐api开发,技术栈主要是:typescript+taro+taro-ui+redux,目前主要是着重小程序端的展示,主要也是借此项目强化下上述几个技术栈的使用,通过这个项目也可 ...

  6. 基于Taro与typescript开发的网易云音乐小程序(持续更新)

    基于Taro与网易云音乐api开发,技术栈主要是:typescript+taro+taro-ui+redux,目前主要是着重小程序端的展示,主要也是借此项目强化下上述几个技术栈的使用,通过这个项目也可 ...

  7. 介绍用C#和VS2015开发基于Unity架构的2D、3D游戏的技术

    [Unity]13.3 Realtime GI示例 摘要: 分类:Unity.C#.VS2015 创建日期:2016-04-19 一.简介 使用简单示例而不是使用实际示例的好处是能让你快速理解光照贴图 ...

  8. 【Unity原神AR开发实战 2022】下载原神模型,PMX转FBX,导入到Unity,AR设置,测试应用程序,生成应用程序

    文章目录 一.前言 二.模型下载 1.官网下载 2.模之屋官方下载 3.第三方链接 三.pmx转fbx 1.Blender插件CATS的下载与安装 2.pmx模型的导入 四.Unity开发部分 1.V ...

  9. 在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

随机推荐

  1. Linux 命令行输入

    这几天刚刚接触到Linux,在windows上安装的VMWare虚拟机,Centos7.安装什么都是贾爷和办公室的同事帮忙搞定的. 在虚拟机界面,按快捷键Ctrl+Alt+Enter,可以全屏显示Li ...

  2. Kapacitor之TICK脚本,监控输出

    好久没更新博客园了,说来也惭愧,之前说好每隔几天更新一个的,虽然没什么人看,但是作为一个记录,回顾也是能有新的认识,这篇博客是讲的目前我在工作中使用的一个结束点,这个技术点目前网上资料少之甚少,也是希 ...

  3. win10更新失败——适用于Windows 10 Version 1709 的03累积更新,适合基于x64系统(KB4088776)更新失败

    相信最近很多人被windows的更新折磨坏了,下面来介绍一下解决办法,有用的话请点赞! 首先将C盘中的这个文件夹删除:"C:\Windows\System32\Tasks\Microsoft ...

  4. 函数上下文this

    一般来说谁调用上下文都指向谁,具体有以下几种情况: 1.函数用圆括号调用,函数的上下文是window 注意:所有的全局变量都是window的属性,而函数里边定义的变量谁的属性也不是. 2.函数作为对象 ...

  5. PAT1122: Hamiltonian Cycle

    1122. Hamiltonian Cycle (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The ...

  6. Linux kernel的中断子系统之(五):驱动申请中断API

    返回目录:<ARM-Linux中断系统>. 总结:二重点区分了抢占式内核和非抢占式内核的区别:抢占式内核可以在内核空间进行抢占,通过对中断处理进行线程化可以提高Linux内核实时性. 三介 ...

  7. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  8. 在centos,docker中安装HeadlessChrome

    在centos6中安装chrome与chrome-driver,中间走了很多弯路,遇到很多坑,现将详细步骤总结如下.参考博客链接:https://blog.csdn.net/u013849486/ar ...

  9. 《javascript语言精粹》读书笔记 Item1 精华与语法

    第一章 精华 任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多.但javascript的流行却不受他的质量影响. javascript为何如此流行?因为他是we ...

  10. Git常用命令解说

    http://blog.csdn.net/hangyuanbiyesheng/article/details/6731629 1. Git概念  1.1. Git库中由三部分组成         Gi ...