I have 3D model url as a metadata. I followed this article to load the model https://developer.vuforia.com/forum/unity-3-extension-technical-discussion/load-3d-model-through-cloud. But i didn't get 3D model augment.
// Here we handle a cloud target recognition event
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) {
// do something with the target metadata
mTargetMetadata = targetSearchResult.MetaData;
JSONObject json = JSONObject.Parse(mTargetMetadata);
string type=json.GetString("type");
url=json.GetString("overlay3d");
// stop the target finder (i.e. stop scanning the cloud)
mCloudRecoBehaviour.CloudRecoEnabled = false;
mShowGUIButton = true;
GameObject newImageTarget = Instantiate(ImageTargetTemplate.gameObject) as GameObject;
GameObject augmentation = null;
if( augmentation != null )
augmentation.transform.parent = newImageTarget.transform;
Debug.Log("Metadata value is " + url );
StartCoroutine(GetAssetBundle());
// Build augmentation based on target
if (ImageTargetTemplate) {
// enable the new result with the same ImageTargetBehaviour:
ImageTracker tracker = TrackerManager.Instance.GetTracker<ImageTracker>();
ImageTargetBehaviour imageTargetBehaviour =
(ImageTargetBehaviour)tracker.TargetFinder.EnableTracking(
targetSearchResult, ImageTargetTemplate.gameObject);
}
GUI.Label(new Rect(10, 10, 300, 70), "Path: " + url);
if (GUI.Button(new Rect(100,300,200,50), "Path: " + url)) {
// Restart TargetFinder
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
}
IEnumerator GetAssetBundle ()
{
www = new WWW(url);
yield return www;
Debug.Log("The last BundleURL " + BundleURL );
AssetBundleRequest request = www.assetBundle.LoadAsync("modelipad", typeof(GameObject));
yield return request;
Instantiate(request.asset, new Vector3(0f, 0f, 0f), Quaternion.identity);
//Put the stream model under the image target
GameObject ImageTargetUsed = GameObject.Find("ImageTarget");
GameObject ModelIpadClone = GameObject.Find("modelipad(Clone)");
ModelIpadClone.transform.parent = ImageTargetUsed.transform;
}