Unity3d 如何在Arcore(unity)中获得vuforia云识别类功能

Unity3d 如何在Arcore(unity)中获得vuforia云识别类功能,unity3d,vuforia,arcore,vuforia-cloud-recognition,Unity3d,Vuforia,Arcore,Vuforia Cloud Recognition,我使用vuforia在unity中创建了一个原型应用程序,我将一个图像上传到myserver,然后服务器将图像(以及元数据中关联的assetbundle链接)发送到vuforia cloud,将其添加到图像目标数据库中。然后在unity中,当相机跟踪图像目标时,我下载资产包以增强它 public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) { TargetFinder.TargetS

我使用vuforia在unity中创建了一个原型应用程序,我将一个图像上传到myserver,然后服务器将图像(以及元数据中关联的assetbundle链接)发送到vuforia cloud,将其添加到图像目标数据库中。然后在unity中,当相机跟踪图像目标时,我下载资产包以增强它

public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
    TargetFinder.TargetSearchResult cloudRecoSearchResult =
        (TargetFinder.TargetSearchResult)targetSearchResult;

    mTargetMetadata = cloudRecoSearchResult.MetaData;
    Debug.Log(mTargetMetadata);

    mCloudRecoBehaviour.CloudRecoEnabled = false;

    // Build augmentation based on target
    if (ImageTargetTemplate)
    {
        Debug.Log("Image target activated");
        // enable the new result with the same ImageTargetBehaviour:
        ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
        ImageTargetBehaviour imageTargetBehaviour =
         (ImageTargetBehaviour)tracker.TargetFinder.EnableTracking(
         targetSearchResult, ImageTargetTemplate.gameObject);
        JsonData jd = JsonMapper.ToObject(mTargetMetadata);
        string url = jd["content-url"].ToString();
        Debug.Log("video url :"+ "http://192.168.2.92/arads/" + url);
        vidPlayer.url = "http://192.168.2.92/arads/"+url;
        vidPlayer.Prepare();
        if(!vidPlayer.isPlaying)
        vidPlayer.Play();
    }
}
public void OnNewSearchResult(TargetFinder.TargetSearchResult TargetSearchResult)
{
TargetFinder.TargetSearchResult CloudSearchResult=
(TargetFinder.TargetSearchResult)TargetSearchResult;
mTargetMetadata=cloudRecoSearchResult.MetaData;
Debug.Log(元数据);
mcloudrecobhavior.CloudRecoEnabled=false;
//基于目标的构建增强
if(ImageTargetTemplate)
{
Log(“映像目标已激活”);
//使用相同的ImageTargetBehavior启用新结果:
ObjectTracker tracker=TrackerManager.Instance.GetTracker();
ImageTargetBehavior ImageTargetBehavior=
(ImageTargetBehavior)tracker.TargetFinder.EnableTracking(
targetSearchResult,ImageTargetTemplate.gameObject);
JsonData jd=JsonMapper.ToObject(mTargetMetadata);
字符串url=jd[“内容url”].ToString();
Log(“视频url:+”http://192.168.2.92/arads/“+url);
vidPlayer.url=”http://192.168.2.92/arads/“+url;
vidPlayer.Prepare();
如果(!vidPlayer.isPlaying)
vidPlayer.Play();
}
}
以上代码用于从服务器获取相关视频。我可以用arcore或arfoundation获得类似的功能吗?我了解到arcore的参考图像数据库可以有1000幅图像

  • 如果我正在跟踪的图像不在当前数据库中,在这种情况下我可以切换到不同的数据库吗

  • 每当我在服务器上上载新图像时,是否必须下载图像并将其添加到应用程序中的数据库中

  • arcore中的这些图像可以像vuforia中那样拥有元数据吗


  • ARCore和Vuforia之间的区别在于ARCore可以在运行时将图像添加到数据库中,这样就不必使用任何服务器

  • 通过使用以下命令修改会话配置,您可以切换到其他数据库:
    GoogleARCore.ARCoreSessionConfig.AugmentedImageDatabase
  • 正如我所说的,您可以在运行时将图像添加到数据库中,只要您的项目层次结构中有图像,就可以将其添加到数据库中
  • 我不认为有元数据是可能的,你们能得到的唯一信息是图像的数据库索引

  • 祝你好运

    谢谢你的回复。要在数据库之间切换,如何确保当前正在扫描的图像不在当前加载的数据库中?有没有类似db扫描回调之类的东西?