Cloud Recognition Vuforia Not Scanning
Hello,
I am trying to scan my Image Targets uploaded on the Vuforia Cloud Storage. I am loading my assetbundles from a JSON file which are present on the Google Drive. But whenever I build the app, it doesn't scan the Image target. However the same code was working few weeks back now I need to add some more features but unfortunately I am not able to perform scanning.
SimpleCloudRecoEventHandler.cs
<pre class="brush: csharp">
using UnityEngine; using Vuforia; using System.Collections; using System.Collections.Generic; using UnityEngine.Networking; using UnityEngine.UI; using SimpleJSON;
public class SimpleCloudRecoEventHandler: MonoBehaviour { private CloudRecoBehaviour mCloudRecoBehaviour; private bool mIsScanning = false; private string mTargetMetadata = ""; public string mTargetId = ""; public ImageTargetBehaviour ImageTargetTemplate;
// Register cloud reco callbacks void Awake() { mCloudRecoBehaviour = GetComponent < CloudRecoBehaviour > (); mCloudRecoBehaviour.RegisterOnInitializedEventHandler(OnInitialized); mCloudRecoBehaviour.RegisterOnInitErrorEventHandler(OnInitError); mCloudRecoBehaviour.RegisterOnUpdateErrorEventHandler(OnUpdateError); mCloudRecoBehaviour.RegisterOnStateChangedEventHandler(OnStateChanged); mCloudRecoBehaviour.RegisterOnNewSearchResultEventHandler(OnNewSearchResult); } //Unregister cloud reco callbacks when the handler is destroyed void OnDestroy() { mCloudRecoBehaviour.UnregisterOnInitializedEventHandler(OnInitialized); mCloudRecoBehaviour.UnregisterOnInitErrorEventHandler(OnInitError); mCloudRecoBehaviour.UnregisterOnUpdateErrorEventHandler(OnUpdateError); mCloudRecoBehaviour.UnregisterOnStateChangedEventHandler(OnStateChanged); mCloudRecoBehaviour.UnregisterOnNewSearchResultEventHandler(OnNewSearchResult); }
public void OnInitialized(TargetFinder targetFinder) { Debug.Log("Cloud Reco initialized"); } public void OnInitError(TargetFinder.InitState initError) { Debug.Log("Cloud Reco init error " + initError.ToString()); } public void OnUpdateError(TargetFinder.UpdateState updateError) { Debug.Log("Cloud Reco update error " + updateError.ToString()); }
public void OnStateChanged(bool scanning) { mIsScanning = scanning; if (scanning) { // clear all known trackables var tracker = TrackerManager.Instance.GetTracker < ObjectTracker > (); tracker.GetTargetFinder < ImageTargetFinder > ().ClearTrackables(false); } }
// Here we handle a cloud target recognition event public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) { TargetFinder.CloudRecoSearchResult cloudRecoSearchResult = (TargetFinder.CloudRecoSearchResult) targetSearchResult; // do something with the target metadata mTargetMetadata = cloudRecoSearchResult.MetaData; // Unique target id mTargetId = targetSearchResult.UniqueTargetId; // stop the target finder (i.e. stop scanning the cloud) mCloudRecoBehaviour.CloudRecoEnabled = false; // Build augmentation based on target if (ImageTargetTemplate) { // enable the new result with the same ImageTargetBehaviour: ObjectTracker tracker = TrackerManager.Instance.GetTracker < ObjectTracker > (); tracker.GetTargetFinder < ImageTargetFinder > ().EnableTracking(targetSearchResult, ImageTargetTemplate.gameObject); } }
void OnGUI() { // Display current 'scanning' status GUI.Box(new Rect(100, 100, 200, 50), mIsScanning ? "Scanning" : "Not scanning"); // Display metadata of latest detected cloud-target //GUI.Box(new Rect(100, 200, 200, 50), "Target ID: " + mTargetId); // If not scanning, show button // so that user can restart cloud scanning if (!mIsScanning) { if (GUI.Button(new Rect(600, 2200, 250, 100), "Scan Another ARt")) { // Restart TargetFinder mCloudRecoBehaviour.CloudRecoEnabled = true; } } } }
</pre>