"We offer new support options and therefor the forums are now in read-only mode! Please check out our Support Center for more information." - Vuforia Engine Team

Metadata MultiTarget Cloud Reco

Hey Guys I am Currently working on trying to get multiple cloud targets to work but nothing is going right. Here is my Event Handler Script:

 

 

 

 

 

 

/*==============================================================================Copyright (c) 2012-2014 Qualcomm Connected Experiences, Inc.All Rights Reserved.==============================================================================*/

using System;using UnityEngine;using Vuforia;

/// <summary>/// This MonoBehaviour implements the Cloud Reco Event handling for this sample./// It registers itself at the CloudRecoBehaviour and is notified of new search results as well as error messages/// The current state is visualized and new results are enabled using the TargetFinder API./// </summary>public class CloudRecoEventHandler : MonoBehaviour, ICloudRecoEventHandler{    #region PRIVATE_MEMBER_VARIABLES

public GameObject cardFront;public GameObject cardBack;public GameObject card2;

    // ObjectTracker reference to avoid lookups    private ObjectTracker mObjectTracker;    private ContentManager mContentManager;

    // the parent gameobject of the referenced ImageTargetTemplate - reused for all target search results    private GameObject mParentOfImageTargetTemplate;

    #endregion // PRIVATE_MEMBER_VARIABLES

 

    #region EXPOSED_PUBLIC_VARIABLES

    /// <summary>    /// can be set in the Unity inspector to reference a ImageTargetBehaviour that is used for augmentations of new cloud reco results.    /// </summary>    public ImageTargetBehaviour ImageTargetTemplate;

    #endregion

    #region ICloudRecoEventHandler_IMPLEMENTATION

    /// <summary>    /// called when TargetFinder has been initialized successfully    /// </summary>    public void OnInitialized()    {        // get a reference to the Object Tracker, remember it        mObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();        mContentManager = (ContentManager)FindObjectOfType(typeof(ContentManager));    }

    /// <summary>    /// visualize initialization errors    /// </summary>    public void OnInitError(TargetFinder.InitState initError)    {        switch (initError)        {            case TargetFinder.InitState.INIT_ERROR_NO_NETWORK_CONNECTION:                ErrorMsg.New("Network Unavailable", "Please check your internet connection and try again.", RestartApplication);                break;            case TargetFinder.InitState.INIT_ERROR_SERVICE_NOT_AVAILABLE:                ErrorMsg.New("Service Unavailable", "Failed to initialize app because the service is not available.");                break;        }    }       /// <summary>    /// visualize update errors    /// </summary>    public void OnUpdateError(TargetFinder.UpdateState updateError)    {        switch (updateError)        {            case TargetFinder.UpdateState.UPDATE_ERROR_AUTHORIZATION_FAILED:                ErrorMsg.New("Authorization Error","The cloud recognition service access keys are incorrect or have expired.");                break;            case TargetFinder.UpdateState.UPDATE_ERROR_NO_NETWORK_CONNECTION:                ErrorMsg.New("Network Unavailable","Please check your internet connection and try again.");                break;            case TargetFinder.UpdateState.UPDATE_ERROR_PROJECT_SUSPENDED:                ErrorMsg.New("Authorization Error","The cloud recognition service has been suspended.");                break;            case TargetFinder.UpdateState.UPDATE_ERROR_REQUEST_TIMEOUT:                ErrorMsg.New("Request Timeout","The network request has timed out, please check your internet connection and try again.");                break;            case TargetFinder.UpdateState.UPDATE_ERROR_SERVICE_NOT_AVAILABLE:                ErrorMsg.New("Service Unavailable","The service is unavailable, please try again later.");                break;            case TargetFinder.UpdateState.UPDATE_ERROR_TIMESTAMP_OUT_OF_RANGE:                ErrorMsg.New("Clock Sync Error","Please update the date and time and try again.");                break;            case TargetFinder.UpdateState.UPDATE_ERROR_UPDATE_SDK:                ErrorMsg.New("Unsupported Version","The application is using an unsupported version of Vuforia.");                break;        }    }

    /// <summary>    /// when we start scanning, unregister Trackable from the ImageTargetTemplate, then delete all trackables    /// </summary>    public void OnStateChanged(bool scanning)    {        if (scanning)        {            // clear all known trackables            mObjectTracker.TargetFinder.ClearTrackables(false);

            // hide the ImageTargetTemplate            mContentManager.ShowObject(false);        }    }       /// <summary>    /// Handles new search results    /// </summary>    /// <param name="targetSearchResult"></param>    public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)    {        // This code demonstrates how to reuse an ImageTargetBehaviour for new search results and modifying it according to the metadata        // Depending on your application, it can make more sense to duplicate the ImageTargetBehaviour using Instantiate(),        // or to create a new ImageTargetBehaviour for each new result

        // Vuforia will return a new object with the right script automatically if you use        // TargetFinder.EnableTracking(TargetSearchResult result, string gameObjectName)  string metadata = targetSearchResult.MetaData;

  if (metadata == "Takahiro") {   cardFront.SetActive (true);  } else {   cardFront.SetActive (false);  }

  if (metadata == "Susumu") {   cardBack.SetActive (true);  } else {   cardBack.SetActive (false);  }

  if (metadata == "Kichiro") {   card2.SetActive (true);  } else {   card2.SetActive (false);  }

        //Check if the metadata isn't null        if(targetSearchResult.MetaData == null)        {            return;        }

        // First clear all trackables        mObjectTracker.TargetFinder.ClearTrackables(false);

        // enable the new result with the same ImageTargetBehaviour:        ImageTargetBehaviour imageTargetBehaviour = mObjectTracker.TargetFinder.EnableTracking(targetSearchResult, mParentOfImageTargetTemplate) as ImageTargetBehaviour;               //if extended tracking was enabled from the menu, we need to start the extendedtracking on the newly found trackble.        if(CloudRecognitionUIEventHandler.ExtendedTrackingIsEnabled)        {            imageTargetBehaviour.ImageTarget.StartExtendedTracking();        }    }

    #endregion // ICloudRecoEventHandler_IMPLEMENTATION

    #region UNTIY_MONOBEHAVIOUR_METHODS

    /// <summary>    /// register for events at the CloudRecoBehaviour    /// </summary>    void Start()    {        // look up the gameobject containing the ImageTargetTemplate:        mParentOfImageTargetTemplate = ImageTargetTemplate.gameObject;

        // intialize the ErrorMsg class        ErrorMsg.Init();

        // register this event handler at the cloud reco behaviour        CloudRecoBehaviour cloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();        if (cloudRecoBehaviour)        {            cloudRecoBehaviour.RegisterEventHandler(this);        }    }

    /// <summary>    /// draw the sample GUI and error messages    /// </summary>    void OnGUI()    {        // draw error messages in case there were any        ErrorMsg.Draw();    }

    #endregion UNTIY_MONOBEHAVIOUR_METHODS

    #region PRIVATE_METHODS       // callback for network-not-available error message    private void RestartApplication()    {        Application.LoadLevel("Vuforia-1-About");    }    #endregion PRIVATE_METHODS}

 

 

 

 

 

On The first metadata i have says:

"Takahiro"

 

On the second on it says:

"Susumu"

 

 

The Third Says:

"Kichiro"