【问题标题】:Update a Microsoft AzureSpatialAnchor not possible无法更新 Microsoft AzureSpatialAnchor
【发布时间】:2019-08-20 08:52:32
【问题描述】:

我开发了一个统一应用程序,并且正在使用天蓝色空间锚点。我发现无法更新已经存在的 cloudAnchor。我试过这个:

    protected virtual async Task SaveCurrentObjectAnchorToCloudAsync()
    {
        // Get the cloud-native anchor behavior
        CloudNativeAnchor cna = cubeInstance.GetComponent<CloudNativeAnchor>();


        // If the cloud portion of the anchor hasn't been created yet, create it
        if (cna.CloudAnchor == null) {
            cna.NativeToCloud();
        }

        // Get the cloud portion of the anchor
        CloudSpatialAnchor cloudAnchor = cna.CloudAnchor;

        // In this sample app we delete the cloud anchor explicitly, but here we show how to set an anchor to expire automatically
        //cloudAnchor.Expiration = DateTimeOffset.Now.AddDays(7);

        while (!CloudManager.IsReadyForCreate)
        {
            await Task.Delay(330);
            float createProgress = CloudManager.SessionStatus.RecommendedForCreateProgress;
            Debug.Log("create Progress");
            Debug.Log(createProgress);

            if(createProgress > 1)
            {
                createProgress = 1;
            }

            feedbackText.text = $"{ createProgress: 0 %}";
            Debug.Log($"Move your device to capture more environment data: {createProgress:0%}");
        }

        bool success = false;

        feedbackText.text = "Saving...";

        try
        {
            if(currentCloudAnchor == null)
            {
                // Actually save
                await CloudManager.CreateAnchorAsync(cloudAnchor);
            } else {
                await CloudManager.Session.UpdateAnchorPropertiesAsync(cloudAnchor);
            }

            // Store
            currentCloudAnchor = cloudAnchor;

            // Success?
            success = currentCloudAnchor != null;

            if (success && !isErrorActive)
            {
                // Await override, which may perform additional tasks
                // such as storing the key in the AnchorExchanger
                await OnSaveCloudAnchorSuccessfulAsync();
            }
            else
            {
                OnSaveCloudAnchorFailed(new Exception("Failed to save, but no exception was thrown."));
            }
        }
        catch (Exception ex)
        {
            OnSaveCloudAnchorFailed(ex);
        }
    }

该方法的第一次调用正在工作。在蔚蓝的云中创建了一个 spartialAnchor。在我想更新锚点的第二次调用中,我首先 git 错误:

InvalidOperationException:SpatialAnchor::SetExpirationUtcTimeMS 不能用于在 SpatialAnchor 保存到云端后更改过期时间。目前不支持该功能。请求简历:。回复简历:。 08-18 01:07:09.845 31868 31927 E Unity:在 Microsoft.Azure.SpatialAnchors.NativeLibraryHelpers.CheckStatus(System.IntPtr 句柄,Microsoft.Azure.SpatialAnchors.status 值)[0x00109] 在 C:...\Assets\ AzureSpatialAnchors.SDK\Plugins\Common\AzureSpatialAnchorsBridge.cs:5381

为了摆脱它,我不得不删除这一行:

cloudAnchor.Expiration = DateTimeOffset.Now.AddDays(7);

但是云主播的更新还是不行。我收到此错误:

OnError - 指定的空间锚点已与不同的商店关联

我也尝试使用此行进行更新

await CloudManager.CreateAnchorAsync(cloudAnchor);

我收到此错误:

无法保存锚点 System.InvalidOperationException: 。要求简历:。回复简历:。 08-18 01:20:07.661 5849 5909 I Unity:在 Microsoft.Azure.SpatialAnchors.NativeLibraryHelpers.CheckStatus(System.IntPtr 句柄,Microsoft.Azure.SpatialAnchors.status 值)[0x00109] 在 C:...\Assets\ AzureSpatialAnchors.SDK\Plugins\Common\AzureSpatialAnchorsBridge.cs:5381 08-18 01:20:07.661 5849 5909 I Unity:在 Microsoft.Azure.SpatialAnchors.CloudSpatialAnchorSession+c__DisplayClass71_0.b__0 () [0x00001] 在 C:\Users\ppelluda\Documents\Projects\shared-experiences-tests\Assets \AzureSpatialAnchors.SDK\Plugins\Common\AzureSpatialAnchorsBridge.cs:7162

此时,我只看到删除 azure 中当前的 spatialAnchor 并创建一个新的选项。这不可能是正确的方法。

更新锚点的正确方法是什么?

【问题讨论】:

标签: c# azure unity3d augmented-reality azure-spatial-anchors


【解决方案1】:

这个问题/问题之前已经提出过,所以我可以更新你的答案。目前没有办法更新已经存在的锚。您将需要删除旧锚并创建一个新锚。

【讨论】:

  • 您不应回答重复的问题,而应将问题标记为重复问题,并将发帖人推荐给该问题。
猜你喜欢
  • 2017-11-08
  • 2018-04-12
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
相关资源
最近更新 更多