ARCore 的新功能和重要變更。
ARCore 1.48.0 版的新功能
完整支援 Unity 6 和 AR Foundation 6
Unity 的 ARCore 擴充功能 (AR Foundation) 現在支援 AR Foundation 6。請使用下列安裝方法,取得 AR Foundation 適用的 ARCore 擴充功能相容版本:
- 透過
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 版新功能
支援 Unity 6 和 AR Foundation 6 的 Beta 版
Unity AR Foundation 的 ARCore 擴充功能現在支援 AR Foundation 6 Beta 版,可支援 Unity 6。請使用下列安裝方法,取得 AR Foundation 適用的 ARCore 擴充功能相容版本:
- 透過
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,請參閱以下指南。
修正錯誤
- 修正 Cloud Anchor 範例在 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 現在支援啟用裝置的電筒模式,可在昏暗環境中提供更佳的感知能力。
Config.FlashMode
:用於啟用或停用裝置上的閃光燈單元。- 如要進一步瞭解如何偵測閃光燈功能,以及如何啟用手電筒模式,請參閱開發人員指南。
ArFlashMode
:用於啟用或停用裝置上的閃光燈單元。- 如要進一步瞭解如何偵測閃光燈功能,以及如何啟用手電筒模式,請參閱開發人員指南。
Unity 的 ARCore 擴充功能支援 AR Foundation 5
AR Foundation 適用的 ARCore 擴充功能現已正式支援 AR Foundation 5。使用 AR Foundation 5 (Unity 2022 和 2023 版本的已驗證版本) 時,請使用下列安裝方法取得 AR Foundation 適用的 ARCore 擴充功能相容版本:
- 透過
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf5
, - 透過
Add package from tarball...
:使用發布頁面中以arf5
表示的發布版本。
仍使用 AR Foundation 4 版本的專案可以使用下列安裝方法:
- 透過
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf4
, - 透過
Add package from tarball...
:使用發布頁面中以arf4
表示的發布版本。
如要將專案從 AR Foundation 4 升級至 AR Foundation 5,請參閱遷移指南。
自訂指令碼符號 (例如 Beta 版支援的 ARCORE_USE_ARF_5
) 已不再使用。
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 中使用「對齊方塊」
已在 ARGeospatialCreatorAnchor
「編輯器檢查器」面板中新增「對齊資訊方塊」按鈕。這個按鈕會將地形或屋頂錨點的專屬編輯器高度值,設為錨點目前經緯度的 3D 平鋪圖幾何圖形頂端。請注意,這個屬性不會影響執行階段的行為。這有助於調整錨點在編輯器中的顯示位置,以便與執行階段的位置相符。
ARCore 1.41.0 版的新功能
Geospatial Creator API
Unity 適用的 Geospatial Creator 現在支援在編輯器模式中建立及操作 Geospatial Creator 物件。如需瞭解新推出的類別和 API,請參閱 Geospatial Creator API 指南。
AR Foundation 5.x 版支援 (Beta 版)
Unity 的 ARFoundation 適用 ARCore 擴充功能現已支援 ARFoundation 5.x 版本。如要將現有專案遷移至 AR Foundation,請參閱遷移指南。
ARCore 1.40.0 版的新功能
iOS 版場景語意
Scene Semantics API 現在已可在 ARCore SDK for iOS 中使用,也可以在 ARCore Extensions for Unity 的 AR Foundation 中使用,目標為 iOS 平台。透過場景語意 API,開發人員可以即時瞭解使用者周遭的場景,並將像素標記為 11 個戶外元件的類別。詳情請參閱「場景語意簡介」。
在 Unity 適用的 Geospatial Creator 中搜尋 POI
Unity 適用的地理空間創作工具現在支援文字搜尋,可用於定位攝影 3D 資訊方塊檢視畫面。詳情請參閱「在 Geospatial Creator 中搜尋興趣點」。
ARCore 1.39.0 版的新功能
此版本沒有新功能。
ARCore 1.38.0 版的新功能
此版本沒有新功能。
ARCore 1.37.0 版的新功能
場景語意
場景語意可提供更豐富的周遭場景詳細資料,讓您更容易瞭解使用者周遭環境。場景語意會在攝影機圖像動態饋給上執行 ML 模型,並提供語意圖像,其中每個像素都對應至 11 個戶外概念標籤之一。
詳情請參閱場景語意簡介和 semantics_java 範例應用程式。
請參閱「ARCore 1.40.0 的新功能」。
街景幾何圖形
Streetscape 幾何圖形是新的 ARCore Geospatial API,可在啟用 Geospatial API 時,提供使用者周圍區域內建築物和地形的幾何圖形。
請參閱 Street View 地圖幾何圖形開發人員指南 (Kotlin/Java)。此外,geospatial_java 範例應用程式已更新,納入街景地圖幾何圖形。
詳情請參閱「街景地圖幾何圖形開發人員指南 (Unity)」。
詳情請參閱「街景地圖幾何圖形開發人員指南 (iOS)」。此外,GeospatialExample 應用程式已更新,納入街景幾何圖形。
GARStreetscapeGeometry
:GARStreetscapeGeometry.mesh
提供 3D 網格。GARStreetscapeGeometry.meshTransform
會提供幾何圖形的起點轉換,相對於工作階段的世界空間。GARStreetscapeGeometry.trackingState
會維持追蹤狀態。GARStreetscapeGeometry.type
表示是否為地形或建築物幾何圖形。GARStreetscapeGeometry.quality
會提供幾何圖形的品質。GARStreetscapeGeometry.identifier
會提供幾何圖形的專屬 ID。GARSession.createAnchorOnStreetscapeGeometry:transform:error:
會在指定位置和方向建立錨點。GARSession.raycastStreetscapeGeometry:direction:error:
會針對場景中載入的街景幾何圖形執行光線投射。
屋頂錨定點
屋頂定位錨點是新的地理空間定位錨點類型,可協助您將內容錨定至屋頂。
請參閱「地理空間錨點 (Java)」一文。此外,geospatial_java 範例應用程式已更新,加入屋頂定位基準點。
詳情請參閱「地理空間錨點 (C)」一節。
詳情請參閱「地理空間錨點」。此外,地理空間範例已更新,加入屋頂定位基準點。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
會在場景中為遊戲物件提供錨點,並指定其經緯度、屋頂上方的高度和方向。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
詳情請參閱「地理空間錨點 (iOS)」。此外,GeospatialExample 應用程式已更新,納入屋頂錨點。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
會在指定位置建立屋頂錨點,並以公尺為單位指定屋頂上方的高度,以及相對於地球的方向。GARCreateAnchorOnRooftopFuture
會保留解析 Rooftop 錨點的非同步狀態。GARRooftopAnchorState
會說明解析 Rooftop 錨點的狀態。
地理空間深度
在 VPS 涵蓋範圍內的 ARCore 工作階段中,如果同時啟用 Depth API 和街景地圖幾何圖形模式,系統會使用街景地圖幾何圖形改善產生的深度影像。街景幾何圖形會整合至每張產生的深度圖片,範圍為 65.535 公尺。您不必變更呼叫 Depth API 的程式碼,即可享有這項優勢。
詳情請參閱「地理空間深度 (Java)」。
詳情請參閱「地理空間深度 (C)」。
詳情請參閱「地理空間深度 (C)」。
目前 iOS 不支援場景語意。
Vulkan 算繪支援
ARCore 現在透過 AHardwareBuffer
公開相機影像,提供 Vulkan 算繪支援。您可以將此硬體緩衝區繫結至 VkImage
,以便使用這項功能。
詳情請參閱「使用 Vulkan 算繪 ARCore 應用程式」和 hello_ar_vulkan_c 範例應用程式。
目前 Unity 使用 AR Foundation 時,無法使用 Vulkan 算繪。
電子影像穩定技術 (EIS)
您可以設定 ARCore 使用電子圖像穩定功能,這項功能可平滑相機影格,提供更流暢的使用者體驗。
詳情請參閱「啟用電子圖像穩定功能」和 hello_eis_kotlin 範例應用程式。
Config.ImageStabilizationMode
Frame.transformCoordinates3d()
Session.isImageStabilizationModeSupported()
- 目前已知的問題是,使用
OPENGL_NORMALIZED_DEVICE_COORDINATES
以外的 2D 座標呼叫Frame.transformCoordinates3d()
會導致異常終止,而非擲回IllegalArgumentException
。我們會在下一個版本中解決這個問題。
ArImageStabilizationMode
ArFrame_transformCoordinates3d()
ArSession_isImageStabilizationModeSupported()
- 已知問題:使用
AR_COORDINATES_2D_OPENGL_NORMALIZED_DEVICE_COORDINATES
以外的 2D 座標呼叫ArFrame_transformCoordinates3d()
會導致應用程式中止,而不會傳回AR_ERROR_INVALID_ARGUMENT
。我們會在下一個版本中解決這個問題。
EIS 目前不適用於使用 AR Foundation 的 Unity。
EIS 目前不適用於 iOS。
ARCore 非同步 API
此版本引入了新的 ARCore 非同步 API,可依循 Future 和 Promise 模式,改善非同步作業的使用體驗。
- 解析地形錨點:使用
Earth.resolveAnchorOnTerrainAsync()
取得ResolveAnchorOnTerrainFuture
。舊符號Earth.resolveAnchorOnTerrain()
已淘汰,可能會在 ARCore 的後續版本中移除。 - 解析雲端錨點:使用
Session.resolveCloudAnchorAsync()
取得ResolveCloudAnchorFuture
。舊符號Session.resolveCloudAnchor()
已淘汰,可能會在 ARCore 的後續版本中移除。 - 託管雲端錨點:使用
Session.hostCloudAnchorAsync()
取得HostCloudAnchorFuture
。舊符號Session.hostCloudAnchor()
和Session.hostCloudAnchorWithTtl()
已淘汰,可能會在 ARCore 後續版本中移除。 - 檢查 APK 可用性:使用
ArCoreApk.checkAvailabilityAsync()
註冊回呼。舊版符號ArCoreApk.checkAvailability()
並未淘汰。
- 解析地形錨點:使用
ArEarth_resolveAnchorOnTerrainAsync()
取得ArResolveAnchorOnTerrainFuture
,或使用ArResolveAnchorOnTerrainCallback
。舊符號ArEarth_resolveAndAcquireNewAnchorOnTerrain()
已淘汰,可能會在 ARCore 的後續版本中移除。 - 解析 Cloud 錨點:使用
ArSession_resolveCloudAnchorAsync()
取得ArResolveCloudAnchorFuture
,或使用ArResolveCloudAnchorCallback
。舊符號ArSession_resolveAndAcquireNewCloudAnchor()
已淘汰,可能會在 ARCore 的後續版本中移除。 - 託管 Cloud 錨點:使用
ArSession_hostCloudAnchorAsync()
取得ArHostCloudAnchorFuture
,或使用ArHostCloudAnchorCallback
。舊符號ArSession_hostAndAcquireNewCloudAnchor()
和ArSession_hostAndAcquireNewCloudAnchorWithTtl()
已淘汰,可能會在 ARCore 後續版本中移除。 - 檢查 APK 可用性:使用
ArCoreApk_checkAvailabilityAsync()
註冊回呼。舊版符號ArCoreApk_checkAvailability()
並未淘汰。
- 解析地形錨點:使用
ARAnchorManagerExtensions.ResolveAnchorOnTerrainAsync()
取得ResolveAnchorOnTerrainPromise
。舊符號ARAnchorManagerExtensions.ResolveAnchorOnTerrain()
已淘汰,可能會在 ARCore 的後續版本中移除。 - 解析雲端錨點:使用
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
取得ResolveCloudAnchorPromise
。舊符號ARAnchorManagerExtensions.ResolveCloudAnchorId()
已淘汰,可能會在 ARCore 的後續版本中移除。 - 託管雲端錨點:使用
ARAnchorManagerExtensions.HostCloudAnchorAsync()
取得HostCloudAnchorPromise
。舊版ARAnchorManagerExtensions.HostCloudAnchor()
符號已淘汰,日後可能會在 ARCore 的後續版本中移除。
- 解析地形錨點:使用
GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:completionHandler:error:
取得GARCreateAnchorOnTerrainFuture
。舊符號GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:error:
已淘汰,可能會在 ARCore 的後續版本中移除。 - 解析雲端錨點:使用
GARSession.resolveCloudAnchorWithIdentifier:completionHandler:error:
取得GARResolveCloudAnchorFuture
。舊符號GARSession.resolveCloudAnchorWithIdentifier:error:
已淘汰,可能會在 ARCore 的後續版本中移除。 - 代管雲端錨點:使用
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
。
其他異動和更新
如需瞭解其他異動、錯誤修正和效能改善項目,請參閱版本資訊:
- Android 版 ARCore SDK 發布說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
ARCore 1.34.0 版的新功能
確認裝置目前所在位置是否支援地理空間功能
Geospatial API 現在可以在執行階段檢查指定水平位置的視覺定位系統 (VPS) 可用性。這個 API 可在沒有有效 AR 工作階段的情況下使用,例如只在 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
其他異動和更新
如需瞭解其他異動、錯誤修正和效能改善項目,請參閱版本資訊:
- Android 版 ARCore SDK 發布說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
ARCore 1.33.0 版的新功能
新的 Cloud Anchors 端點
- 如要使用 Cloud Anchor,您現在必須啟用 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 雲端錨點端點異動」。
- 新 API 使用網域名稱
地形錨點
- Geospatial Terrain anchor API 會在指定的水平位置和相對於水平位置地形的高度建立錨點。
其他異動和更新
如需瞭解其他異動、錯誤修正和效能改善項目,請參閱版本資訊:
- Android 版 ARCore SDK 發布說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
ARCore 1.32.0 版新功能
此版本沒有新功能。
Android 和 Unity (AR Foundation) 適用於 Android
- ARCore 的
targetSdkVersion
已更新至 Android API 級別 32。如果應用程式未指定targetSdkVersion
,則因資訊清單合併,應用程式的targetSdkVersion
會變成 32。- Android SDK:在專案的
build.gradle
或AndroidManifest.xml
中指定targetSdkVersion
會覆寫 ARCore 的targetSdkVersion
值。 - AR Foundation for Android:在 Unity 專案的「Project Settings」>「Player」>「Android」>「Other Settings」中指定「Target API Level」,即可覆寫 ARCore 的
targetSdkVersion
值。
- Android SDK:在專案的
其他異動和更新
如需瞭解其他異動、錯誤修正和效能改善項目,請參閱版本資訊:
- Android 版 ARCore SDK 發布說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
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 異動資訊,請參閱「Depth 異動」。
平台專屬注意事項
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:
在地球上指定位置和方向建立地理空間錨點。
其他變更
如需瞭解其他異動、錯誤修正和效能改善項目,請參閱版本資訊:
- Android 版 ARCore SDK 發布說明
- Android NDK 適用的 ARCore 版本資訊
- ARCore SDK for iOS 版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
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
版本。這個版本變化版本不會內含外部依附元件 (例如 Unity 適用的 External Dependency Manager),並允許升級至 EDM。使用這個 Lite 版本可能可解決使用 Firebase 程式庫時的不相容性問題。如要開始使用,請參閱 ARCore Extensions for AR Foundation 的安裝說明。將 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 擴充功能套件現在依附於 ARKit XR 外掛程式,確保已安裝的 AR Foundation 版本與 ARKit XR 外掛程式版本相容。這項修正可解決在 Unity 2019.x 上安裝 ARCore Extensions 並啟用 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 完整發布說明
- Android NDK 適用的 ARCore 完整版本資訊
- ARCore SDK for iOS 完整版本說明
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
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()
現在會傳回全尺寸裁剪矩形,也就是圖片中的所有像素皆有效。詳情請參閱android.media.Image#getCropRect()
。
ARCore 1.27.0 版的新功能
此版本沒有新功能。請參閱下列版本資訊,瞭解各種錯誤修正和效能改善項目。
- ARCore SDK for Android 完整發布說明
- Android NDK 適用的 ARCore 完整版本資訊
- ARCore SDK for iOS 完整版本說明
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
除了修正多項錯誤外,這個版本還包含下列項目。
Kotlin 中的範例應用程式
新增 hello_ar_kotlin,說明使用 Kotlin 時的最佳做法。
詳情請參閱 Android 快速入門導覽課程。
新增 ml_kotlin,示範如何使用圖片分類模型搭配 ARCore。
詳情請參閱「使用 ARCore 做為機器學習模型的輸入內容」。
ARCore 1.26.0 版新功能
這個版本新增了下列重要變更:
- 錄製與播放 中的資料集現在支援 URI。
其他異動和更新
如需其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
- ARCore SDK for Android 完整發布說明
- Android NDK 適用的 ARCore 完整版本資訊
- ARCore SDK for iOS 完整版本說明
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
ARCore 1.25.0 版新功能
此版本沒有新功能。請參閱下列版本資訊,瞭解各種錯誤修正和效能改善項目。
- ARCore SDK for Android 完整發布說明
- Android NDK 適用的 ARCore 完整版本資訊
- ARCore SDK for iOS 完整版本說明
- Unity 適用的 ARCore SDK 完整版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
ARCore 1.24.0 版新功能
這個版本新增了下列重要變更:
- 全新的 Raw Depth API,可提供未經過圖像空間篩選的深度圖像
- 將自訂資料軌錄製功能加入 Recording & Playback API
- 執行深度命中測試的能力
原始深度
Raw Depth API 會為相機影像提供深度資料,其準確度高於完整 Depth API 資料,但不一定涵蓋每個像素。原始深度圖片及其相符的信心圖片也可以進一步處理,讓應用程式只使用深度資料,以便在個別用途中達到足夠的準確度。
開發人員指南:
自訂錄音
錄製與播放 API 中的全新自訂資料追蹤功能,可讓您在錄製期間將自訂資料新增至 ARCore 影格,並在播放期間從影格擷取相同資料。
開發人員指南:
深度點擊測試
先前,命中測試只能在偵測到的平面上進行,因此位置會限制在大型平面上。深度命中測試會同時利用平滑和原始深度資訊,提供更準確的命中結果,即使是在非平面和低紋理表面上也是如此。
開發人員指南:
其他異動和更新
如需其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
- ARCore SDK for Android 完整發布說明
- Android NDK 適用的 ARCore 完整版本資訊
- ARCore SDK for iOS 完整版本說明
- Unity 適用的 ARCore SDK 完整版本資訊
- ARCore 擴充功能適用於 AR Foundation 的版本資訊
ARCore 1.23.0 版新功能
等待支援雙鏡頭
我們將於未來幾週內推出雙鏡頭支援功能。詳情請參閱「支援的裝置」頁面。
全新的偵錯工具
開發人員可以傳送廣播意圖,啟用以下功能:
將 ARCore API 呼叫記錄到 Android 偵錯記錄
ARCore 效能疊加畫面
代管及解析雲端錨點
使用 ARCore SDK 1.11.0 以下版本建構的 AR 應用程式,將無法再代管或解析 Cloud Anchor。
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 Anchor 一律會具有CloudServiceResponse.ErrorInternal
狀態。
使用 ARCore SDK 1.12.0 以上版本建構的應用程式不會受到影響。他們使用 ARCore Cloud Anchor API 的行為受到廢止政策規範。
其他異動和更新
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.22.0 版新功能
此版本為 AR Foundation 的 ARCore 擴充功能新增了錄影和播放 API,以及相機設定篩選器 API。詳情請參閱 ARCore Extensions 完整版本資訊。
其他異動和更新
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.21.0 版的新功能
這個版本為 Android、Android NDK 和 Unity 新增錄製和播放 API。
錄製和播放
透過錄影和播放 API,您可以在特定環境中錄製一次影片和 AR 資料,並使用該內容取代即時相機工作階段,以利測試。ARCore 會將錄製的工作階段儲存為 MP4 檔案,其中包含裝置上的多個影片軌和其他雜項資料。接著,您可以指示應用程式使用這項資料,取代即時攝影機工作階段。這樣一來,您就能無限次數重播該內容,嘗試不同的 AR 效果,而不必返回現場。
詳情請見:
ARCore 1.20.0 版的新功能
這個版本新增了下列重要變更:
新增支援持續性 Cloud Anchors。
針對 Android 和 Android NDK 更新圖片中繼資料功能。
新的指南要求使用 Gradle 5.6.4 以上版本,搭配 Unity 2018.4 以上版本支援 AR Foundation 的 ARCore 擴充功能,或 Unity 的 ARCore SDK (1.19 以上版本)。
新增持續性 Cloud Anchor 支援
在 ARCore 1.20 之前,雲端錨點只能在首次代管後的 24 小時內解析。有了持續性 Cloud Anchor,您現在可以建立 Cloud Anchor,存留時間 (TTL) 介於 1 到 365 天之間。您也可以使用 Cloud Anchor Management API,延長已託管錨點的生命週期。
使用永久性 Cloud Anchor 的行為適用於新的 Cloud Anchors 廢止政策。
C:開發人員指南、
ArSession_hostAndAcquireNewCloudAnchorWithTtl
和ArSession_estimateFeatureMapQualityForHosting
。Java:開發人員指南、
hostCloudAnchorWithTtl
和estimateFeatureMapQualityForHosting
。iOS:開發人員指南、
hostCloudAnchor:TTLDays:error:
和estimateFeatureMapQualityForHosting:
。AR Foundation 適用的 ARCore 擴充功能: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 1.19.0 版的新功能
這個版本新增了下列重要變更:
- 適用於 Android、Android NDK 和 Unity 的新版免安裝版廣告 API。
- 使用 Unity 為 Android 11 建構應用程式時,適用的新指引。
即時刊登
使用者可以透過即時放置 API 在畫面上放置 AR 物件,無須等待 ARCore 偵測表面幾何圖形。隨著使用者在環境中移動,系統會即時調整物件放置位置。一旦 ARCore 在 AR 物件放置的區域中偵測到正確的姿勢,白色物件就會自動更新為正確姿勢,並變成不透明。
以下短片顯示實體桌面上的虛擬 Android 人物。該圖形為白色,首次放置時會變得非常小。ARCore 改進場景尺寸的計算方式後,圖形會跳到更精確的位置。這可能會導致物件的「大小」感知出現差異。
詳情請見:
ARCore 1.18.0 版的新功能
這個版本新增了下列重要變更:
- 適用於 Android、Android NDK 和 Unity 的新 Depth API。
- 新增指南,說明如何建立 Augmented Faces 素材資源,並將其匯入 Android Studio。
4.1.0-preview.2
將支援 Depth API,適用於AR Foundation
和ARCore XR Plugin
。
Depth API
在支援深度感應的裝置上,Depth API 會使用 ARCore 支援裝置的 RGB 相機,或可用的主動深度感應器,建立深度地圖。接著,您可以使用深度地圖提供的每個像素深度,讓虛擬物體準確顯示在現實世界物體的前方或後方,打造身歷其境的逼真使用者體驗。
舉例來說,下圖顯示虛擬 Android 人物在真實空間中,門旁有行李箱。Depth API 會正確遮蔽樹幹邊緣後方的圖形。
詳情請見:
ARCore 1.17.0 版的新功能
ARCore SDK for Android 的特色
新增可緩衝多個相機影格的方法。搭配其他技術 (例如多執行緒轉譯) 使用時,可以降低畫面更新率的變化。
新增缺少的 深度感應器 用法和 目標 FPS getter:
另請參閱 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 工作階段錯誤狀態。
另請參閱 Unity 適用的 ARCore SDK 完整版本資訊。
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 支援的裝置」。您可以透過
getSupportedCameraConfigs(CameraConfigFilter)
API 使用這些擴充的 GPU 解析度。
另請參閱:
AR Foundation 的 ARCore 擴充功能中的重點
這個版本新增了下列重要變更:
AR Foundation 的
XRCameraConfiguration
會透過方法擴充,讓您根據所需條件選擇適當的相機設定。這些方法包括 GetTextureDimensions()、GetFPSRange() 和 GetDepthSensorUsages()。請參閱詳細操作說明。ARCore 擴充功能現在建議使用 Unity 2019.3.0f6 以上版本。AR Foundation 3.1.0-preview.6 需要 Unity 2019.3 以上版本。
Unity 現在在跨平台 AR API 中使用「錨點」Anchor、「雲端錨點」Cloud Anchor 和「雲端錨點 ID」Cloud Anchor ID 等字詞。我們已更新 ARCore Extensions 說明文件,以反映這項變更。
另請參閱:
ARCore SDK for Unity 的特色
這個版本新增了以下重要變更:
- 大多數裝置現在會傳回其他支援的相機設定,其 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。(詳情請參閱「ARCore 支援的裝置」)。您可以透過 ARCoreCameraConfigFilter API 使用這些擴充的 GPU 解析度。
另請參閱:
ARCore 1.15.0 版的新功能
AR Foundation 的 ARCore 擴充功能中的重點
這個版本新增了下列重要變更。
新增 CloudAnchors 範例,說明如何為 Android 和 iOS 建立共用 AR 體驗。請參閱 Android 或 iOS 的操作說明。
建議您使用 Unity 2019.2.17f1 以上版本搭配 ARCore Extensions。
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 擴充功能建構 Unity 的 AR Foundation,以建構含有雲端錨點的 iOS 應用程式。
如要瞭解其他錯誤修正和重大變更,請參閱下列版本資訊。
ARCore 1.12.0 版的新功能
這個版本包含下列變更:
支援使用 Unity 的 AR Foundation 適用的 ARCore 擴充功能,建構使用雲端錨點的 Android 應用程式。
以下是 Cloud Anchors 的變更:
- 為遵守使用 ARCore SDK 1.12 以上版本的最新隱私權規定,您必須在應用程式中醒目地揭露使用 Cloud Anchor 的資訊,方法是在通知畫面中加入下列文字,以及可進一步瞭解相關資訊的連結:「為了提供這個工作階段的服務,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 的照明估算 API 新增了環境高動態範圍照明估算功能。
這些 API 會使用機器學習技術分析輸入的相機影像,並估算環境光源。您可以使用這項照明預估資料,算繪極為逼真的照明效果,包括主要定向光源、陰影、環境光線、鏡面高光和虛擬物體上的反射。讓虛擬內容更逼真。
詳情請見:
ARCore 1.9.0 版的新功能
ARCore SDK for Android 的新功能
此版本新增了以下 API 和功能:
Scene Viewer 是一種身歷式檢視器,可在網站上提供 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
第 3 代 iPad Air
Cloud Anchors 說明文件現在提供更詳細的錨點代管和解析方式說明。