【问题标题】:Unity AR Foundation: Hot to get the current tracked ImageUnity AR Foundation:获取当前跟踪图像的热点
【发布时间】:2019-09-17 16:11:19
【问题描述】:
我是 Unity AR Foundation 插件的新手,我目前正在尝试获取相机跟踪的当前图像。我使用 ARTrackedImageManager 类的 trackedImagesChanged 委托从 ReferenceLibrary 中获取有关图像的信息。所以这个方法只给了我来自 ReferenceLibrary 的所有图像。有没有办法只获取当前跟踪的图像?我正在寻找诸如“getCurrentTrackedImage()”之类的东西或一个代表给我当前跟踪的图像。
提前致谢! :)
【问题讨论】:
标签:
c#
unity3d
augmented-reality
【解决方案1】:
在trackedImagesChanged 活动中,您应该订阅并使用ARTrackedImagesChangedEventArgs imgChangedArgs。
// Finding and subscribing for event on changing finding tracked images.
void Subscribe()
{
var arTrackedImageManager = GameObject.FindObjectOfType<ARTrackedImageManager>();
_arTrackedImageManager.trackedImagesChanged += ImageChangedHandle;
}
// Method handling found/lost tracked images.
void ImageChangedHandle(ARTrackedImagesChangedEventArgs imgChangedArgs)
{
// loop over new found images. imgChangedArgs.added is List<ARTrackedImage>
foreach (var item in imgChangedArgs.added)
{
var go = item.gameObject;
}
}
【解决方案2】:
ARTrackedImagesChangedEventArgs 保存所有被跟踪和丢失的目标。
这是您可以访问它的方式。
void OnEnable()
{
m_TrackedImageManager.trackedImagesChanged += OnTrackedImagesChanged;
}
void OnDisable()
{
m_TrackedImageManager.trackedImagesChanged -= OnTrackedImagesChanged;
}
void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
{
foreach (ARTrackedImage trackedImg in eventArgs.added.Concat(eventArgs.updated))
{
if (trackedImg.trackingState == TrackingState.Tracking)
{
//trackedImg is tracked
}
else
{
//trackedImg is lost
}
}
}