vuforia Cloud Recognition использование metadate
Добавлено: 13 фев 2019, 10:17
Здравствуйте, пытаюсь настроить Cloud Recognition, имеется таргет в облаке + metadate(txt файл в котором лежит ссылка на изображение).
Подскажите как сделать, чтобы при на ведении на таргет, появлялось изображение из metadate.
Писал скрипт, но в итоге выводит только ссылку которая находиться в metadate.
Вот скрипт
Как можно это реализовать ?
Подскажите как сделать, чтобы при на ведении на таргет, появлялось изображение из metadate.
Писал скрипт, но в итоге выводит только ссылку которая находиться в metadate.
Вот скрипт
Синтаксис:
Используется csharp
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class SimpleCloudHandler : MonoBehaviour, ICloudRecoEventHandler
{
public ImageTargetBehaviour ImageTargetTemplate;
private CloudRecoBehaviour mCloudRecoBehaviour;
private bool mIsScanning = false;
private string mTargetMetadata = "";
public GameObject MainImage;
void Start()
{
// register this event handler at the cloud reco behaviour
CloudRecoBehaviour cloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();
if (cloudRecoBehaviour)
{
cloudRecoBehaviour.RegisterEventHandler(this);
}
mCloudRecoBehaviour = cloudRecoBehaviour;
MainImage = GameObject.Find("tableCAB");
}
public void OnStateChanged(bool scanning)
{
mIsScanning = scanning;
if (scanning)
{
// очистить все track
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
tracker.TargetFinder.ClearTrackables(false);
}
}
public void OnInitError(TargetFinder.InitState initError)
{
Debug.Log("Cloud Reco init error " + initError.ToString());
}
public void OnInitialized(TargetFinder targetFinder)
{
Debug.Log("Cloud Reco initialized");
}
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
TargetFinder.CloudRecoSearchResult cloudRecoSearchResult =
(TargetFinder.CloudRecoSearchResult)targetSearchResult;
mTargetMetadata = cloudRecoSearchResult.MetaData;
GameObject newImageTarget = Instantiate(ImageTargetTemplate.gameObject) as GameObject;
MainImage = newImageTarget.transform.GetChild(0).gameObject;
GameObject augmentation = null;
if (augmentation != null)
augmentation.transform.SetParent(newImageTarget.transform);
if(ImageTargetTemplate)
{
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)tracker.TargetFinder.EnableTracking(targetSearchResult , newImageTarget);
}
string IMG = cloudRecoSearchResult.MetaData; // ссылка на изображение
if (!mIsScanning)
{
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
}
public void OnUpdateError(TargetFinder.UpdateState updateError)
{
Debug.Log("Cloud Reco update error " + updateError.ToString());
}
// Use this for initialization
void OnGUI()
{
// показать статус
GUI.Box(new Rect(100, 100, 200, 50), mIsScanning ? "Scanning" : "Not scanning");
// отображение методанных
GUI.Box(new Rect(100, 200, 200, 50), "Metadata: " + mTargetMetadata);
if (!mIsScanning)
{
if (GUI.Button(new Rect(100, 300, 200, 50), "Restart Scanning"))
{
// Restart TargetFinder
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class SimpleCloudHandler : MonoBehaviour, ICloudRecoEventHandler
{
public ImageTargetBehaviour ImageTargetTemplate;
private CloudRecoBehaviour mCloudRecoBehaviour;
private bool mIsScanning = false;
private string mTargetMetadata = "";
public GameObject MainImage;
void Start()
{
// register this event handler at the cloud reco behaviour
CloudRecoBehaviour cloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();
if (cloudRecoBehaviour)
{
cloudRecoBehaviour.RegisterEventHandler(this);
}
mCloudRecoBehaviour = cloudRecoBehaviour;
MainImage = GameObject.Find("tableCAB");
}
public void OnStateChanged(bool scanning)
{
mIsScanning = scanning;
if (scanning)
{
// очистить все track
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
tracker.TargetFinder.ClearTrackables(false);
}
}
public void OnInitError(TargetFinder.InitState initError)
{
Debug.Log("Cloud Reco init error " + initError.ToString());
}
public void OnInitialized(TargetFinder targetFinder)
{
Debug.Log("Cloud Reco initialized");
}
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
TargetFinder.CloudRecoSearchResult cloudRecoSearchResult =
(TargetFinder.CloudRecoSearchResult)targetSearchResult;
mTargetMetadata = cloudRecoSearchResult.MetaData;
GameObject newImageTarget = Instantiate(ImageTargetTemplate.gameObject) as GameObject;
MainImage = newImageTarget.transform.GetChild(0).gameObject;
GameObject augmentation = null;
if (augmentation != null)
augmentation.transform.SetParent(newImageTarget.transform);
if(ImageTargetTemplate)
{
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)tracker.TargetFinder.EnableTracking(targetSearchResult , newImageTarget);
}
string IMG = cloudRecoSearchResult.MetaData; // ссылка на изображение
if (!mIsScanning)
{
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
}
public void OnUpdateError(TargetFinder.UpdateState updateError)
{
Debug.Log("Cloud Reco update error " + updateError.ToString());
}
// Use this for initialization
void OnGUI()
{
// показать статус
GUI.Box(new Rect(100, 100, 200, 50), mIsScanning ? "Scanning" : "Not scanning");
// отображение методанных
GUI.Box(new Rect(100, 200, 200, 50), "Metadata: " + mTargetMetadata);
if (!mIsScanning)
{
if (GUI.Button(new Rect(100, 300, 200, 50), "Restart Scanning"))
{
// Restart TargetFinder
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
}
}
}
Как можно это реализовать ?