針對物件偵測進行疑難排解

本文假設您已將 3D 模型轉換成 Azure 物件錨點偵測模型,並成功將模型載入應用程式。

疑難排解步驟

  • 請確定您偵測到的模型位於支援的 (1-10 公尺) 大小,以獲得最佳體驗。
  • 新增一些海報,以確保會議室有足夠的紋理。
  • 移除目前的全像投影以重設地圖, 如下所示
  • 更完整地掃描物件。
  • 提供緊密周框方塊做為包含所有或大部分物件的搜尋區域。
  • 清除空間對應快取並重新掃描物件。
  • 請確定模型轉換期間使用了正確的重力方向和資產維度, 如下所述。
  • 以視覺化方式檢查偵測模型, 如下所示
  • 調整模型查詢值,如下所述。
  • 擷取診斷, 如下所示

移除全像投影以重設地圖

如果您在下列任何問題中看到偵測到的物件,移除並重設對應可以修正此問題:

  • 反轉方向
  • 不正確的姿勢
  • 傾斜模型

若要移除全像投影並重設地圖,請開啟 [設定] 應用程式,然後移至[系統- >全像投影]。 然後,選取 [移除所有全像投影 ] 以從全新的地圖開始。

清除全像投影可確保在最近移動物件時,可以在目前的位置正確偵測物件。

藉由在環境四處流覽 HoloLens 來重新掃描您的環境。 逐步解說您想要從 1-2 公尺偵測到數次的任何物件。

確定重力方向和資產維度單位正確

當您提交使用物件錨點轉換 SDK 進行轉換的 3D 模型時, (請參閱 這裡) ,您必須為 3D 模型輸入正確的重力方向 Gravity () 和測量單位 (AssetDimensionUnit) 。 如果這些值不正確,物件錨點不太可能正確偵測您的物件。

重力方向是指向地球的向下向量。 對於 CAD 模型,重力方向通常與向上方向相反。 例如,在許多情況下,+Z 代表向上,在此情況下為 -Z 或 Vector3(0.0, 0.0, -1.0) 代表重力方向。 判斷重力時,您也應該考慮模型在執行時間期間會看到的方向。 如果您嘗試在平面上偵測真實世界中的椅子,重力可能是 Vector3(0.0, 0.0, -1.0) 。 不過,如果椅子位於 45 度斜率上,重力可能是 Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2)

可以使用 3D 轉譯工具來判斷重力方向,例如 MeshLab

度量單位代表模型的縮放比例。 您可以使用 Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit 列舉來找到支援的單位。

您也可以依照 這裡的 指示,在 Unity 中視覺化偵測模型,以視覺化方式檢查重力方向和縮放外觀是否正確。

以視覺化方式檢查偵測模型的網格

有時候,以視覺化方式檢查偵測模型的網格可能會很有説明,以便您看到任何方向、縮放比例或特徵問題。 請依照 這裡的 指示,在 Unity 中視覺化轉換的模型。

調整物件查詢值

  • 提供緊密的搜尋區域,以理想方式涵蓋完整的物件,以改善偵測速度和精確度。
  • 預設值 ObjectQuery.MinSurfaceCoverage 通常已足夠,但您可以使用較小的值來取得更快速的偵測。
  • 如果物件預期為右上,請使用較小的值 ObjectQuery.ExpectedMaxVerticalOrientationInDegrees
  • 應用程式應該一律使用 1:1 物件模型進行偵測。 在 1% 錯誤內,估計規模應該接近 1。 應用程式可以設定 ObjectQuery.MaxScaleChange00.1 來停用或啟用縮放估計,並以質化方式評估實例姿勢。
  • 如需詳細資訊,請參閱 如何偵測困難的物件

擷取診斷

應用程式可以使用 ObjectDiagnosticsSession 物件來擷取和儲存診斷封存。

具有 MRTK 的 Unity 範例應用程式會將診斷寫入TempState資料夾。 您可以開啟 手部功能表、選取 [ 啟動追蹤]、重現偵測嘗試,然後選取 [ 停止追蹤 ] 以儲存診斷封存,以啟動診斷會話。 然後,您可以使用 Windows Device Portal 從應用程式的 TempState 資料夾中擷取診斷封存。

診斷封存接著可以與我們共用,以便協助對問題進行偵錯。

後續步驟

在本疑難排解指南中,您已瞭解如何使用 Azure 物件錨點對實體物件的偵測進行疑難排解。 以下是一些相關文章: