ARCore 新增的重要變更。
ARCore 1.44.0 版新功能
這個版本沒有新功能。
ARCore 1.43.0 版新功能
地理空間創作者遷移作業中的 Places API
地理空間創作者的搜尋功能現在採用 Google 的 New Places API。如要使用搜尋功能,請在 Google Cloud 控制台中啟用「Places API (新版)」。
ARCore 1.42.0 版新功能
在 Unity 的地理空間創作者中,貼齊圖塊
ARGeospatialCreatorAnchor
編輯器面板新增了「Snap to Tile」按鈕。這個按鈕會在錨點目前經緯度的 3D 圖塊幾何圖形頂端,設定地形或屋頂錨點的僅限編輯器海拔高度值。請注意,這個屬性不會影響執行階段的行為。這有助於調整編輯器中的錨定位置,讓錨定在執行階段的位置保持一致。
ARCore 1.41.0 版新功能
地理空間創作者 API
Unity 的地理空間建立者現已支援在編輯器模式中,建立及操控地理空間創作者物件。請參閱 Geospatial Creator API 指南,瞭解新推出的類別和 API。
AR Foundation 5.x 支援 (Beta 版)
Unity 的 AR Foundation 適用的 ARCore 擴充功能現在支援 AR 基礎版本 5.x。如要將現有專案遷移至 AR 基礎,請參閱遷移指南。
ARCore 1.40.0 版新功能
iOS 上的場景語意
iOS 適用的 ARCore SDK 和指定 iOS 平台的 Unity AR Foundation 專用 ARCore 擴充功能現在提供 Scene Semantics API。Scene Semantics API 可讓開發人員即時瞭解使用者周遭的場景,將像素分為 11 類的戶外元件類別。詳情請參閱「情境語意簡介」。
iOS
Unity (AR 基礎)
在 Unity 的地理空間創作者服務中搜尋搜尋點
Unity 的地理空間製作工具現在支援文字搜尋,可用於放置 3D 圖塊檢視畫面。詳情請參閱「在地理空間創作者中搜尋搜尋點」一文。
ARCore 1.39.0 版新功能
這個版本沒有新功能。
ARCore 1.38.0 版新功能
這個版本沒有新功能。
ARCore 1.37.0 版新功能
場景語意
Scene Semantics 提供有關周遭場景的豐富詳細資訊,讓使用者更容易掌握周遭世界。Scene Semantics 會在相機影像動態饋給中執行機器學習模型,並提供每個像素分別對應到 11 個戶外概念標籤中的其中一個像素,並提供語意圖片。
詳情請參閱「Scene Semantics 簡介」和 semantics_java 範例應用程式。
街景服務幾何圖形
Streetscape Geometry 是全新的 ARCore Geospatial API,可在啟用 Geospatial API 的情況下,提供使用者附近區域的建築物和地形幾何圖形。
Android (Kotlin/Java)
請參閱「Streetscape 幾何圖形開發人員指南 (Kotlin/Java)」。此外,geospatial_java 範例應用程式已更新,納入街景服務幾何圖形。
Android NDK (C)
詳情請參閱 Streetscape 幾何圖形開發人員指南 (C)。
Unity (AR 基礎)
詳情請參閱「Streetscape 幾何圖形開發人員指南 (Unity)」。
iOS
詳情請參閱「Streetscape 幾何圖形開發人員指南 (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:
會針對在場景中載入的街景服務幾何圖形執行光點轉換。
屋頂錨點
屋頂錨點是全新的地理空間錨定類型,可協助您將內容錨定在屋頂。
Android (Kotlin/Java)
請參閱「地理空間錨定 (Java)」一文。此外,geospatial_java 範例應用程式經過更新,可加入 Rooftop 錨點。
Android NDK (C)
詳情請參閱地理空間錨點 (C)。
Unity (AR 基礎)
詳情請參閱「地理空間錨點」。此外,地理空間範例經過更新,加入了 Rooftop 錨點。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
會為場景中的遊戲物件提供錨點:指定經緯度、高度高於屋頂的指定地點和方向。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
詳情請參閱「地理空間錨點 (iOS)」。此外,GeospatialExample 應用程式也已更新,加入 Rooftop 錨點。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
會在指定位置建立屋頂錨點,海拔高度則高於屋頂的公尺數,高度則以地球相對為基準。GARCreateAnchorOnRooftopFuture
會保留解析屋頂錨點的非同步狀態。GARRooftopAnchorState
說明解析屋頂錨點的狀態。
地理空間深度
在具備 VPS 涵蓋範圍的區域在 ARCore 工作階段中同時啟用 Depth API 和街景服務幾何圖形模式時,系統會使用 Streetscape 幾何圖形改善生成的深度圖片。街景幾何圖形會整合在每個產生的深度圖片 (範圍為 65.535 公尺)。您無須變更任何呼叫 Depth API 就能取得這項好處。
Android (Kotlin/Java)
詳情請參閱「地理空間深度 (Java)」一文。
Android NDK (C)
詳情請參閱地理空間深度 (C) 一文。
Unity (AR 基礎)
詳情請參閱地理空間深度 (C) 一文。
iOS
Scene Semantics 目前不支援 iOS。
支援 Vulkan 算繪
ARCore 現在透過 AHardwareBuffer
公開相機圖片,提供 Vulkan 算繪支援。您可以將這個硬體緩衝區繫結至 VkImage
,即可使用。
詳情請參閱使用 Vulkan 轉譯 ARCore 應用程式和 hello_ar_vulkan_c 範例應用程式。
Android (Kotlin/Java)
Android NDK (C)
Unity (AR 基礎)
使用 AR 基礎的 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 基礎)
使用 AR Foundation 的 Unity 目前無法使用 EIS。
iOS
EIS 目前不適用於 iOS。
ARCore 非同步 API
這個版本推出新的 ARCore 非同步 API,用於改善以 Future 和 Promise 模式執行非同步作業時的人體工學。
Android (Kotlin/Java)
- 解決地形錨點:使用
Earth.resolveAnchorOnTerrainAsync()
取得ResolveAnchorOnTerrainFuture
。舊版符號Earth.resolveAnchorOnTerrain()
已淘汰,可能會從日後的 ARCore 版本中移除。 - 解決 Cloud 錨點:使用
Session.resolveCloudAnchorAsync()
取得ResolveCloudAnchorFuture
。舊版符號Session.resolveCloudAnchor()
已淘汰,可能會從日後的 ARCore 版本中移除。 - 託管雲端錨點:使用
Session.hostCloudAnchorAsync()
取得HostCloudAnchorFuture
。舊的Session.hostCloudAnchor()
和Session.hostCloudAnchorWithTtl()
符號已不適用,且可能會在日後的 ARCore 版本中移除。 - 檢查 APK 可用性:使用
ArCoreApk.checkAvailabilityAsync()
註冊回呼。舊的符號ArCoreApk.checkAvailability()
並未淘汰。
Android NDK (C)
- 解決地形錨點:使用
ArEarth_resolveAnchorOnTerrainAsync()
取得ArResolveAnchorOnTerrainFuture
或使用ArResolveAnchorOnTerrainCallback
。舊版符號ArEarth_resolveAndAcquireNewAnchorOnTerrain()
已淘汰,可能會從日後的 ARCore 版本中移除。 - 解決 Cloud 錨點:使用
ArSession_resolveCloudAnchorAsync()
取得ArResolveCloudAnchorFuture
或使用ArResolveCloudAnchorCallback
。舊版符號ArSession_resolveAndAcquireNewCloudAnchor()
已淘汰,可能會從日後的 ARCore 版本中移除。 - 代管雲端錨點:使用
ArSession_hostCloudAnchorAsync()
取得ArHostCloudAnchorFuture
或使用ArHostCloudAnchorCallback
。舊的ArSession_hostAndAcquireNewCloudAnchor()
和ArSession_hostAndAcquireNewCloudAnchorWithTtl()
符號已不適用,且可能會在日後的 ARCore 版本中移除。 - 檢查 APK 可用性:使用
ArCoreApk_checkAvailabilityAsync()
註冊回呼。舊的符號ArCoreApk_checkAvailability()
並未淘汰。
Unity (AR 基礎)
- 解決地形錨點:使用
ARAnchorManagerExtensions.ResolveAnchorOnTerrainAsync()
取得ResolveAnchorOnTerrainPromise
。舊版符號ARAnchorManagerExtensions.ResolveAnchorOnTerrain()
已淘汰,可能會從日後的 ARCore 版本中移除。 - 解決 Cloud 錨點:使用
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
取得ResolveCloudAnchorPromise
。舊版符號ARAnchorManagerExtensions.ResolveCloudAnchorId()
已淘汰,可能會從日後的 ARCore 版本中移除。 - 託管雲端錨點:使用
ARAnchorManagerExtensions.HostCloudAnchorAsync()
取得HostCloudAnchorPromise
。舊的ARAnchorManagerExtensions.HostCloudAnchor()
符號已不適用,之後的 ARCore 版本可能會移除這些符號。
iOS
- 解決地形錨點:使用
GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:completionHandler:error:
取得GARCreateAnchorOnTerrainFuture
。舊版符號GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:error:
已淘汰,可能會從日後的 ARCore 版本中移除。 - 解決 Cloud 錨點:使用
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_getEastUpSouthQuaternion()
取代ArGeospatialPose_getHeading()
,並以ArGeospatialPose_getOrientationYawAccuracy()
取代ArGeospatialPose_getHeadingAccuracy()
。 - iOS:將
GARGeospatialTransform.heading
替換為GARGeospatialTransform.eastUpSouthQTarget
,並以GARGeospatialTransform.orientationYawAccuracy
取代GARGeospatialTransform.headingAccuracy
。 - Unity:將
GeospatialPose.Heading
替換為GeospatialPose.EunRotation
,將GeospatialPose.HeadingAccuracy
替換為GeospatialPose.OrientationYawAccuracy
。
其他變更與更新
如要瞭解其他變更、錯誤修正和效能提升,請參閱版本資訊:
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 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 使用網域名稱
地形錨點
- Geospatial Terrain Anchor API 會在指定的水平位置和海拔高度上根據水平位置的地形建立錨點。
其他變更與更新
如要瞭解其他變更、錯誤修正和效能提升,請參閱版本資訊:
ARCore 1.32.0 版新功能
這個版本沒有新功能。
Android 和 Unity (AR Foundation)
- ARCore 的
targetSdkVersion
已更新至 Android API 級別 32。如果您的應用程式未指定targetSdkVersion
,系統會因為合併資訊清單,導致應用程式的targetSdkVersion
變為 32。- Android SDK:在專案的
build.gradle
或AndroidManifest.xml
中指定targetSdkVersion
,會覆寫 ARCore 的targetSdkVersion
值。 - Android 的 AR 基礎:在 Unity 專案的 [Project Settings] > [Player] > [Android] > [Other Settings] 中指定目標 API 級別,會覆寫 ARCore 的
targetSdkVersion
值。
- Android SDK:在專案的
其他變更與更新
如要瞭解其他變更、錯誤修正和效能提升,請參閱版本資訊:
ARCore 1.31.0 版新功能
ARCore 地理空間 API
新版 ARCore Geospatial API 會運用 Google 地球 3D 模型和 Google 地圖的街景服務圖像資料,在您的應用程式中提供以全球規模為依據的沉浸式擴增實境體驗。
如需平台專屬的開發人員說明文件,請參閱「ARCore Geospatial API 簡介」一文,並瞭解如何開始使用新的 Geospatial API。
長範圍深度
ARCore Depth API 現在已完成最佳化調整,可加入較長範圍的深度感測,增加可代表的深度觀測範圍。且全部採用 16 位元的深度圖片,最大範圍為 65535 公釐。先前只填入 13 位元,上限為 8191 公釐。
如需平台相關開發人員說明文件,請參閱「深度異動」一節,並瞭解 Deepth API 的變更。
特定平台注意事項
Android
全新 ARCore 地理空間 API
Java
Earth
可提供地球相關座標的本地化功能。Earth.createAnchor()
會根據與地球相關的指定位置和方向建立新的Anchor
。
Earth.Earthstate
說明Earth
的目前狀態,包括其TrackingState
。GeospatialPose
表示相對於地球的特定位置、高度和指南針方向。
C
ArEarth
提供地球相關座標的本地化功能。ArEarth_acquireNewAnchor()
會根據與地球相關的指定位置和方向建立新的Anchor
。ArEarthState
說明ArEarth
的目前狀態,包括其ArTrackingState
。
ArGeospatialPose
表示相對於地球的特定位置、高度和指南針方向。
更新 ARCore 深度 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 基礎)
全新 ARCore 地理空間 API:
AREarthManager
提供地球相關座標的本地化功能。EarthTrackingState
會取得地球的最新影格的追蹤狀態。EarthState
會保留 Google 地球的錯誤狀況。
GeospatialPose
表示相對於地球的特定位置、高度和指南針方向。ARGeospatialAnchor
為場景中的遊戲物件提供錨點,也就是相對於地球的地點和方向。
iOS
全新 ARCore 地理空間 API:
GAREarth
提供與地球相關的本地化內容。GAREarthState.earthState
可管理錯誤狀態和條件。GAREarthState.trackingState
會保留地理空間資料所需的追蹤狀態。
GARGeospatialTransform
全域轉換的表示法,包括位置、方向、海拔高度和準確度預估值。GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
建立相對於地球的指定位置和方向的地理空間錨點。
其他異動
如要瞭解其他變更、錯誤修正和效能提升,請參閱版本資訊:
ARCore 1.30.0 版新功能
這個版本沒有新功能。
Android
- 已加註的 API 會使用
@NonNull
和@Nullable
傳回值。 - 將用於建構範例的建構工具版本更新為:Gradle 至 7.0.2,並將 Android Gradle 外掛程式更新至 7.0.4。現有的 ARCore 應用程式「不」需要升級這些工具。如要瞭解新功能、已知問題、不相容資訊,請參閱 Android Gradle 外掛程式的 Android 說明文件。
Unity (AR 基礎)
已新增
arcore-unity-extensions-without-edm4u.tgz
版本。這個發布版本不會包含外部依附元件 (例如 適用於 Unity 的外部依附元件管理工具),並允許升級至 EDM。使用這個精簡版可能會解決使用 Firebase 程式庫時不相容的問題。請參閱適用於 AR 基礎的 ARCore 擴充功能安裝操作說明,瞭解如何開始使用。將 ExternalDependencyManager 升級至 1.2.168 版以改善支援 2021.2 以上版本,詳情請參閱 EDM 變更記錄。
修正問題:即使工作階段設定沒有變更,導致 FPS 下降,ARCore 工作階段仍會設定所有影格。
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 基礎)
- ARCore 擴充功能套件現在需要用到 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
已從「建立」>「XR」>「ARCore 擴充功能」移至「建立」>「XR」選單。
iOS
- 修正多項錯誤並提升執行效能。
完整版本資訊
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- ARCore 專用 ARCore 版本資訊
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)
時可正常運作。 - Unity 專用 ARCore SDK (已淘汰):呼叫
Frame.CameraImage.AcquireCameraImageBytes()
時的大小會是0
x0
像素。呼叫Frame.CameraMetadata.GetAllCameraMetadataTags()
將傳回空白的List<CameraMetadataTag>
。
- C:對
- Java:
ArImage#getCropRect()
現在會傳回完整大小的裁剪矩形,也就是圖片中的所有像素都有效。詳情請參閱android.media.Image#getCropRect()
。
ARCore 1.27.0 版新功能
這個版本沒有新功能。如要瞭解各種錯誤修正和效能改善項目,請參閱以下版本資訊。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- ARCore 專用 ARCore 版本資訊
除了多項錯誤修正之外,這個版本還修正了以下內容。
Kotlin 中的範例應用程式
新增 hello_ar_kotlin,藉此示範使用 Kotlin 時的最佳做法。
詳情請參閱「Android 版快速入門」一文。
新增 ml_kotlin,以示範如何搭配 ARCore 使用圖片分類模型。
詳情請參閱「使用 ARCore 做為機器學習模型的輸入內容」。
ARCore 1.26.0 版新功能
這個版本新增了以下重大變更:
- Recording & Playback 資料集現在支援 URI。
其他變更與更新
如要查看其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- ARCore 專用 ARCore 版本資訊
ARCore 1.25.0 版新功能
這個版本沒有新功能。如要瞭解各種錯誤修正和效能改善項目,請參閱以下版本資訊。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- Unity 專用 ARCore SDK 完整版本資訊
- ARCore 專用 ARCore 版本資訊
ARCore 1.24.0 版新功能
這個版本新增了以下重大變更:
- 全新的 Raw Depth API,提供沒有圖片空間篩選功能的深度圖片
- 錄製與播放 API 的自訂資料軌跡功能
- 能執行深度命中測試
原始深度
Raw Depth API 針對相機影像提供深度資料,其準確率高於完整 Depth API 資料,但不一定涵蓋每個像素。系統也能進一步處理原始深度圖片及相應的可信度圖片,讓應用程式只使用對其個別用途有足夠的準確性的深度資料。
開發人員指南:
自訂軌跡錄製
Recording & Playback API 提供全新自訂資料追蹤功能,可在錄製期間將自訂資料新增至 ARCore 影格,並在播放期間從影格中擷取相同資料。
開發人員指南:
深度命中測試
先前只能在偵測到的平面上執行命中測試,將地點限制在大型平面上。深度命中測試利用流暢及原始深度資訊,在非平面和低紋理表面上取得更準確的命中結果。
開發人員指南:
其他變更與更新
如要查看其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- Unity 專用 ARCore SDK 完整版本資訊
- ARCore 專用 ARCore 版本資訊
ARCore 1.23.0 版新功能
尚待支援雙鏡頭相機
雙鏡頭功能將在未來幾週內推出。詳情請參閱支援的裝置頁面。
新增偵錯工具
透過傳送廣播意圖,開發人員可以啟用:
使用 ARCore API 呼叫記錄 Android 偵錯記錄
ARCore 效能疊加畫面
託管及解決 Cloud Anchors
如果使用 ARCore SDK 1.11.0 以下版本建構支援 AR 的應用程式,就無法再託管或解析 Cloud Anchors。
C:
ArSession_hostAndAcquireNewCloudAnchor
和ArSession_resolveAndAcquireNewCloudAnchor
傳回的 Cloud 錨點將一律擁有AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL
狀態。Java:由
Session.hostCloudAnchor(Anchor)
和Session.resolveCloudAnchor(String)
傳回的 Cloud 錨點將一律擁有Anchor.CloudAnchorState.ERROR_INTERNAL
狀態。Unity:
XPSession.CreateCloudAnchor(Anchor)
和XPSession.ResolveCloudAnchor(string)
傳回的 Cloud 錨點將一律擁有CloudServiceResponse.ErrorInternal
狀態。
使用 ARCore SDK 1.12.0 以上版本建構的應用程式不會受到影響。使用 ARCore Cloud Anchor API 時,必須遵守廢止政策。
其他變更與更新
如需其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
ARCore 1.22.0 版新功能
這個版本為 AR Foundation 的 ARCore 擴充功能新增「Recording and Playback API」和「Camera Config Filter API」。詳情請參閱 ARCore 擴充功能完整版本資訊。
其他變更與更新
如需其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
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 以上版本才能支援 AR Foundation 的 ARCore 擴充功能,或支援 Unity 2018.4 以上版本的 Unity ARCore SDK (1.19 以上版本)。
新增永久 Cloud Anchor 支援
在 ARCore v1.20 之前,Cloud Anchors 首次託管之後,可能需要 24 小時才能解析。有了永久 Cloud Anchors,您就能在 1 到 365 天之間建立 Cloud Anchor ,設定存留時間 (TTL)。您也可以使用 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)
。適用於 iOS 的 Unity:開發人員指南、
XPSession.SetAuthToken(string)
和XPSession.CreateCloudAnchor(UnityARUserAnchorComponent, int)
。
其他變更與更新
如需其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
ARCore 1.19.0 版新功能
這個版本新增了以下重大變更:
- 適用於 Android、Android NDK 和 Unity 的全新 Instant Placement API。
- 使用 Unity 為 Android 11 進行建構的全新指南。
即時刊登位置
這項功能可讓使用者將 AR 物件放置在螢幕上,而無須等待 ARCore 偵測表面幾何圖形。當使用者四處移動時,系統會即時修正物件的位置。一旦 ARCore 在放置 AR 物件所在區域中偵測到正確姿勢後,這個白色物件就會自動更新為不精確狀態,並將其變為不透明。
以下片段顯示了實際資料表上的虛擬 Android 人物。這個圖形是白色,首次放置時小很多。ARCore 修正場景維度的計算後,圖形會跳到更準確的位置。這可能會導致系統感知到的「大小」不同。
詳情請見:
ARCore 1.18.0 版新功能
這個版本新增了以下重大變更:
- 適用於 Android、Android NDK 和 Unity 的新 Depth API。
- 新增指南,瞭解如何建立擴增臉孔資產並匯入 Android Studio。
AR Foundation
和ARCore XR Plugin
的4.1.0-preview.2
都會支援 Depth API。
深度 API
在深度支援裝置上,Dpth API 會使用支援 ARCore 裝置的 RGB 相機或主動深度感應器 (如果有的話) 建立深度地圖。接著,您可以使用深度圖提供的每像素深度,讓虛擬物件準確顯示在實際物件前方或後方,進而帶來身歷其境且逼真的使用者體驗。
舉例來說,下圖顯示虛擬 Android 人物,在大門旁有主幹線的真實空間中。Depth API 正確遮住後幹邊緣的圖譜。
詳情請見:
ARCore 1.17.0 版新功能
Android ARCore SDK 中的注意事項
新增允許在多個相機影格中緩衝處理的方法。這項做法可與多執行緒轉譯等其他技術搭配使用,降低影格速率的變動性。
新增缺少的深度感應器用法和 target FPS getter:
另請參閱 Android SDK for Android 完整版本資訊。
Unity 專用 ARCore SDK 中的特色
- Unity 2018.2 以上版本新增了多執行緒轉譯支援功能,在大多數情況下,就能改善效能,並協助降低影格速率變異性。這是 Unity 專案設定,位於「Project Settings」 >「Player」 >「Android」 >「Other Settings」 >「Multithreaded Rendering」。詳情請參閱開發人員指南。
- 新增
SessionStatus.ErrorCameraNotAvailable
和SessionStatus.ErrorIllegalState
,以指出特定的 ARCore 工作階段錯誤狀態。
另請參閱 Unity 適用的 ARCore SDK 完整版本資訊。
iOS 適用的 ARCore SDK 中特別有名
Cloud Anchors SDK 的二進位檔大小大幅減少。
擴增臉孔現在支援位元碼。
另請參閱 iOS 適用的 ARCore SDK 完整版本資訊。
ARCore 1.16.0 版新功能
特別是 Android ARCore SDK 和 Android 專用的 Sceneform SDK
這個版本新增了以下重大變更:
- 大多數裝置現在會傳回額外的相機設定,且 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。詳情請參閱「支援 ARCore 的裝置」。您可透過
getSupportedCameraConfigs(CameraConfigFilter)
API 取得這些擴充的 GPU 解析度。
另請參閱:
特別是 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 中使用「Anchor」、「Cloud Anchor」和「Cloud Anchor ID」。為了反映這一點,ARCore 擴充功能的說明文件已更新。
另請參閱:
Unity 專用 ARCore SDK 中的特色
這個版本新增了以下重大變更:
- 大多數裝置現在會傳回額外的相機設定,且 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。(詳情請參閱「支援 ARCore 的裝置」)。這些擴充的 GPU 解析度可透過 ARCoreCameraConfigFilter API 使用。
另請參閱:
ARCore 1.15.0 版新功能
特別是 ARCore 擴充功能
這個版本新增了下列重大變更。
新增 CloudAnchors 範例,說明如何為 Android 和 iOS 建立共用 AR 體驗。請參閱 Android 或 iOS 的操作說明。
現在 Unity 2019.2.17f1 是建議搭配 ARCore 擴充功能使用的最低建議版本。
Unity 專用 ARCore SDK 中的特色
這個版本有下列已知問題。
使用 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 套件時產生的資料。您也可以選擇停用這項功能。
ARCore 1.13.0 版新功能
這個版本新增了下列重大變更。
支援使用適用於 Unity 的 AR Foundation 的 ARCore 擴充功能,建構使用 Cloud Anchors 的 iOS 應用程式。
如需其他錯誤修正和其他破壞性變更,請參閱以下版本資訊。
ARCore 1.12.0 版新功能
這個版本新增了下列變更:
在 iOS 裝置中加入擴增臉孔功能。詳情請參閱這份總覽、quickstart和開發人員指南。
支援使用適用於 Unity 的 AR Foundation 的 ARCore 擴充功能,以 Cloud Anchors 建構 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 個影格、避免 ARCore 使用深度感應器,或是根據這兩種選項進行篩選。
進一步瞭解攝影機設定:
ARCore 1.10.0 版新功能
這個版本為 Android、Android NDK 和 Unity 的 Lighting Estimation API 新增了環境 HDR 光源估計功能。
這些 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 說明文件現已提供更有關託管和解析錨點方式的詳細說明。
Unity 專用 ARCore SDK 的新功能
全新擴增圖片功能:
ARCore 現在可追蹤移動的擴增圖片。舉例來說,移動圖片上的廣告可能是票證上的廣告,或是使用者隨身攜帶的平面物件上的圖片。
系統偵測到圖片後,即使圖片暫時移出相機檢視畫面,ARCore 也能繼續追蹤圖片的位置和方向。
新的
AugmentedImage.GetTrackingMethod()
API 可讓應用程式判斷相機目前是否透過FullTracking
追蹤擴增圖片,或根據最後已知位置 (LastKnownPose
) 進行追蹤。
Cloud Anchors 說明文件現已提供更有關託管和解析錨點方式的詳細說明。
ARCore SDK for iOS 新功能
支援這些裝置:
第五代 iPad Mini
第三代 iPad Air
Cloud Anchors 說明文件現已提供更有關託管和解析錨點方式的詳細說明。