在vuforia 7.5.20中启用跟踪不适用于多个云目标映像

问题描述 投票:0回答:1

更新

我已经检查了不同版本的Unity,它正在使用安装在另一台笔记本电脑上的Unity 2018.2.6f1 Personal。但我有Unity 2018.2.12f1 Personal,它给出了错误。这是统一错误吗?


I am using basic free plan of vuforia and working with Cloud recognition with vuforia. Cloud recognition part is working fine and trackable handler print the cloud recognized image name too. But when I trying to enable tracking for the tacked image target, it is only working for the very first image. After the first one, it gives the following error:

无法启用TargetSearchResult cloud-image-name进行跟踪。 UnityEngine.Debug:LogError(Object)Vuforia.TargetFinder:EnableTracking(TargetSearchResult,GameObject)CloudRec:OnNewSearchResult(TargetSearchResult)(在Assets / Scripts / CloudRec.cs:66)Vuforia.ObjectRecoBehaviour:Update()

以上错误表示以下行是问题:

m_ObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)m_ObjectTracker.TargetFinder.EnableTracking(targetSearchResult, ImageTargetTemplate.gameObject);

技术版:

Vuforia版本:7.5.20 | Unity 2018.2.12f1个人

完整代码在这里:

public class CloudRec : MonoBehaviour, ICloudRecoEventHandler
{

  private CloudRecoBehaviour mCloudRecoBehaviour;
  private bool mIsScanning = false;
  private string mTargetMetadata = "";
  public ImageTargetBehaviour ImageTargetTemplate;
  ObjectTracker m_ObjectTracker;
  TargetFinder m_TargetFinder;


  // Use this for initialization
  void Start()
  {
      // register this event handler at the cloud reco behaviour
      mCloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();
      if (mCloudRecoBehaviour)
      {
          mCloudRecoBehaviour.RegisterEventHandler(this);
      }
  }

  public void OnInitialized()
  {
      m_ObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
      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
          ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
          tracker.TargetFinder.ClearTrackables(false);
      }
  }

  // Here we handle a cloud target recognition event
  public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
  {
      GameObject newImageTarget = Instantiate(ImageTargetTemplate.gameObject) as GameObject;
      GameObject augmentation = null;

      if (augmentation != null)
          augmentation.transform.SetParent(newImageTarget.transform);
      if (ImageTargetTemplate)
      {
          m_ObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
          ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)m_ObjectTracker.TargetFinder.EnableTracking(targetSearchResult, ImageTargetTemplate.gameObject);


          //ImageTracker imageTracker = TrackerManager.Instance.GetTracker<ImageTracker>();
          //ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)imageTracker.TargetFinder.EnableTracking(targetSearchResult, newImageTarget);

      }
      if (mIsScanning)
      {
          mCloudRecoBehaviour.CloudRecoEnabled = true;
      }

  }

  // Update is called once per frame
  void Update()
  {

  }

  public void OnInitialized(TargetFinder targetFinder)
  {
      m_ObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
      m_TargetFinder = targetFinder;
  }
}
c# unity3d vuforia vuforia-cloud-recognition
1个回答
1
投票

经过近一周的搜索,我得到了错误原因。当使用unity运行时会发生错误,但是当我构建到Android或iOS时它运行正常。因此,我对代码的疑问仍然存在,我强迫开箱即用。我决定使用同一台机器测试各种版本的unity和vuforia。骑错误无济于事。最后,我测试了其他机器,我得到了错误原因。这是因为硬件兼容性。

在我的情况下,我使用mac pro-2009 mid不支持ObjectTracking但是我在MacBook Air 2017和Mac Pro 2014年中期使用相同的代码和相同版本的技术测试它工作正常。所以我认为这是一个硬件兼容性问题!

© www.soinside.com 2019 - 2024. All rights reserved.