Reputation:
I am looking for a tutorial on how to use UserDefinedTargets in Vuforia. All I've found was people showing Vuforia Samples, but samples is currently only available in Vuforia 2017.2 beta. I can't find archives either.
To take matters to my own hand, I attached this code to my UserDefinedTargetHandler
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class UDTHandler : MonoBehaviour, IUserDefinedTargetEventHandler
{
private UserDefinedTargetBuildingAbstractBehaviour mTargetBuildingBehaviour;
private DataSet mBuildDataSet;
private bool mUdtInitialized = false;
private ImageTargetBuilder.FrameQuality mFrameQuality = ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE;
private ImageTracker mImageTracker;
public ImageTargetBehaviour ImageTargetTemplate;
// Use this for initialization
void Start()
{
mTargetBuildingBehaviour = GetComponent<UserDefinedTargetBuildingBehaviour>();
if (mTargetBuildingBehaviour)
{
mTargetBuildingBehaviour.RegisterEventHandler(this);
}
}
void OnGUI()
{
if (!mUdtInitialized)
return;
if (mFrameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_HIGH ||
mFrameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_MEDIUM)
{
if (GUI.Button(new Rect(200, Screen.height - 100, 200, 90), "Build New Target"))
{
BuildNewTarget();
}
}
}
void BuildNewTarget()
{
string newTargetName = "myTargetName";
mTargetBuildingBehaviour.BuildNewTarget(newTargetName, ImageTargetTemplate.GetSize().x);
}
// Update is called once per frame
void Update()
{
}
public void OnFrameQualityChanged(ImageTargetBuilder.FrameQuality frameQuality)
{
mFrameQuality = frameQuality;
}
public void OnInitialized()
{
mImageTracker = TrackerManager.Instance.GetTracker<ImageTracker>();
if (mImageTracker != null)
{
mBuildDataSet = mImageTracker.CreateDataSet();
mImageTracker.ActivateDataSet(mBuildDataSet);
mUdtInitialized = true;
}
}
public void OnNewTrackableSource(TrackableSource trackableSource)
{
mImageTracker.DeactivateDataSet(mBuildDataSet);
if (mBuildDataSet.HasReachedTrackableLimit())
{
IEnumerable<Trackable> trackables = mBuildDataSet.GetTrackables();
Trackable oldest = null;
foreach (Trackable t in trackables)
{
if (oldest == null || t.ID < oldest.ID)
oldest = t;
}
if (oldest != null)
{
mBuildDataSet.Destroy(oldest, true);
}
}
ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate);
mBuildDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);
}
}
it's missing a lot. I seriously need some help. I've looked through youtube, vuforia forums, google, etc but can't find a decent guide
Upvotes: 1
Views: 1000
Reputation: 16
I was having the same problem. The simple solution is upgrade your unity to 2017.2 beta version. You can download that at the Beta Program page at the Unity website. It's much easier to use since they have added vuforia as a unity peripheral which contain every ar tools you need. Also, go to the asset store and download the vuforia core samples (free) for predefined templates.
Upvotes: 0