ARCore 的新功能和重大變更。
ARCore 1.50.0 版的新功能
ARCore SDK 的 targetSdkVersion
異動
ARCore 的 targetSdkVersion
已更新至 Android API 級別 36。如果應用程式未指定 targetSdkVersion
,應用程式的 targetSdkVersion
會因資訊清單合併而變成 36。
如果是 Unity,在 Unity 專案的「Project Settings」>「Player」>「Android」>「Other Settings」中指定「Target API Level」,會覆寫 ARCore 的 targetSdkVersion
值。
ARCore 1.49.0 版的新功能
修正多項錯誤並提升效能
ARCore 1.48.0 版的新功能
Unity 6 和 AR Foundation 6 支援功能全面推出
Unity 的 AR Foundation 適用的 ARCore Extensions 現在支援 AR Foundation 6。 請使用下列安裝方法,取得與 AR Foundation 相容的 ARCore Extensions 版本:
- 透過
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf6
, - 透過
Add package from tarball...
:使用發布頁面中以arf6
標示的版本。
如要將專案從 AR Foundation 5 升級至 AR Foundation 6,請參閱這份指南。
破壞性變更和行為變更
- SDK 不再支援 iOS 13.0 以下版本的部署目標
ARCore 1.47.0 版的新功能
Beta 版支援 Unity 6 和 AR Foundation 6
Unity 的 AR Foundation 適用的 ARCore 擴充功能現在支援 AR Foundation 6 Beta 版,可支援 Unity 6。 請使用下列安裝方法,取得與 AR Foundation 相容的 ARCore Extensions 版本:
- 透過
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf6
, - 透過
Add package from tarball...
:使用發布頁面中以arf6
標示的版本。
如要將專案從 AR Foundation 5 升級至 AR Foundation 6,請參閱這份指南。
修正錯誤
- 修正 Unity 6 的雲端錨點範例平面不透明問題
其他變更
- ARCore Extensions GitHub 存放區的
main
分支版本已切換為追蹤arf5
分支版本。
ARCore 1.46.0 版的新功能
ARCore SDK 的 targetSdkVersion
異動
ARCore 的 targetSdkVersion
已更新為 Android API 級別 35。如果應用程式未指定 targetSdkVersion
,應用程式的 targetSdkVersion
會因資訊清單合併而變成 35。
如果是 Unity,在 Unity 專案的「Project Settings」>「Player」>「Android」>「Other Settings」中指定「Target API Level」,會覆寫 ARCore 的 targetSdkVersion
值。
ARCore 1.45.0 版的新功能
Flash Mode API
ARCore 現在支援啟用裝置的手電筒模式,在昏暗環境中提供更優異的感知能力。
Android (Kotlin/Java)
Config.FlashMode
:設定選項,可啟用或停用裝置上的閃光燈。- 如要進一步瞭解如何偵測閃光燈功能及啟用手電筒模式,請參閱開發人員指南。
Android NDK (C)
ArFlashMode
:設定選項,可啟用或停用裝置上的閃光燈。- 如要進一步瞭解如何偵測閃光燈功能及啟用手電筒模式,請參閱開發人員指南。
Unity 的 AR Foundation 適用的 ARCore 擴充功能支援 AR Foundation 5
AR Foundation 的 ARCore Extensions 現在正式支援 AR Foundation 5。使用 AR Foundation 5 (Unity 2022 和 2023 版本的已驗證版本) 時,請使用下列安裝方法取得相容版本的 ARCore Extensions for AR Foundation:
- 透過「
Add package from git url...
」:使用「https://github.com/google-ar/arcore-unity-extensions.git#arf5
」 - 透過
Add package from tarball...
:使用發布頁面中以arf5
標示的版本arf5
。
如果專案仍使用 AR Foundation 4 版,可以採用下列安裝方法:
- 透過「
Add package from git url...
」:使用「https://github.com/google-ar/arcore-unity-extensions.git#arf4
」, - 透過
Add package from tarball...
:使用發布頁面中以arf4
標示的版本arf4
。
如要將專案從 AR Foundation 4 升級至 AR Foundation 5,請參閱遷移指南。
自訂指令碼編寫符號 (例如 ARCORE_USE_ARF_5
) 不再使用 Beta 版支援。
ARCore 1.44.0 版的新功能
這個版本沒有新功能。
ARCore 1.43.0 版的新功能
在 Geospatial Creator 遷移作業中使用 Places API
Geospatial Creator 的搜尋功能現在使用 Google 的 New Places API。如要使用搜尋功能,請在 Google Cloud 控制台中啟用「Places API (新版)」。
ARCore 1.42.0 版的新功能
在 Unity 適用的 Geospatial Creator 中對齊圖塊
「Snap to Tile」按鈕已新增至「Editor Inspector」面板。ARGeospatialCreatorAnchor
這個按鈕會將「地形」或「屋頂」錨點的「僅限編輯器」海拔值,設為錨點目前緯度和經度位置的 3D 圖塊幾何頂端。請注意,這個屬性不會影響執行階段的行為。這有助於在編輯器中調整錨點位置,使其與執行階段的位置相符。
ARCore 1.41.0 版的新功能
Geospatial Creator API
Unity 適用的 Geospatial Creator 現在支援在編輯器模式中建立及操控 Geospatial Creator 物件。如要瞭解新推出的類別和 API,請參閱 Geospatial Creator API 指南。
支援 AR Foundation 5.x 版 (Beta 版)
Unity 的 AR Foundation 適用的 ARCore 擴充功能現在支援 AR Foundation 5.x 版。如要將現有專案遷移至 AR Foundation,請參閱遷移指南。
ARCore 1.40.0 版的新功能
iOS 裝置上的場景語意
場景語意 API 現已在 ARCore SDK for iOS 中推出,並支援以 iOS 平台為目標的 Unity AR Foundation ARCore 擴充功能。開發人員可透過 Scene Semantics API 即時瞭解使用者周遭的場景,並將像素標示為 11 個類別的室外元件。詳情請參閱「場景語意簡介」。
iOS
Unity (AR Foundation)
在 Geospatial Creator for Unity 中搜尋搜尋點
Unity 適用的 Geospatial Creator 現在支援文字搜尋,可定位 Photographic 3D Tiles 檢視畫面。詳情請參閱「在 Geospatial Creator 中搜尋搜尋點」。
ARCore 1.39.0 版的新功能
這個版本沒有新功能。
ARCore 1.38.0 版的新功能
這個版本沒有新功能。
ARCore 1.37.0 版的新功能
場景語意
場景語意可提供周遭場景的豐富詳細資料,讓使用者更容易瞭解周遭世界。場景語意會對攝影機的影像串流執行機器學習模型,並提供語意圖片,其中每個像素都對應到 11 個室外概念標籤之一。
詳情請參閱「場景語意簡介」和 semantics_java 範例應用程式。
街景幾何圖形
Streetscape Geometry 是全新的 ARCore Geospatial API,啟用 Geospatial API 後,這項 API 會提供使用者周圍區域的建築物和地形幾何圖形。
Android (Kotlin/Java)
請參閱 Streetscape Geometry 開發人員指南 (Kotlin/Java)。此外,geospatial_java 範例應用程式也已更新,納入 Streetscape Geometry。
Android NDK (C)
Unity (AR Foundation)
iOS
詳情請參閱 Streetscape Geometry 開發人員指南 (iOS)。此外,GeospatialExample 應用程式也已更新,納入 Streetscape Geometry。
GARStreetscapeGeometry
:GARStreetscapeGeometry.mesh
提供 3D 網格。GARStreetscapeGeometry.meshTransform
提供相對於工作階段世界空間的幾何圖形原點轉換。GARStreetscapeGeometry.trackingState
會維護追蹤狀態。GARStreetscapeGeometry.type
表示這是地形還是建築物幾何。GARStreetscapeGeometry.quality
提供幾何圖形的品質。GARStreetscapeGeometry.identifier
提供幾何體的專屬 ID。GARSession.createAnchorOnStreetscapeGeometry:transform:error:
會在指定位置和方向建立錨點。GARSession.raycastStreetscapeGeometry:direction:error:
會對場景中載入的 Streetscape Geometry 執行光線投射。
屋頂錨定廣告
屋頂錨點是新的地理空間錨點類型,可協助您將內容錨定至屋頂。
Android (Kotlin/Java)
請參閱「地理空間錨點 (Java)」。此外,geospatial_java 範例應用程式也已更新,加入屋頂錨點。
Android NDK (C)
詳情請參閱「地理空間錨點 (C)」。
Unity (AR Foundation)
詳情請參閱「地理空間錨點」。此外,地理空間範例也已更新,加入屋頂錨點。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
會在指定緯度、經度、屋頂上方海拔高度和方向,為場景中的遊戲物件提供錨點。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
詳情請參閱「地理空間錨點 (iOS)」。此外,GeospatialExample 應用程式也已更新,現在包含屋頂錨點。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
會在指定位置建立屋頂錨點,並以公尺為單位指定屋頂上方的高度,以及相對於地球的方向。GARCreateAnchorOnRooftopFuture
會保留解析 Rooftop 錨點的非同步狀態。GARRooftopAnchorState
:說明解決頂樓錨點的狀態。
地理空間深度
在有 VPS 涵蓋範圍的區域,如果 ARCore 工作階段同時啟用 Depth API 和 Streetscape Geometry 模式,系統會使用 Streetscape Geometry 改善產生的深度影像。系統會將街景幾何圖形整合到每個生成的深度影像中,範圍可達 65.535 公尺。呼叫 Depth API 時,無須進行任何變更,即可享有這項優勢。
Android (Kotlin/Java)
詳情請參閱「地理空間深度 (Java)」。
Android NDK (C)
詳情請參閱「地理空間深度 (C)」。
Unity (AR Foundation)
詳情請參閱「地理空間深度 (C)」。
iOS
場景語意目前不支援 iOS。
支援 Vulkan 轉譯
ARCore 現在透過 AHardwareBuffer
公開相機圖像,提供 Vulkan 算繪支援。您可以將這個 Hardware Buffer 繫結至 VkImage
,藉此使用這個緩衝區。
詳情請參閱「使用 Vulkan 算繪 ARCore 應用程式」和 hello_ar_vulkan_c 範例應用程式。
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
目前使用 AR Foundation 時,Unity 無法進行 Vulkan 算繪。
電子影像穩定技術 (EIS)
您可以將 ARCore 設為使用電子影像穩定功能,讓攝影機畫面更平穩,提供更流暢的使用者體驗。
詳情請參閱「啟用電子影像穩定功能」和 hello_eis_kotlin 範例應用程式。
Android (Kotlin/Java)
Config.ImageStabilizationMode
Frame.transformCoordinates3d()
Session.isImageStabilizationModeSupported()
- 目前已知問題:使用
OPENGL_NORMALIZED_DEVICE_COORDINATES
以外的 2D 座標呼叫Frame.transformCoordinates3d()
時,系統會異常終止,而不是擲回IllegalArgumentException
。我們將在下一個版本中解決這個問題。
Android NDK (C)
ArImageStabilizationMode
ArFrame_transformCoordinates3d()
ArSession_isImageStabilizationModeSupported()
- 已知問題:使用
AR_COORDINATES_2D_OPENGL_NORMALIZED_DEVICE_COORDINATES
以外的 2D 座標呼叫ArFrame_transformCoordinates3d()
時,應用程式會中止,而不是傳回AR_ERROR_INVALID_ARGUMENT
。我們將在下一個版本中解決這個問題。
Unity (AR Foundation)
目前無法透過 AR Foundation 使用 Unity 的 EIS。
iOS
iOS 目前不支援 EIS。
ARCore 非同步 API
這個版本推出全新的 ARCore 非同步 API,可遵循 Future 和 Promise 範例,提升非同步作業的人體工學。
Android (Kotlin/Java)
- 解決地形錨點:使用
Earth.resolveAnchorOnTerrainAsync()
取得ResolveAnchorOnTerrainFuture
。舊符號Earth.resolveAnchorOnTerrain()
已淘汰,可能會在後續 ARCore 版本中移除。 - 解析 Cloud Anchor:使用
Session.resolveCloudAnchorAsync()
取得ResolveCloudAnchorFuture
。舊符號Session.resolveCloudAnchor()
已淘汰,可能會在後續 ARCore 版本中移除。 - 託管 Cloud Anchor:使用
Session.hostCloudAnchorAsync()
取得HostCloudAnchorFuture
。舊符號Session.hostCloudAnchor()
和Session.hostCloudAnchorWithTtl()
已淘汰,可能會在後續版本的 ARCore 中移除。 - 檢查 APK 是否可用:使用
ArCoreApk.checkAvailabilityAsync()
註冊回呼。舊符號ArCoreApk.checkAvailability()
並未淘汰。
Android NDK (C)
- 解決地形錨點:使用
ArEarth_resolveAnchorOnTerrainAsync()
取得ArResolveAnchorOnTerrainFuture
或使用ArResolveAnchorOnTerrainCallback
。舊符號ArEarth_resolveAndAcquireNewAnchorOnTerrain()
已淘汰,可能會在後續版本的 ARCore 中移除。 - 解析 Cloud Anchor:使用
ArSession_resolveCloudAnchorAsync()
取得ArResolveCloudAnchorFuture
,或使用ArResolveCloudAnchorCallback
。舊符號ArSession_resolveAndAcquireNewCloudAnchor()
已淘汰,可能會在後續版本的 ARCore 中移除。 - 託管 Cloud Anchor:使用
ArSession_hostCloudAnchorAsync()
取得ArHostCloudAnchorFuture
,或使用ArHostCloudAnchorCallback
。舊符號ArSession_hostAndAcquireNewCloudAnchor()
和ArSession_hostAndAcquireNewCloudAnchorWithTtl()
已淘汰,可能會在後續版本的 ARCore 中移除。 - 檢查 APK 是否可用:使用
ArCoreApk_checkAvailabilityAsync()
註冊回呼。舊符號ArCoreApk_checkAvailability()
並未淘汰。
Unity (AR Foundation)
- 解決地形錨點:使用
ARAnchorManagerExtensions.ResolveAnchorOnTerrainAsync()
取得ResolveAnchorOnTerrainPromise
。舊符號ARAnchorManagerExtensions.ResolveAnchorOnTerrain()
已淘汰,可能會在後續版本的 ARCore 中移除。 - 解析 Cloud Anchor:使用
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
取得ResolveCloudAnchorPromise
。舊符號ARAnchorManagerExtensions.ResolveCloudAnchorId()
已淘汰,可能會在後續版本的 ARCore 中移除。 - 託管 Cloud Anchor:使用
ARAnchorManagerExtensions.HostCloudAnchorAsync()
取得HostCloudAnchorPromise
。舊的ARAnchorManagerExtensions.HostCloudAnchor()
符號已淘汰,可能會在後續版本的 ARCore 中移除。
iOS
- 解決地形錨點:使用
GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:completionHandler:error:
取得GARCreateAnchorOnTerrainFuture
。舊符號GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:error:
已淘汰,可能會在後續版本的 ARCore 中移除。 - 解析 Cloud Anchor:使用
GARSession.resolveCloudAnchorWithIdentifier:completionHandler:error:
取得GARResolveCloudAnchorFuture
。舊符號GARSession.resolveCloudAnchorWithIdentifier:error:
已淘汰,可能會在後續版本的 ARCore 中移除。 - 代管 Cloud Anchor:使用
GARSession.hostCloudAnchor:TTLDays:completionHandler:error:
取得GARHostCloudAnchorFuture
。舊符號GARSession.hostCloudAnchor:error:
和GARSession.hostCloudAnchor:TTLDays:error:
已淘汰,可能會在後續版本的 ARCore 中移除。
ARCore 1.36.0 版的新功能
iOS 上的 Swift Package Manager 支援
iOS 適用的 ARCore SDK 現在正式支援 Swift Package Manager。如需瞭解如何使用 Swift Package Manager 整合 ARCore,請參閱「在 iOS 應用程式中啟用 AR」。
ARCore 1.35.0 版的新功能
地理空間姿勢準確度會以偏擺角取代航向
所有地理空間姿勢現在都會顯示偏擺旋轉的方向準確度,取代航向準確度。
- Java/Kotlin:將
GeospatialPose.getHeading()
替換為GeospatialPose.getEastUpSouthQuaternion()
,並將GeospatialPose.getHeadingAccuracy()
替換為GeospatialPose.getOrientationYawAccuracy()
。 - C:將
ArGeospatialPose_getHeading()
替換為ArGeospatialPose_getEastUpSouthQuaternion()
,並將ArGeospatialPose_getHeadingAccuracy()
替換為ArGeospatialPose_getOrientationYawAccuracy()
。 - iOS:將
GARGeospatialTransform.heading
替換為GARGeospatialTransform.eastUpSouthQTarget
,並將GARGeospatialTransform.headingAccuracy
替換為GARGeospatialTransform.orientationYawAccuracy
。 - Unity:將
GeospatialPose.Heading
替換為GeospatialPose.EunRotation
,並將GeospatialPose.HeadingAccuracy
替換為GeospatialPose.OrientationYawAccuracy
。
其他異動和更新
如要查看其他變更、錯誤修正和效能提升項目,請參閱版本資訊:
- ARCore SDK for Android 版本說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.34.0 版的新功能
確認裝置目前所在位置是否支援地理空間功能
Geospatial API 現在可在執行階段檢查指定水平位置的視覺定位系統 (VPS) 支援情形。即使沒有有效的 AR 工作階段,您也可以使用這個 API,例如只在 VPS 可用時顯示「進入 AR」按鈕。
- Java/Kotlin:
Session.checkVpsAvailabilityAsync()
- C:
ArSession_checkVpsAvailabilityAsync()
- iOS:
GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:
- Unity (AR Foundation):
AREarthManager.CheckVpsAvailability()
地理空間姿勢方向
地理空間姿勢現在會顯示在 3D 空間中。
- Java/Kotlin:
feedbackGeospatialPose.getEastUpSouthQuaternion()
- C:
ArEarth_getGeospatialPose()
- iOS:
GARGeospatialTransform.eastUpSouthQTarget
- Unity:
GeospatialPose.EunRotation()
地理空間姿勢轉換
地理空間姿勢現在可以轉換為世界空間 (AR) 姿勢,反之亦然。
如何從 AR 姿勢取得地理空間姿勢:
- Java/Kotlin:
Earth.getGeospatialPose()
- C:
ArEarth_getGeospatialPose()
- iOS:
GARSession.geospatialTransformFromTransform:error:
- Unity:
AREarthManager.Convert(Pose)
如要從地理空間姿勢取得 AR 姿勢,請按照下列步驟操作:
- Java/Kotlin:
Earth.getPose()
- C:
ArEarth_getPose()
- iOS:
GARSession.transformFromGeospatialCoordinate:altitude:eastUpSouthQTarget:error:
- Unity:
AREarthManager.Convert(GeospatialPose)
從這些函式取得的地理空間姿勢,其航向值會設為零。請改用下列項目:
- Android (Java/Kotlin/C):姿勢的 EUS 四元數
- iOS:姿勢的
eastUpSouthQTarget
- Unity:姿勢的
EunRotation
其他異動和更新
如要查看其他變更、錯誤修正和效能提升項目,請參閱版本資訊:
- ARCore SDK for Android 版本說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.33.0 版的新功能
新的 Cloud Anchors 端點
- 如要使用 Cloud Anchors,現在必須啟用 ARCore API,而非已淘汰的 ARCore Cloud Anchor API。如要支援舊版應用程式,您可以在轉換期間同時啟用這兩項功能。使用 ARCore SDK 1.32.0 以下版本建構的應用程式會指定舊版 API,使用 ARCore SDK 1.33.0 以上版本建構的應用程式則會指定新版 API。請注意以下事項:
- 新版 API 使用網域名稱
arcore.googleapis.com
,而非arcorecloudanchor.googleapis.com
。 - 如果您使用的 API 金鑰受到 API 限制,請允許 ARCore API。
- 如果您從後端對 ARCore Cloud Anchor Management API 發出要求,啟用 ARCore API 後,也必須將網域名稱變更為
arcore.googleapis.com
。 - 舊版 API/端點將繼續支援至 2023 年 8 月。
- 詳情請參閱「ARCore 1.33 Cloud Anchor 端點異動」。
- 新版 API 使用網域名稱
地形錨點
- 地理空間地形錨點 API 會在指定水平位置建立錨點,並以該水平位置的地形為基準,設定錨點的高度。
其他異動和更新
如要查看其他變更、錯誤修正和效能提升項目,請參閱版本資訊:
- ARCore SDK for Android 版本說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.32.0 版的新功能
這個版本沒有新功能。
Android 和 Unity (AR Foundation) for Android
- ARCore 的
targetSdkVersion
已更新至 Android API 級別 32。如果應用程式未指定targetSdkVersion
,應用程式的targetSdkVersion
會因資訊清單合併而變成 32。- Android SDK:在專案的
build.gradle
或AndroidManifest.xml
中指定targetSdkVersion
,會覆寫 ARCore 的targetSdkVersion
值。 - Android 適用的 AR Foundation:在 Unity 專案的「Project Settings」>「Player」>「Android」>「Other Settings」中指定「Target API Level」,會覆寫 ARCore 的
targetSdkVersion
值。
- Android SDK:在專案的
其他異動和更新
如要查看其他變更、錯誤修正和效能提升項目,請參閱版本資訊:
- ARCore SDK for Android 版本說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.31.0 版的新功能
ARCore Geospatial API
全新的 ARCore Geospatial API 會運用 Google 地球 3D 模型和 Google 地圖的街景圖像資料,讓您的應用程式提供沉浸式、全球規模的擴增實境體驗。
如需平台專屬的開發人員說明文件,以及如何開始使用新的 Geospatial API,請參閱「ARCore Geospatial API 簡介」。
長距離深度
ARCore Depth API 現在經過最佳化,可提供更遠距離的深度感應,增加可呈現的深度觀測範圍。系統會使用深度影像的所有 16 位元,提供 65535 公釐的最大範圍。先前只會填入 13 位元,上限為 8191 公釐。
如要查看平台專屬的開發人員說明文件,以及瞭解 Depth API 的異動,請參閱「深度資訊異動」。
平台專屬注意事項
Android
全新 ARCore Geospatial API
Java
Earth
可在地球相對座標中提供本地化功能。Earth.createAnchor()
在指定位置和方向 (相對於地球) 建立新的Anchor
。
Earth.Earthstate
說明Earth
的目前狀態,包括TrackingState
。GeospatialPose
描述相對於地球的特定位置、海拔高度和羅盤方位。
C
ArEarth
提供以地球相對座標進行本地化的功能。ArEarth_acquireNewAnchor()
在指定位置和方向 (相對於地球) 建立新的Anchor
。ArEarthState
說明ArEarth
的目前狀態,包括ArTrackingState
。
ArGeospatialPose
描述相對於地球的特定位置、海拔高度和羅盤方位。
更新 ARCore Depth API
Java
- Depth API 函式呼叫已變更:
- 已將
Frame.acquireDepthImage
重新命名為Frame.acquireDepthImage16Bits
。 - 已將
Frame.acquireRawDepthImage
重新命名為Frame.acquireRawDepthImage16Bits
。 - 這兩項通話的輸出圖片格式都已從
android.graphics.ImageFormat#DEPTH16
變更為android.hardware.HardwareBuffer#D_16
。 - 深度仍以毫米為單位,以 16 位元整數表示,但現在所有 16 位元都用於表示深度,因此可表示的最大範圍從 8191 公釐擴大到 65535 公釐。
- 已將
- Depth API 函式呼叫
Frame.acquireDepthImage
和Frame.acquireRawDepthImage
已淘汰。請改用Frame.acquireDepthImage16Bits
和Frame.acquireRawDepthImage16Bits
。
- Depth API 函式呼叫已變更:
C
- Depth API 函式呼叫已變更:
- 已將
ArFrame_acquireDepthImage
重新命名為ArFrame_acquireDepthImage16Bits
。 ArFrame_acquireRawDepthImage
至ArFrame_acquireRawDepthImage16Bits
- 這兩項呼叫的輸出圖片格式都已從
AR_IMAGE_FORMAT_DEPTH16
變更為AR_IMAGE_FORMAT_D_16
。 - 深度仍以毫米為單位,以 16 位元整數表示,但現在所有 16 位元都用於表示深度,因此可表示的最大範圍從 8191 公釐擴大到 65535 公釐。
- 已將
- Depth API 函式呼叫
ArFrame_acquireDepthImage
和ArFrame_acquireRawDepthImage
已淘汰。請改用ArFrame_acquireDepthImage16Bits
和ArFrame_acquireRawDepthImage16Bits
。
- Depth API 函式呼叫已變更:
Unity (AR Foundation)
全新 ARCore Geospatial API:
AREarthManager
提供以地球相對座標進行本地化的功能。EarthTrackingState
會取得最新影格的地球追蹤狀態。EarthState
維持地球錯誤狀況。
GeospatialPose
描述相對於地球的特定位置、海拔高度和羅盤方位。ARGeospatialAnchor
提供場景中遊戲物件的錨點,錨點的位置和方向是相對於地球而定。
iOS
全新 ARCore Geospatial API:
GAREarth
提供地球相對定位。GAREarthState.earthState
管理錯誤狀態和條件。GAREarthState.trackingState
維護追蹤狀態,這是地理空間資料的必要條件。
GARGeospatialTransform
全球轉換的表示法,包括位置、航向、海拔高度和準確度估計值。GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
在相對於地球的指定位置和方向建立地理空間錨點。
其他變更
如要查看其他變更、錯誤修正和效能提升項目,請參閱版本資訊:
- ARCore SDK for Android 版本說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.30.0 版的新功能
這個版本沒有新功能。
Android
- 使用
@NonNull
和@Nullable
註解 API 傳回值。 - 更新用於建構範例的建構工具版本:Gradle 更新至 7.0.2 版,Android Gradle 外掛程式更新至 7.0.4 版。現有的 ARCore 應用程式不需要升級這些工具。如要瞭解新功能、已知問題和不相容資訊,請參閱 Android Gradle 外掛程式的 Android 說明文件。
Unity (AR Foundation)
新增了
arcore-unity-extensions-without-edm4u.tgz
版本。這個版本變體不會組合外部依附元件,例如 External Dependency Manager for Unity,並允許升級至 EDM。使用這個輕量版發行內容,或許能解決使用 Firebase 程式庫時的不相容問題。如要開始使用,請參閱 AR Foundation 適用的 ARCore Extensions 安裝說明。將 ExternalDependencyManager 升級至 1.2.168 版,以更完善地支援 2021.2 以上版本,詳情請參閱 EDM 的變更記錄。
修正問題:即使工作階段設定沒有變更,ARCore 工作階段仍會設定每個影格,導致 FPS 下降。
iOS
- 修正多項錯誤並提升效能。
ARCore 1.29.0 版的新功能
這個版本沒有新功能。
Android
- hello_ar_java 和 hello_ar_kotlin:使用
SCREENSPACE_WITH_APPROXIMATE_DISTANCE
放置物件時,變更物件的顏色,以便更清楚區分使用即時放置功能放置的物件。 - persistent_cloud_anchor_java:在範例中新增缺少的建構依附元件。修正錯誤:即使專案設定正確,託管任何錨點都會處於
CloudAnchorState ERROR_NOT_AUTHORIZED
狀態。
Unity (AR Foundation)
- ARCore Extensions 套件現在依附於 ARKit XR 外掛程式,確保已安裝的 AR Foundation 版本與 ARKit XR 外掛程式版本相容。在 Unity 2019.x 上安裝 ARCore 擴充功能並啟用 ARKit XR 外掛程式時,以往會發生編譯錯誤,現在已經修正。
- ARCore Extensions 專案設定已從「Project Settings > XR > ARCore Extensions」移至「Project Settings > XR Plug-in Management > ARCore Extensions」。
ARCoreExtensionsConfig
、ARCoreExtensionsCameraConfigFilter
和ARCoreRecordingConfig
已從「Create」>「XR」>「ARCore Extensions」移至「Create」>「XR」選單。
iOS
- 修正多項錯誤並提升效能。
完整版本資訊
- ARCore SDK for Android 完整版本資訊
- ARCore for Android NDK 完整版本資訊
- ARCore SDK for iOS 完整版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.28.0 版的新功能
- 自 2022 年 11 月起,支援 AR 的應用程式將無法再取得 NDK 圖片或圖片中繼資料。受影響的 SDK 版本取決於呼叫的特定函式,詳情請參閱淘汰公告。
- C:對
ArImage_getNdkImage()
和ArImage_getNdkCameraMetadata()
的呼叫一律會傳回AImage
和ACameraMetadata
物件的nullptr
。 - Java:
Frame#acquireCameraImage()
傳回的Image
物件大小為0
x0
像素。呼叫Frame#getImageMetadata()
一律會擲回IllegalArgumentException
。 - Unity (AR Foundation):使用 AR Foundation 2.1 (Unity 2019 LTS) 時,對
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
的呼叫一律會傳回false
。AR Foundation 4.x 以上版本不受影響,對XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
的呼叫會正常運作。 - ARCore SDK for Unity (已淘汰):對
Frame.CameraImage.AcquireCameraImageBytes()
的呼叫會是0
x0
像素的大小。對Frame.CameraMetadata.GetAllCameraMetadataTags()
的呼叫會傳回空白的List<CameraMetadataTag>
。
- C:對
- Java:
ArImage#getCropRect()
現在會傳回完整大小的裁剪矩形,也就是說,Image 中的所有像素都有效。詳情請參閱android.media.Image#getCropRect()
。
ARCore 1.27.0 版的新功能
這個版本沒有新功能。如需瞭解各項錯誤修正和效能提升,請參閱下列版本資訊。
- ARCore SDK for Android 完整版本資訊
- ARCore for Android NDK 完整版本資訊
- ARCore SDK for iOS 完整版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
除了修正多項錯誤,這個版本還包含下列更新。
Kotlin 範例應用程式
新增 hello_ar_kotlin,示範使用 Kotlin 時的最佳做法。
詳情請參閱「Android 快速入門」。
新增 ml_kotlin,示範如何搭配 ARCore 使用圖片分類模型。
詳情請參閱「使用 ARCore 做為機器學習模型的輸入內容」。
ARCore 1.26.0 版的新功能
這個版本新增了下列重大變更:
其他異動和更新
如需其他錯誤修正和破壞性變更,請參閱下列版本資訊。
- ARCore SDK for Android 完整版本資訊
- ARCore for Android NDK 完整版本資訊
- ARCore SDK for iOS 完整版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.25.0 版的新功能
這個版本沒有新功能。如需瞭解各項錯誤修正和效能提升,請參閱下列版本資訊。
- ARCore SDK for Android 完整版本資訊
- ARCore for Android NDK 完整版本資訊
- ARCore SDK for iOS 完整版本資訊
- ARCore SDK for Unity 完整版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.24.0 版的新功能
這個版本新增了下列重大變更:
- 全新的 Raw Depth API,可提供未經過影像空間篩選的深度影像
- 自訂資料軌錄製功能,適用於 Recording & Playback API
- 執行深度命中測試
原始深度
Raw Depth API 提供的攝影機影像深度資料比完整 Depth API 資料更準確,但並非涵蓋所有像素。原始深度圖片和相應的信賴度圖片也可以進一步處理,讓應用程式只使用準確度足以因應個別用途的深度資料。
開發人員指南:
自訂軌道錄製
Recording & Playback API 的全新自訂資料軌功能,可讓您在錄製期間將自訂資料新增至 ARCore 影格,並在播放期間從影格擷取相同資料。
開發人員指南:
深度點擊測試
先前只能在偵測到的平面上進行命中測試,因此只能在大型平坦表面上進行測試。深度命中測試會同時運用平滑和原始深度資訊,提供更準確的命中結果,即使在非平面和低紋理表面上也是如此。
開發人員指南:
其他異動和更新
如需其他錯誤修正和破壞性變更,請參閱下列版本資訊。
- ARCore SDK for Android 完整版本資訊
- ARCore for Android NDK 完整版本資訊
- ARCore SDK for iOS 完整版本資訊
- ARCore SDK for Unity 完整版本資訊
- AR Foundation 適用的 ARCore Extensions 版本資訊
ARCore 1.23.0 版的新功能
尚不支援雙鏡頭
我們會在接下來的幾週內推出雙鏡頭支援功能,詳情請參閱「支援的裝置」頁面。
全新偵錯工具
開發人員可以傳送廣播意圖,啟用下列功能:
ARCore API 呼叫記錄檔會記錄到 Android 偵錯記錄檔
ARCore 效能監控圖層
代管及解析 Cloud Anchor
使用 ARCore SDK 1.11.0 以下版本建構的 AR 應用程式,將無法再代管或解析雲端錨點。
C:
ArSession_hostAndAcquireNewCloudAnchor
和ArSession_resolveAndAcquireNewCloudAnchor
傳回的 Cloud Anchor 一律為AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL
狀態。Java:
Session.hostCloudAnchor(Anchor)
和Session.resolveCloudAnchor(String)
傳回的 Cloud Anchor 一律為Anchor.CloudAnchorState.ERROR_INTERNAL
狀態。Unity:由
XPSession.CreateCloudAnchor(Anchor)
和XPSession.ResolveCloudAnchor(string)
傳回的 Cloud Anchors 一律為CloudServiceResponse.ErrorInternal
狀態。
使用 ARCore SDK 1.12.0 以上版本建構的應用程式不受影響。ARCore Cloud Anchor API 的使用方式受廢止政策規範。
其他異動和更新
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.22.0 版的新功能
本次更新新增了 Recording and Playback API 和 Camera Config Filter API,適用於 ARCore Extensions for AR Foundation。詳情請參閱 ARCore Extensions 完整版本資訊。
其他異動和更新
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.21.0 版的新功能
這個版本新增了適用於 Android、Android NDK 和 Unity 的錄製和播放 API。
錄製與播放
透過 Recording and Playback API,您可以在特定環境中錄製一次影片和 AR 資料,並使用該內容取代即時攝影機工作階段,以進行測試。ARCore 會將錄製的工作階段儲存至 MP4 檔案,其中包含裝置上的多個影片軌和其他雜項資料。然後,您可以讓應用程式使用這項資料,取代即時攝影機工作階段。這樣一來,您就能無限次重播內容,嘗試各種 AR 效果,不必再回到拍攝現場。
詳情請見:
ARCore 1.20.0 版的新功能
這個版本新增了下列重大變更:
新增持續性 Cloud Anchors 支援功能。
更新 Android 和 Android NDK 的圖片中繼資料功能。
新指南:需要 Gradle 5.6.4 以上版本,才能支援 ARCore Extensions for AR Foundation 或 ARCore SDK for Unity (1.19 以上版本) 與 Unity 2018.4 以上版本。
支援新的永久性 Cloud Anchors
在 ARCore 1.20 版之前,雲端錨點只能在首次代管後 24 小時內解析。現在您可以使用永久性 Cloud Anchor,建立存留時間 (TTL) 介於 1 到 365 天的 Cloud Anchor。您也可以使用 Cloud Anchor Management API,在錨點代管後延長其生命週期。
使用永久 Cloud Anchors 時,須遵守新的 Cloud Anchors 淘汰政策。
C:開發人員指南、
ArSession_hostAndAcquireNewCloudAnchorWithTtl
和ArSession_estimateFeatureMapQualityForHosting
。Java:開發人員指南、
hostCloudAnchorWithTtl
和estimateFeatureMapQualityForHosting
。iOS:開發人員指南、
hostCloudAnchor:TTLDays:error:
和estimateFeatureMapQualityForHosting:
。ARCore Extensions for AR Foundation:Android 開發人員指南、iOS 開發人員指南、
ARAnchorManager.HostCloudAnchor(ARAnchor, int)
、ARAnchorManager.SetAuthToken(string)
和ARAnchorManager.EstimateFeatureMapQualityForHosting(Pose)
。以 Android 為目標平台的 Unity:開發人員指南、
XPSession.CreateCloudAnchor(Anchor, int)
和XPSession.EstimateFeatureMapQualityForHosting(Pose)
。Unity 指定 iOS:開發人員指南、
XPSession.SetAuthToken(string)
和XPSession.CreateCloudAnchor(UnityARUserAnchorComponent, int)
。
其他異動和更新
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore v1.19.0 的新功能
這個版本新增了下列重大變更:
- 適用於 Android、Android NDK 和 Unity 的全新即時放置 API。
- 使用 Unity 建構 Android 11 應用程式的全新指南。
即時放置
使用者可透過 Instant Placement API 將 AR 物件放置在畫面上,不必等待 ARCore 偵測表面幾何圖形。當使用者在環境中移動時,系統會即時調整物件放置位置。ARCore 在 AR 物件放置區域偵測到正確的姿勢後,白色物件就會自動更新為姿勢準確的物件,並變成不透明。
以下短片顯示真實世界桌上的虛擬 Android 人偶。首次放置時,人偶會顯示白色,且尺寸較小。ARCore 修正場景尺寸的計算結果後,人偶就會跳到更準確的位置。這可能會導致物件的「大小」出現差異。
詳情請見:
ARCore 1.18.0 版的新功能
這個版本新增了下列重大變更:
- 適用於 Android、Android NDK 和 Unity 的全新 Depth API。
- 建立擴增臉部資產並匯入 Android Studio 的新指引。
4.1.0-preview.2
將支援AR Foundation
和ARCore XR Plugin
的 Depth API。
Depth API
在支援深度的裝置上,Depth API 會使用 ARCore 支援裝置的 RGB 相機,或可用的主動式深度感應器,建立深度地圖。接著,您可以使用深度地圖提供的每像素深度,讓虛擬物件準確地顯示在實體物件的前方或後方,打造身歷其境的逼真使用者體驗。
舉例來說,下圖顯示真實空間中的虛擬 Android 人偶,旁邊是門旁的樹幹。Depth API 會正確遮蔽樹幹邊緣後方的身影。
詳情請見:
ARCore 1.17.0 版的新功能
ARCore SDK for Android 的重大變更
新增可緩衝處理多個攝影機影格的方法。除了多執行緒算繪等其他技術,這項功能還可用於減少畫面更新率的變異性。
新增缺少的深度感應器用量和目標 FPS 擷取器:
另請參閱 Android SDK for Android 完整版本資訊。
ARCore SDK for Unity 的重大異動
- 在 Unity 2018.2 以上版本中新增對多執行緒算繪的支援,在大多數情況下可提升效能,並有助於減少影格速率的變異性。這是 Unity 專案設定,位於「Project Settings」>「Player」>「Android」>「Other Settings」>「Multithreaded Rendering」。詳情請參閱開發人員指南。
- 新增
SessionStatus.ErrorCameraNotAvailable
和SessionStatus.ErrorIllegalState
,指出特定 ARCore 工作階段錯誤狀態。
另請參閱 ARCore SDK for Unity 完整版本資訊。
ARCore SDK for iOS 的重大變更
Cloud Anchors SDK 的二進位檔大小已大幅縮減。
擴增臉部現已支援位元碼。
另請參閱 ARCore SDK for iOS 完整版本資訊。
ARCore 1.16.0 版的新功能
ARCore SDK for Android 和 Sceneform SDK for Android 的重大變更
這個版本新增了下列重大變更:
- 現在大多數裝置都會傳回額外支援的相機設定,其 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。詳情請參閱「支援 ARCore 的裝置」。這些擴充的 GPU 解析度可透過
getSupportedCameraConfigs(CameraConfigFilter)
API 取得。
另請參閱:
AR Foundation 的 ARCore 擴充功能
這個版本新增了下列重大變更:
AR Foundation 的
XRCameraConfiguration
擴充功能提供多種方法,可讓您根據所需條件選擇合適的攝影機設定。這些方法包括 GetTextureDimensions()、GetFPSRange() 和 GetDepthSensorUsages()。如需詳細操作說明,請參閱這篇文章。Unity 2019.3.0f6 現在是 ARCore 擴充功能的建議最低版本。 AR Foundation 3.1.0-preview.6 需要 Unity 2019.3 以上版本。
Unity 現在會在跨平台 AR API 中使用「錨點」、「雲端錨點」和「雲端錨點 ID」。ARCore Extensions 的說明文件已據此更新。
另請參閱:
ARCore SDK for Unity 的重大異動
這個版本新增了下列重大變更:
- 現在大多數裝置都會傳回額外支援的相機設定,這些設定的 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。(詳情請參閱「支援 ARCore 的裝置」)。 這些擴充的 GPU 解析度可透過 ARCoreCameraConfigFilter API 取得。
另請參閱:
ARCore 1.15.0 版的新功能
AR Foundation 的 ARCore 擴充功能
這個版本新增了下列重大變更。
新增 CloudAnchors 範例,說明如何為 Android 和 iOS 建立共用 AR 體驗。請參閱 Android或 iOS的操作說明。
現在使用 ARCore 擴充功能時,建議採用 Unity 2019.2.17f1 以上版本。
ARCore SDK for Unity 的重大更新
這個版本有下列已知問題。
使用 Android 9 和 USB 3 傳輸線時,即時預覽功能可能會凍結 Unity。如要解決這個問題,請更新至 Android 10 或使用 USB 2 傳輸線。
如果 Unity 的遊戲檢視畫面解析度過高,裝置可能無法顯示即時預覽畫面。如要修正這個問題,請在編輯器中降低 Unity 的遊戲畫面解析度。
其他異動
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.14.0 版的新功能
這個版本新增了下列重大變更。
如果應用程式暫時將相機讓給裝置上的其他應用程式,追蹤失敗的原因現在會更加具體:
Android:
TrackingFailureReason
是CAMERA_UNAVAILABLE
,而非NONE
。Android NDK:
ArTrackingFailureReasons
是AR_TRACKING_FAILURE_REASON_CAMERA_UNAVAILABLE
,而非AR_TRACKING_FAILURE_REASON_NONE
。Unity:
Session.LostTrackingReason
是LostTrackingReason.CameraUnavailable
,而非None
。
Google 會依據《Google 隱私權政策》和《Google API 服務條款,蒐集及處理您使用 ARCore Extensions 套件時的資料。您可以選擇不採用。
ARCore 1.13.0 版的新功能
這個版本新增了下列重大變更。
支援使用 ARCore Extensions for Unity 的 AR Foundation,以雲端錨點建構 iOS 應用程式。
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.12.0 版的新功能
這個版本新增了下列變更:
支援使用 ARCore Extensions for Unity 的 AR Foundation,建構搭載雲端錨點的 Android 應用程式。
Cloud Anchors 的變更如下:
- 為遵守 ARCore SDK 1.12 以上版本的最新隱私權規定,您必須在應用程式的通知畫面中,醒目揭露使用 Cloud Anchors 的情形,並加入下列文字和相關連結:「為支援本次工作階段,Google 會處理您相機的影像資料。」您可以實作 Cloud Anchor 範例應用程式中提供的建議使用者通知流程,達成上述要求。
詳情請參閱「使用者隱私權規定」。
如要進一步瞭解 Cloud Anchors,請參閱:
Android:
Android NDK:
iOS:
Unity:
ARCore 擴充功能:
ARCore 1.11.0 版的新功能
這個版本新增了下列變更:
ARCore 服務已重新命名為「Google Play 服務 - AR 適用」。 在 Google Play 裝置上,這項服務現在隨附在 Google Play 服務中一起發布。
ARCore 的相機設定目標是在支援的裝置上達到 60 FPS,並優先使用具備深度感應器的裝置。您可以使用新的相機設定篩選器,將相機擷取畫面更新率限制為 30 fps、防止 ARCore 使用深度感應器,或根據這兩個選項進行篩選。
如要進一步瞭解攝影機設定,請參閱:
ARCore 1.10.0 版的新功能
這個版本在 Android、Android NDK 和 Unity 的 Lighting Estimation API 中,新增了環境 HDR 亮度估算功能。
這些 API 會使用機器學習技術分析輸入的攝影機影像,並估算環境照明。您可以使用這項光照估算資料,算繪極為逼真的光照效果,包括主要定向光、陰影、環境光、鏡面高光,以及虛擬物體上的反射。讓虛擬內容更逼真。
詳情請見:
ARCore 1.9.0 版的新功能
Android 版 ARCore SDK 的新功能
這個版本新增了下列 API 和功能:
場景檢視器是身歷其境的檢視器,可透過網站提供 AR 體驗。Android 行動裝置使用者可透過這項功能,在自己的環境中輕鬆放置、查看及操作網路上託管的 3D 模型。
擴增圖像新功能:
ARCore 現在會追蹤移動的擴增圖片。 舉例來說,行駛中的公車上刊登的廣告,或是使用者拿著平坦物體移動手部時,物體上的圖片。
偵測到圖片後,即使圖片暫時移出相機視野,ARCore 仍可繼續追蹤圖片的位置和方向。
使用
AugmentedImage#getTrackingMethod()
(Java) 或ArAugmentedImage_getTrackingMethod()
(NDK),判斷擴增實境圖片目前是否由攝影機追蹤 (FULL_TRACKING
),或是否根據最後已知位置追蹤 (LAST_KNOWN_POSE
)。
Cloud Anchors 說明文件現在提供更詳細的說明,介紹錨點的代管和解析方式。
ARCore SDK for Unity 新功能
擴增圖像新功能:
ARCore 現在會追蹤移動的擴增圖片。 例如,行駛中的公車上的廣告,或是使用者拿著平面物體移動時,平面物體上的圖片。
偵測到圖片後,即使圖片暫時移出相機視野,ARCore 仍可繼續追蹤圖片的位置和方向。
新的
AugmentedImage.GetTrackingMethod()
API 可讓應用程式判斷擴增圖像目前是否由相機追蹤 (FullTracking
),或根據最後已知位置追蹤 (LastKnownPose
)。
Cloud Anchors 說明文件現在提供更詳細的說明,介紹錨點的代管和解析方式。
ARCore SDK for iOS 新功能
支援的裝置:
第五代 iPad Mini
第三代 iPad Air
Cloud Anchors 說明文件現在提供更詳細的說明,介紹錨點的代管和解析方式。