归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:5360回复:31

Vuforia开发高阶七-Cloud Recognition(云识别) (第四部分)

楼主#
更多 发布于:2015-07-12 23:16
第四部分:实现CloudRecognition不同标志对应不同的模型
第三部分介绍了云服务如何获取对应的Target
问题:云服务如何获取对应的Target 经过验证,通过获取TrackableBehaviourTrackableName,即Target的名称即可获取,另外可以通过ID。


Unity3d中,
根据TargetSearchResult这个类中的TargetName UniqueTargetId属性。

ImageTracker imageTracker = TrackerManager.Instance.GetTracker<ImageTracker>();

IEnumerable<TargetFinder.TargetSearchResult> searchResults = imageTracker.TargetFinder.GetResults();

foreach (TargetFinder.TargetSearchResult tsr in searchResults) {
Debug.Log("Target Name: " + tsr.TargetName + ", Target ID: " + tsr.UniqueTargetId);
}

因此判断当前对应哪个模型,可以通过TargetName 以及UniqueTargetId来判断。



/*==============================================================================
Copyright (c) 2012-2014 Qualcomm Connected Experiences, Inc.
All Rights Reserved.
==============================================================================*/
  
using UnityEngine;
using System.Collections;
using Vuforia;
  
/// &lt;summary&gt;
/// This class manages the content displayed on top of cloud reco targets in this sample
/// &lt;/summary&gt;
public class ContentManager : MonoBehaviour, ITrackableEventHandler
{
    #region PUBLIC_VARIABLES
    /// &lt;summary&gt;
    /// The root gameobject that serves as an augmentation for the image targets created by search results
    /// &lt;/summary&gt;
    public GameObject AugmentationObject;
    #endregion PUBLIC_VARIABLES
    // 用于获取各种模型
    public GameObject[] models;
  
    #region UNTIY_MONOBEHAVIOUR_METHODS
    TrackableBehaviour trackableBehaviour;
    void Start ()
    {
        trackableBehaviour = AugmentationObject.transform.parent.GetComponent&lt;TrackableBehaviour&gt;();
        if (trackableBehaviour)
        {
            trackableBehaviour.RegisterTrackableEventHandler(this);
        }
          
        ShowObject(false);
    }
      
    #endregion UNTIY_MONOBEHAVIOUR_METHODS
  
    #region PUBLIC_METHODS
      
    /// &lt;summary&gt;
    /// Implementation of the ITrackableEventHandler function called when the
    /// tracking state changes.
    /// &lt;/summary&gt;
    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED || 
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            Debug.Log("Test..............."+trackableBehaviour.TrackableName);
            // 根据不同的Target的名称设置不同的模型
            if(trackableBehaviour.TrackableName.Equals("ArLogo")){
//              ShowObject(true);
                models[0].SetActive(true);
                models[1].SetActive(false);
            }else if(trackableBehaviour.TrackableName.Equals("cloud_reco")){
//              ShowObject(false);
                models[0].SetActive(false);
                models[1].SetActive(true);
            }
        }
        else
        {
            ShowObject(false);
        }
    }
  
    public void ShowObject(bool tf)
    {
        Renderer[] rendererComponents = AugmentationObject.GetComponentsInChildren&lt;Renderer&gt;();
        Collider[] colliderComponents = AugmentationObject.GetComponentsInChildren&lt;Collider&gt;();
  
        // Enable rendering:
        foreach (Renderer component in rendererComponents)
        {
            component.enabled = tf;
        }
  
        // Enable colliders:
        foreach (Collider component in colliderComponents)
        {
            component.enabled = tf;
        }
    }
    #endregion PUBLIC_METHODS
}

其中ArLogocloud reco是我们命名的Target的名称。

图片:图片7.png


最后的效果如下所示:

图片:图片8.png

图片:图片9.png


图片:图片10.png

图片:图片11.png

AR学院(www.arvrschool.com),从这里感触未来!

欢迎分享

xyy2015
贫民
贫民
  • UID47
  • 粉丝0
  • 关注0
  • 发帖数2
沙发#
发布于:2015-07-29 18:11
我把官方的例子也改了改,但是现在识别完第一个图之后,在识别第二个图,第二个图就没有任何反应。重新运行,先识别第二个图,也可以出来,但是再去识别第一个图,就出不来了。总是一次只能识别一张图。哪里还需要设置麽、
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2015-07-29 21:33
xyy2015:我把官方的例子也改了改,但是现在识别完第一个图之后,在识别第二个图,第二个图就没有任何反应。重新运行,先识别第二个图,也可以出来,但是再去识别第一个图,就出不来了。总是一次只能识别一张图。哪里还需要设置麽、回到原帖
这个是因为你逻辑判断出了问题吧,你检查一下
AR学院(www.arvrschool.com),从这里感触未来!
fantasycube
贫民
贫民
  • UID144
  • 粉丝0
  • 关注0
  • 发帖数4
地板#
发布于:2015-09-07 18:38
图片扫描的效果是用什么做的啊?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
4楼#
发布于:2015-09-07 22:00
fantasycube:图片扫描的效果是用什么做的啊?回到原帖
这个是Vuforia源码,貌似找不到具体实现方法。
AR学院(www.arvrschool.com),从这里感触未来!
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
5楼#
发布于:2015-09-07 22:01
fantasycube:图片扫描的效果是用什么做的啊?回到原帖
你也可以取笑他这个功能,自己写动画重新做,只不过不能检测特征点
AR学院(www.arvrschool.com),从这里感触未来!
fantasycube
贫民
贫民
  • UID144
  • 粉丝0
  • 关注0
  • 发帖数4
6楼#
发布于:2015-09-16 18:08
归海一啸:你也可以取笑他这个功能,自己写动画重新做,只不过不能检测特征点回到原帖
我只想知道这个是怎么实现的,用的什么插件?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
7楼#
发布于:2015-09-16 18:52
fantasycube:我只想知道这个是怎么实现的,用的什么插件?回到原帖
没有用插件,Vuforia自带的功能
AR学院(www.arvrschool.com),从这里感触未来!
fantasycube
贫民
贫民
  • UID144
  • 粉丝0
  • 关注0
  • 发帖数4
8楼#
发布于:2015-09-17 20:30
归海一啸:没有用插件,Vuforia自带的功能回到原帖
怎么做的?能给个解释或demo吗?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
9楼#
发布于:2015-09-17 21:27
fantasycube:怎么做的?能给个解释或demo吗?回到原帖
这个是Vuforia封装好的,因为他的SDK肯定使能够检测出特征点。其实你自己也可以模拟一个阿,只是模拟的,不是真实检测到的特征点数据。
在Vuforia工程源码没有找到相关实现的方法,android端可以看enterScanningMode(),
unity3d看这里:
        //
        // Summary:
        //     Sets the base color of the points in the scanning UI
        public abstract void SetUIPointColor(Color color);
        //
        // Summary:
        //     Sets the base color of the scanline in the scanning UI
        public abstract void SetUIScanlineColor(Color color);
AR学院(www.arvrschool.com),从这里感触未来!
沉默久了
新手
新手
  • UID366
  • 粉丝0
  • 关注0
  • 发帖数13
10楼#
发布于:2015-11-27 14:56
下面添加了3个模型,一扫描粗来了 - -#
沉默久了
新手
新手
  • UID366
  • 粉丝0
  • 关注0
  • 发帖数13
11楼#
发布于:2015-11-27 15:45
是都出来了,通过名称判断和SetActive(true);好像没起到作用似得。
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
12楼#
发布于:2015-11-27 15:55
沉默久了:是都出来了,通过名称判断和SetActive(true);好像没起到作用似得。回到原帖
你是不是开了扩展跟踪?
AR学院(www.arvrschool.com),从这里感触未来!
sgclzqq
侠客
侠客
  • UID545
  • 粉丝0
  • 关注2
  • 发帖数43
  • 社区居民
  • 忠实会员
13楼#
发布于:2015-12-23 22:57
水哥。我的也是那个问题,两个模型都是直接显示出来,换另一个识别图,还是不管用,都是直接出来的
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
14楼#
发布于:2015-12-24 00:43
sgclzqq:水哥。我的也是那个问题,两个模型都是直接显示出来,换另一个识别图,还是不管用,都是直接出来的回到原帖
模型放到ImageTarget下面了?
AR学院(www.arvrschool.com),从这里感触未来!
上一页
游客

返回顶部