EasyAR 初学者入门指南(3)---二维码+AR的应用(上)
2017-09-11 14:07
351 查看
二维码在我们生活总早已是司空见惯了,当AR碰撞上二维码,一定可以产生好玩的效果。EasyAR对于二维码的识别与支持是相当不错的,所以在这一篇与下一篇的教程中,我们会分享如何从零开发二维码+AR 的应用。
Step 1:开发环境
我们需要新建一个unity项目,并将"EasyAR_SDK_2.0.0_Basic" 的unitypackage导入,关于EasyAR+unity 这些基础操作不懂的可以看看之前的文章“EasyAR
初学者入门指南(1)---显示模型”,在这里我一笔带过。导入之后,我们的unity目录界面应该是这样的:
我们删除原有的Main Camera,将"EasyAR_ImageTracker-1_QRCode-1"
拖到面板中。并将官网申请的Key填好。
观察"EasyAR_ImageTracker-1_QRCode-1"这个预制体,对比与我们之前常用的"EasyAR_Startup",发现多了一个"BarCodeScanner"
的部分。
它上面所挂的脚本"QRCodeScannerBehaviour"使用来实现二维码的扫描与识别功能的。这是对于它的具体描述:
Step 2:制作二维码资源
我们需要准备二维码的图片,有许多网站都可以来制作自己的二维码。我制作的内容大致如下:
大家也可以发挥自己的脑洞,随意写些内容,目前我们先实现通过EasyAR SDK 来实现扫描二维码 显示文字的功能。
Step 3:编辑代码
我们准备好了二维码,接下来就是在unity里编辑代码来实现功能,首先我们在"EasyAR_ImageTracker-1_QRCode-1" 下新建一个脚本,命名为"ARIsEasyBehaviour",
脚本下载地址:链接: https://pan.baidu.com/s/1dF5tigx 密码: 9ag5
我们在这段脚本文件实现的是首先Target 的识别然后是扫描二维码之后接收结果并实现绘制在屏幕上,对于Target 的found与load等方法相信大家已经很熟悉了。对于OnTextMessage()接收返回结果然后赋值给textMessage,并由OnGUI()进行绘制。我们Build测试,会实现如下的效果:
PS:在实际的开发中,我们不会像这样从零来搭建AR+二维码的开发环境,一般是直接在EasyAR官网的实例进行二次开发,这样会大大提高我们的效率。下一篇我们会实现二维码+AR的一个实例。
Step 1:开发环境
我们需要新建一个unity项目,并将"EasyAR_SDK_2.0.0_Basic" 的unitypackage导入,关于EasyAR+unity 这些基础操作不懂的可以看看之前的文章“EasyAR
初学者入门指南(1)---显示模型”,在这里我一笔带过。导入之后,我们的unity目录界面应该是这样的:
我们删除原有的Main Camera,将"EasyAR_ImageTracker-1_QRCode-1"
拖到面板中。并将官网申请的Key填好。
观察"EasyAR_ImageTracker-1_QRCode-1"这个预制体,对比与我们之前常用的"EasyAR_Startup",发现多了一个"BarCodeScanner"
的部分。
它上面所挂的脚本"QRCodeScannerBehaviour"使用来实现二维码的扫描与识别功能的。这是对于它的具体描述:
Step 2:制作二维码资源
我们需要准备二维码的图片,有许多网站都可以来制作自己的二维码。我制作的内容大致如下:
大家也可以发挥自己的脑洞,随意写些内容,目前我们先实现通过EasyAR SDK 来实现扫描二维码 显示文字的功能。
Step 3:编辑代码
我们准备好了二维码,接下来就是在unity里编辑代码来实现功能,首先我们在"EasyAR_ImageTracker-1_QRCode-1" 下新建一个脚本,命名为"ARIsEasyBehaviour",
脚本下载地址:链接: https://pan.baidu.com/s/1dF5tigx 密码: 9ag5
using System.Collections; using UnityEngine; namespace EasyAR { public class ARIsEasyBehaviour : MonoBehaviour { private const string title = "Please enter KEY first!"; private const string boxtitle = "===PLEASE ENTER YOUR KEY HERE==="; private const string keyMessage = "" + "Steps to create the key for this sample:\n" + " 1. login www.easyar.com\n" + " 2. create app with\n" + " Name: HelloARQRCode (Unity)\n" + " Bundle ID: cn.easyar.samples.unity.helloarqrcode\n" + " 3. find the created item in the list and show key\n" + " 4. replace all text in TextArea with your key"; private bool startShowMessage; private bool isShowing; private string textMessage; private void Awake() { var EasyARBehaviour = FindObjectOfType<EasyARBehaviour>(); if (EasyARBehaviour.Key.Contains(boxtitle)) { #if UNITY_EDITOR UnityEditor.EditorUtility.DisplayDialog(title, keyMessage, "OK"); #endif Debug.LogError(title + " " + keyMessage); } EasyARBehaviour.Initialize(); foreach (var behaviour in ARBuilder.Instance.ARCameraBehaviours) { behaviour.TargetFound += OnTargetFound; behaviour.TargetLost += OnTargetLost; behaviour.TextMessage += OnTextMessage; } foreach (var behaviour in ARBuilder.Instance.ImageTrackerBehaviours) { behaviour.TargetLoad += OnTargetLoad; behaviour.TargetUnload += OnTargetUnload; } } void OnTargetFound(ARCameraBaseBehaviour arcameraBehaviour, TargetAbstractBehaviour targetBehaviour, Target target) { Debug.Log("<Global Handler> Found: " + target.Id); } void OnTargetLost(ARCameraBaseBehaviour arcameraBehaviour, TargetAbstractBehaviour targetBehaviour, Target target) { Debug.Log("<Global Handler> Lost: " + target.Id); } void OnTargetLoad(ImageTrackerBaseBehaviour trackerBehaviour, ImageTargetBaseBehaviour targetBehaviour, Target target, bool status) { Debug.Log("<Global Handler> Load target (" + status + "): " + target.Id + " (" + target.Name + ") " + " -> " + trackerBehaviour); } void OnTargetUnload(ImageTrackerBaseBehaviour trackerBehaviour, ImageTargetBaseBehaviour targetBehaviour, Target target, bool status) { Debug.Log("<Global Handler> Unload target (" + status + "): " + target.Id + " (" + target.Name + ") " + " -> " + trackerBehaviour); } private void OnTextMessage(ARCameraBaseBehaviour arcameraBehaviour, string text) { textMessage = text; startShowMessage = true; Debug.Log("got text: " + text); } IEnumerator ShowMessage() { isShowing = true; yield return new WaitForSeconds(2f); isShowing = false; } private void OnGUI() { if (startShowMessage) { if (!isShowing) StartCoroutine(ShowMessage()); startShowMessage = false; } if (isShowing) GUI.Box(new Rect(10, Screen.height / 2, Screen.width - 20, 30), textMessage); } } }
我们在这段脚本文件实现的是首先Target 的识别然后是扫描二维码之后接收结果并实现绘制在屏幕上,对于Target 的found与load等方法相信大家已经很熟悉了。对于OnTextMessage()接收返回结果然后赋值给textMessage,并由OnGUI()进行绘制。我们Build测试,会实现如下的效果:
PS:在实际的开发中,我们不会像这样从零来搭建AR+二维码的开发环境,一般是直接在EasyAR官网的实例进行二次开发,这样会大大提高我们的效率。下一篇我们会实现二维码+AR的一个实例。
相关文章推荐
- EasyAR 初学者入门指南(3)---二维码+AR的应用(下)
- EasyAR 初学者入门指南(4)---从零构建云识别应用
- EasyAR 初学者入门指南(1)---显示模型
- EasyAR 初学者入门指南 (2)---多图识别
- EasyAR 初学者入门指南(5)---录屏功能
- iOS应用开发入门指南 - 编写 Objective-C 代码
- 使用jquery组件qrcode生成二维码及应用指南
- 勿在浮沙筑高台 - VC初学者入门指南
- V8 JavaScript Engine 入门指南 3 -- 一个简单的V8应用
- 给 DevOps 初学者的入门指南
- 从入门到精通:卷积神经网络初学者指南
- [精彩] [推荐] FreeBSD初学者完全入门指南
- Oracle初学者入门指南-什么是Metalink -MOS ?
- DevOps 初学者的入门指南
- Git入门指南十:应用标签
- iOS 应用开发入门指南,中文教程
- iOS 开发者成长路线图-《iOS 应用开发入门指南》
- 对标小程序 ? "快应用"开发入门指南 [ 转载 ]
- 初学者的福音:游戏开发新手入门指南
- 开放Python书籍:一本短小精悍的初学者入门指南