1、https://developer.vuforia.com注册账号。

2、分别添加License Manager(连接钥匙),Target Manager(图片后台下载)。

3、下载vuforia-unity-6-2-6.unitypackage (46.20 MB),下载Target Manager里面上传的图片。

4、打开Unity 加载第三部的两个包。

5、如下图unity组件添加

6、钥匙添加后此时这里就可以选择所添加的图片了 如图标注出,下拉选择。背景图片变成选择的图片;然后就可以吧想要展示出来的模型添加成ImageTarget的子物体

7、此时我们就可以实现AR功能。这里我加了两个按钮 实现动画的切换跟返回(附带Button跟模型同时出现隐藏)

8、需要添加的代码如下

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. using Vuforia;
  5. using System;
  6.  
  7. public class ChontrolScripts : MonoBehaviour {
  8.  
  9. private Animator ani;
  10. private AnimatorStateInfo current;
  11. private AnimatorStateInfo last;
  12.  
  13. public GameObject canvas;
  14. public DefaultTrackableEventHandler DTEH;
  15.  
  16. // Use this for initialization
  17. void Start () {
  18. ani = GetComponent<Animator>();
  19. current = ani.GetCurrentAnimatorStateInfo();
  20. last = current;
  21.  
  22. DTEH.found += canvansShow;
  23. DTEH.last += cannasHide;
  24.  
  25. }
  26.  
  27. private void cannasHide()
  28. {
  29. if (canvas.activeSelf)
  30. {
  31. canvas.SetActive(false);
  32. }
  33. }
  34.  
  35. private void canvansShow()
  36. {
  37. if (!canvas.activeSelf)
  38. {
  39. canvas.SetActive(true);
  40. }
  41. }
  42.  
  43. // Update is called once per frame
  44. void Update () {
  45.  
  46. if (ani.GetBool("Next"))
  47. {
  48. current = ani.GetCurrentAnimatorStateInfo();
  49. if (current.shortNameHash!=last.shortNameHash)
  50. {
  51. ani.SetBool("Next", false);
  52.  
  53. current = last;
  54. }
  55. }
  56. if (ani.GetBool("Back"))
  57. {
  58. current = ani.GetCurrentAnimatorStateInfo();
  59. if (current.shortNameHash != last.shortNameHash)
  60. {
  61. ani.SetBool("Back", false);
  62.  
  63. current = last;
  64. }
  65. }
  66. }
  67.  
  68. public void OnButtonClickNext()
  69. {
  70.  
  71. ani.SetBool("Next",true);
  72.  
  73. }
  74. public void OnButtonClickBack()
  75. {
  76. ani.SetBool("Back", true);
  77. }
  78.  
  79. }
  1.  
  1. /*==============================================================================
  2. Copyright (c) 2010-2014 Qualcomm Connected Experiences, Inc.
  3. All Rights Reserved.
  4. Confidential and Proprietary - Protected under copyright and other laws.
  5. ==============================================================================*/
  6.  
  7. using UnityEngine;
  8.  
  9. namespace Vuforia
  10. {
  11. /// <summary>
  12. /// A custom handler that implements the ITrackableEventHandler interface.
  13. /// </summary>
  14. public class DefaultTrackableEventHandler : MonoBehaviour,
  15. ITrackableEventHandler
  16. {
  17. #region PRIVATE_MEMBER_VARIABLES
  18.  
  19. private TrackableBehaviour mTrackableBehaviour;
  20.  
  21. #endregion // PRIVATE_MEMBER_VARIABLES
  22.  
  23. public delegate void FoundOrLastEvent();
  24. public FoundOrLastEvent found;
  25. public FoundOrLastEvent last;
  26.  
  27. #region UNTIY_MONOBEHAVIOUR_METHODS
  28.  
  29. void Start()
  30. {
  31. mTrackableBehaviour = GetComponent<TrackableBehaviour>();
  32. if (mTrackableBehaviour)
  33. {
  34. mTrackableBehaviour.RegisterTrackableEventHandler(this);
  35. }
  36. }
  37.  
  38. #endregion // UNTIY_MONOBEHAVIOUR_METHODS
  39.  
  40. #region PUBLIC_METHODS
  41.  
  42. /// <summary>
  43. /// Implementation of the ITrackableEventHandler function called when the
  44. /// tracking state changes.
  45. /// </summary>
  46. public void OnTrackableStateChanged(
  47. TrackableBehaviour.Status previousStatus,
  48. TrackableBehaviour.Status newStatus)
  49. {
  50. if (newStatus == TrackableBehaviour.Status.DETECTED ||
  51. newStatus == TrackableBehaviour.Status.TRACKED ||
  52. newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
  53. {
  54. OnTrackingFound();
  55. }
  56. else
  57. {
  58. OnTrackingLost();
  59. }
  60. }
  61.  
  62. #endregion // PUBLIC_METHODS
  63.  
  64. #region PRIVATE_METHODS
  65.  
  66. private void OnTrackingFound()
  67. {
  68. Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
  69. Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
  70.  
  71. // Enable rendering:
  72. foreach (Renderer component in rendererComponents)
  73. {
  74. component.enabled = true;
  75. }
  76.  
  77. // Enable colliders:
  78. foreach (Collider component in colliderComponents)
  79. {
  80. component.enabled = true;
  81. }
  82. if (found != null)
  83. {
  84. found();
  85. }
  86. Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
  87. }
  88.  
  89. private void OnTrackingLost()
  90. {
  91. Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
  92. Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
  93.  
  94. // Disable rendering:
  95. foreach (Renderer component in rendererComponents)
  96. {
  97. component.enabled = false;
  98.  
  99. }
  100.  
  101. // Disable colliders:
  102. foreach (Collider component in colliderComponents)
  103. {
  104. component.enabled = false;
  105.  
  106. }
  107. if (last != null)
  108. {
  109. last();
  110. }
  111. Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
  112. }
  113.  
  114. #endregion // PRIVATE_METHODS
  115. }
  116. }

AR_Demon(使用vuforia平台提供的钥匙跟后台,实现相机拍图片读取模型以及视频的功能)的更多相关文章

  1. 【经验随笔】Java通过代理访问互联网平台提供的WebService接口的一种方法

    背景 通常有两点原因需要通过代理访问互联网平台的提供的WebService接口: 1. 在公司企业内网访问外部互联网平台发布的接口,公司要求通过代理访问外网. 2. 频繁访问平台接口,IP被平台封了, ...

  2. .NET提供了三种后台输出js的方式:

    .NET提供了三种后台输出js的方式: 首先创建 js文件testjs.js {    Page.ClientScript.RegisterClientScriptInclude("keys ...

  3. 步步为营-73-asp.net的简单练习(根据美工提供静态页面,编写后台代码)

    说明:实际企业中开发分工是很明确,往往程序员根据美工提供的UI界面进行后台代码的编写. 1.1 原始HTML页面 1.2 使用aspx进行修改 这里使用到了三层架构 using System; usi ...

  4. 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案

    文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案  介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...

  5. 30行代码消费腾讯人工智能开放平台提供的自然语言处理API

    腾讯人工智能AI开放平台上提供了很多免费的人工智能API,开发人员只需要一个QQ号就可以登录进去使用. 腾讯人工智能AI开放平台的地址:https://ai.qq.com/ 里面的好东西很多,以自然语 ...

  6. 如何通过AzureAD平台提供的授权方式访问sharepoint online

    官方文档: 1.https://docs.microsoft.com/zh-cn/previous-versions/azure/dn645543(v=azure.100)?redirectedfro ...

  7. 把演讲人的桌面、头像、声音合成后推送到 指定的直播流平台上; 录制电脑桌面、摄像头头像、声音保存为本地视频; 适用于讲课老师、医生等演讲内容保存为视频; 提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案

    提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案 Winform/WPF 中嵌入 office ppt(powerpoint)解决方案示: ...

  8. Hadoop平台提供离线数据和Storm平台提供实时数据流

    1.准备工作 2.一个Storm集群的基本组件 3.Topologies 4.Stream 5.数据模型(Data Model) 6.一个简单的Topology 7.流分组策略(Stream grou ...

  9. 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)

    开发微信/易信公共平台时,调试往往很麻烦,一般只能在手机上边试边改, 或在服务器写日志.当你的服务器脚本有Bug时,手机上没有显示,追查是不容易的.我在开发过程中,编写了一个调试器, 能仿真微信/易信 ...

随机推荐

  1. NMEA协议 上位机 C# (转)

    源:NMEA协议 上位机 c# 前些时间写做了两款用NMEA协议的上位机,在这里做一个总结和记录.和大家分享,也为了以后不会忘记. NMEA协议总体来说,相对简单,是气象上比较成熟的协议. 主要有以下 ...

  2. iOS 数字每隔3位添加一个逗号的

    +(NSString *)countNumAndChangeformat:(NSString *)num { ; long long int a = num.longLongValue; ) { co ...

  3. Tsinsen-1487:分配游戏【树状数组】

    首先一定要看到x + y + z = N这个条件,没看到就世界再见了. 赢的人得分需要大于等于2,那么无非就是 (x, y), (x, z), (y, z), (x, y, z) 大于其他的点.但是考 ...

  4. Unity3D ——强大的跨平台3D游戏开发工具(三)

    第四章 为地形添加水源.水流以及水下的模糊效果 制作好了地形的各种效果,接下来我们给场景添加一些水效果,使场景更加丰富. 第一步:添加水面 由于我在上一次的地形创作中就已经在山峰之间制作了一块洼地,它 ...

  5. imagebutton、imageview的属性

    [转]http://blog.csdn.net/victoryckl/article/details/14162131 http://blog.sina.com.cn/s/blog_68b3fdc30 ...

  6. 笔记整理--玩转robots协议

    玩转robots协议 -- 其他 -- IT技术博客大学习 -- 共学习 共进步! - Google Chrome (2013/7/14 20:24:07) 玩转robots协议 2013年2月8日北 ...

  7. OC 优化目录

    把 main. info 和 appdelegate 放到自己的新建目录 1.去掉info.plist的警告 在build phases->copy Bundle Resources中去掉inf ...

  8. iOS 设置控件圆角、文字、字体

    以按钮为例: UIButton btn = [UIButton new]; btn.layer.masksToBounds = YES; btn.layer.cornerRadius = 10.0; ...

  9. 判断activity是否显示在界面上

    boolean result = false; ActivityManager am = (ActivityManager) context .getSystemService(Context.ACT ...

  10. java_web学习(8)会话与状态管

    HTTP简介       WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议.HTTP是hypertext transfer protocol(超文本传输协 ...