ARCore 的全新重大變更。
ARCore 1.42.0 版新功能
在 Unity 的地理空間創作者中對齊圖塊
「Snap to Tile」按鈕已新增至 ARGeospatialCreatorAnchor
編輯器檢查器面板。這個按鈕會將地形或屋頂錨點的「僅限編輯器」海拔高度值,設為錨點目前經緯度的 3D 圖塊幾何圖形頂端。請注意,這個屬性不會影響執行階段的行為。這有助於根據編輯器中的位置調整錨點位置。
ARCore 1.41.0 版新功能
地理空間建立者 API
Unity 的地理空間建立者功能現已支援在編輯器模式中建立和操控地理空間建立者物件。如要瞭解新提供的類別和 API,請參閱 Geo 空間創作者 API 指南。
AR Foundation 5.x 版支援 (Beta 版)
Unity AR Foundation 的 ARCore Extensions 現在支援 AR Foundation 5.x 版。如要將現有專案遷移至 AR Foundation,請參閱遷移指南。
ARCore 1.40.0 版新功能
iOS 上的場景語意
Scene Semantics API 現已推出 iOS 版 ARCore SDK,以及適用於 iOS 平台的 Unity AR Foundation 適用的 ARCore 擴充功能。Scene Semantics API 可讓開發人員即時瞭解使用者周遭環境,並為 11 個戶外元件類別加上標籤。詳情請參閱「場景語意簡介」一文。
iOS
Unity (AR Foundation)
在 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 幾何圖形 API 是新的 ARCore Geo 空間 API,可在啟用 Geospatial API 的使用者附近,提供使用者周圍當地建築物和地形的幾何圖形,
Android (Kotlin/Java)
請參閱「街景服務幾何圖形開發人員指南 (Kotlin/Java)」。此外,geospatial_java 範例應用程式進行更新,加入街景服務幾何圖形。
Android NDK (C)
詳情請參閱「街景服務幾何圖形開發人員指南 (C)」。
Unity (AR Foundation)
詳情請參閱「街景服務幾何圖形開發人員指南 (Unity)」。
iOS
詳情請參閱「街景服務幾何圖形開發人員指南 (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 範例應用程式已更新,加入屋頂錨點。
Android NDK (C)
詳情請參閱地理空間錨點 (C)。
Unity (AR Foundation)
詳情請參閱地理空間錨點。此外,地理空間範例也已更新,加入屋頂錨點。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
會為場景中的遊戲物件提供錨定標記,這些物件會位於屋頂和方向的指定緯度、經度、海拔高度和方向。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
詳情請參閱地理空間錨點 (iOS)。此外,GeospatialExample 應用程式也已更新,加入了 Rooftop 錨點。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
會在指定位置建立 Rooftop 錨點,也就是與地球相對的高度 (以公尺為單位) 和方向。GARCreateAnchorOnRooftopFuture
會保留解析屋頂錨點的非同步狀態。GARRooftopAnchorState
說明解析屋頂錨點的狀態。
地理空間深度
如果您在 VPS 涵蓋範圍區域的 ARCore 工作階段中同時啟用 Depth API 和 Streetscape 幾何圖形模式,系統就會使用 Streetscape 幾何圖形改善產生的深度圖像。街景服務幾何圖形會整合到每張產生的深度圖像,範圍不超過 65.535 公尺。您無需變更呼叫 Depth API 即可看到這項好處。
Android (Kotlin/Java)
詳情請參閱地理空間深度 (Java)。
Android NDK (C)
詳情請參閱地理空間深度 (C)。
Unity (AR Foundation)
詳情請參閱地理空間深度 (C)。
iOS
Scene Semantics 目前不支援 iOS。
Vulkan 算繪支援
ARCore 現在提供 Vulkan 算繪支援,透過 AHardwareBuffer
公開相機圖片。如要使用這個硬體緩衝區,請將緩衝區繫結至 VkImage
。
詳情請參閱「使用 Vulkan 轉譯 ARCore 應用程式」和 hello_ar_vulkan_c 範例應用程式。
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Vulkan 算繪功能目前不適用於使用 AR Foundation 的 Unity。
電子影像穩定 (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)
EIS 目前不適用於使用 AR Foundation 的 Unity。
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 Foundation)
- 解決地形錨點:使用
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 版新功能
Swift Package Manager 對 iOS 的支援
iOS 版 ARCore SDK 現已正式支援 Swift Package Manager。請參閱在 iOS 應用程式中啟用 AR 一文,瞭解如何使用 Swift Package Manager 與 ARCore 整合。
ARCore 1.35.0 版新功能
地理空間姿勢準確度將方向換成偏角
所有地理空間姿勢現在都會公開向偏轉的方向精確度,取代方向準確性。
- Java/Kotlin:將
GeospatialPose.getHeading()
替換成GeospatialPose.getEastUpSouthQuaternion()
,並以GeospatialPose.getOrientationYawAccuracy()
取代GeospatialPose.getHeadingAccuracy()
。 - C:將
ArGeospatialPose_getHeading()
替換為ArGeospatialPose_getEastUpSouthQuaternion()
,並以ArGeospatialPose_getOrientationYawAccuracy()
取代ArGeospatialPose_getHeadingAccuracy()
。 - iOS:將
GARGeospatialTransform.heading
替換成GARGeospatialTransform.eastUpSouthQTarget
,並以GARGeospatialTransform.orientationYawAccuracy
取代GARGeospatialTransform.headingAccuracy
。 - Unity:將
GeospatialPose.Heading
替換為GeospatialPose.EunRotation
,並以GeospatialPose.OrientationYawAccuracy
取代GeospatialPose.HeadingAccuracy
。
其他異動和更新
請參閱版本資訊,瞭解其他變更、錯誤修正和效能提升。
- Android 適用的 ARCore SDK 版本資訊
- Android NDK 適用的 ARCore 版本資訊
- iOS 版 ARCore SDK 版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
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 版本資訊
- iOS 版 ARCore SDK 版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
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
。 - 2023 年 8 月前,您還是可以繼續使用舊版 API/端點。
- 詳情請參閱 ARCore 1.33 Cloud Anchor 端點變更。
- 新的 API 使用網域名稱
地形錨點
- 地理空間地形錨定 API 可在指定水平位置和相對於水平位置地形的高度,建立錨定標記。
其他異動和更新
請參閱版本資訊,瞭解其他變更、錯誤修正和效能提升。
- Android 適用的 ARCore SDK 版本資訊
- Android NDK 適用的 ARCore 版本資訊
- iOS 版 ARCore SDK 版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
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:在專案的
其他異動和更新
請參閱版本資訊,瞭解其他變更、錯誤修正和效能提升。
- Android 適用的 ARCore SDK 版本資訊
- Android NDK 適用的 ARCore 版本資訊
- iOS 版 ARCore SDK 版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
ARCore 1.31.0 版新功能
ARCore Geo 空間 API
新版 ARCore Geo 空間 API 採用 Google 地球 3D 模型的資料,以及 Google 地圖提供的街景服務圖像資料,讓您的應用程式得以提供身歷其境的全球規模擴增實境體驗。
請參閱 ARCore Geospatial API 簡介,瞭解平台專用的開發人員說明文件,並開始使用新的 Geospatial API。
長範圍深度
ARCore Depth API 經過最佳化,現已納入範圍更廣的深度感應功能,擴大可代表的深度觀測範圍。系統會使用所有 16 位元的深度圖片,最大範圍為 65535 公釐。先前僅會填入 13 位元,上限為 8191 公釐。
如需平台專用的開發人員說明文件,請參閱 Depth 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 Foundation)
新的 ARCore Geo 空間 API:
AREarthManager
可在地球相關座標中,提供本地化功能。EarthTrackingState
會取得最新影格的地球追蹤狀態。EarthState
會保留 Google 地球錯誤狀況。
GeospatialPose
描述相對於地球的特定位置、高度和指南針方向。ARGeospatialAnchor
為場景中的遊戲物件提供錨定標記,指定位置和相對於地球的方向。
iOS
新的 ARCore Geo 空間 API:
GAREarth
提供地球相關本地化。GAREarthState.earthState
會管理錯誤狀態和條件。GAREarthState.trackingState
會保留地理空間資料所需的追蹤狀態。
GARGeospatialTransform
全域轉換表示法,包括位置、方向、海拔高度和預估準確率。GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
在指定位置和相對於地球的方向,建立地理空間錨點。
其他異動
請參閱版本資訊,瞭解其他變更、錯誤修正和效能提升。
- Android 適用的 ARCore SDK 版本資訊
- Android NDK 適用的 ARCore 版本資訊
- iOS 版 ARCore SDK 版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
ARCore 1.30.0 版新功能
這個版本不含新功能。
Android
- 已加註的 API 會使用
@NonNull
和@Nullable
傳回值。 - 將用於建構範例的建構工具版本更新為 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。使用這個精簡版本,可能會在使用 Firebase 程式庫時解決不相容的問題。如要開始使用,請參閱適用於 AR Foundation 的 ARCore Extensions 的安裝操作說明。已將 ExternalDependencyManager 升級至 1.2.168 版,以便更妥善支援 2021.2 以上版本,詳情請參閱 EDM 變更記錄。
修正以下問題:即使工作階段設定中未變更,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 Foundation)
- ARCore Extensions 套件現在依附於 ARKit XR 外掛程式,確保安裝的 AR Foundation 版本與 ARKit XR 外掛程式版本相容。修正了在 Unity 2019.x 上安裝 ARCore 擴充功能並啟用 ARKit XR 外掛程式時發生的編譯錯誤。
- ARCore Extensions 專案設定已從「專案設定」>「XR」>「ARCore Extensions」移至「專案設定」>「XR 外掛程式管理」>「ARCore Extensions」。
ARCoreExtensionsConfig
、ARCoreExtensionsCameraConfigFilter
、ARCoreRecordingConfig
已從「建立」>「XR」>「ARCore Extensions」移至「建立」>「XR」選單。
iOS
- 修正多項錯誤並提升執行效能。
完整的版本資訊
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- ARCore 適用的 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)
的呼叫將照常運作。 - 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 Extensions 版本資訊
除了各種錯誤修正以外,這個版本還包含以下內容。
Kotlin 中的範例應用程式
新增 hello_ar_kotlin,以示範使用 Kotlin 時的最佳做法。
詳情請參閱「Android 快速入門」。
新增 ml_kotlin 以展示圖片分類模型可以如何與 ARCore 搭配使用。
詳情請參閱「使用 ARCore 做為機器學習模型的輸入內容」一文。
ARCore 1.26.0 版新功能
這個版本新增了下列重要變更:
- 錄製與播放中的資料集現已支援 URI。
其他異動和更新
請參閱以下版本資訊,瞭解其他錯誤修正和其他破壞性變更。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
ARCore 1.25.0 版新功能
這個版本不含新功能。請參閱以下版本資訊,瞭解各項錯誤修正和效能改善項目。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- Unity 的 ARCore SDK 完整版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
ARCore 1.24.0 版新功能
這個版本新增了下列重要變更:
- 全新的 Raw Depth API,提供不必篩選圖片空間的深度圖片
- 錄製與播放 API 的自訂資料追蹤錄製功能
- 可執行深度命中測試
原始深度
Raw Depth API 可為相機圖片提供深度資料,其準確率高於完整深度 API 資料,但不一定能涵蓋每個像素。原始深度圖片和相符的可信度圖像也可以進一步處理,允許應用程式只使用個別用途中準確率足夠的深度資料。
開發人員指南:
記錄自訂軌跡
透過 Recording & Playback API 中的全新自訂資料追蹤功能,您可以在錄製期間將自訂資料新增至 ARCore 影格,並在播放期間從畫面中擷取相同的資料。
開發人員指南:
深度點擊測試
先前,命中測試只能對偵測到的飛機執行,將地區限制在大型平面上。深度測試結合運用平滑和原始深度資訊,提供更準確的命中結果,即使在非平面和低紋理的表面上也是如此。
開發人員指南:
其他異動和更新
請參閱以下版本資訊,瞭解其他錯誤修正和其他破壞性變更。
- Android 適用的 ARCore SDK 完整版本資訊
- Android NDK 適用的 ARCore 完整版本資訊
- iOS 版 ARCore SDK 完整版本資訊
- Unity 的 ARCore SDK 完整版本資訊
- ARCore 適用的 ARCore Extensions 版本資訊
ARCore 1.23.0 版新功能
正在等待雙鏡頭支援
在未來幾週內,我們將推出雙鏡頭支援功能。詳情請參閱「支援的裝置」頁面。
全新偵錯工具
傳送廣播意圖可讓開發人員啟用:
Android 偵錯記錄的 ARCore API 呼叫記錄
ARCore 效能重疊顯示
託管及解析 Cloud Anchors
使用 ARCore SDK 1.11.0 以下版本建構且支援 AR 的應用程式,無法再託管或解析 Cloud Anchor。
C:
ArSession_hostAndAcquireNewCloudAnchor
和ArSession_resolveAndAcquireNewCloudAnchor
傳回的 Cloud Anchors 一律會處於AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL
狀態。Java:
Session.hostCloudAnchor(Anchor)
和Session.resolveCloudAnchor(String)
傳回的 Cloud Anchors 一律會處於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 版新功能
這個版本為 AR Foundation 的 ARCore 擴充功能新增錄製和播放 API 和 Camera Config Filter API。詳情請參閱 ARCore Extensions 的完整版本資訊。
其他異動和更新
請參閱以下版本資訊,瞭解其他錯誤修正和其他破壞性變更。
ARCore 1.21.0 版新功能
這個版本為 Android、Android NDK 和 Unity 新增錄製和播放 API。
錄製與播放
使用錄製和播放 API 時,您可以在指定環境中錄製影片和 AR 資料一次,並使用該內容取代即時相機工作階段,以便進行測試。ARCore 會將錄製的工作階段儲存到 MP4 檔案中,該檔案內含多個視訊軌和其他資料。然後,您就能指出應用程式使用這項資料取代即時相機工作階段。讓您能無限期重播該內容,藉此嘗試不同的 AR 效果,而無需返回欄位。
詳情請見:
ARCore 1.20.0 版新功能
這個版本新增了下列重要變更:
新增永久雲端錨點支援。
更新 Android 和 Android NDK 的映像檔中繼資料功能。
這項新指南需要 Gradle 5.6.4 以上版本,才能支援 AR Foundation 適用的 ARCore Extensions 或 Unity 2018.4 以上版本支援 Unity 適用的 ARCore SDK (1.19 以上版本)。
新增支援永久雲端錨點的功能
在 ARCore 1.20 版之前,Cloud Anchors 首次託管後只能解析 24 小時。有了永久雲端錨點,您就能建立 Cloud Anchor,並設定 1 到 365 天的存留時間 (TTL)。您也可以使用 Cloud Anchor Management API,擴充錨點的生命週期。
使用永久雲端錨定標記時,必須遵守新的 Cloud Anchors 廢止政策。
C:開發人員指南、
ArSession_hostAndAcquireNewCloudAnchorWithTtl
和ArSession_estimateFeatureMapQualityForHosting
。Java:開發人員指南、
hostCloudAnchorWithTtl
和estimateFeatureMapQualityForHosting
。iOS:開發人員指南、
hostCloudAnchor:TTLDays:error:
和estimateFeatureMapQualityForHosting:
。AR Foundation 適用的 ARCore Extensions:Android 開發人員指南、iOS 開發人員指南、
ARAnchorManager.HostCloudAnchor(ARAnchor, int)
、ARAnchorManager.SetAuthToken(string)
和ARAnchorManager.EstimateFeatureMapQualityForHosting(Pose)
。Unity 指定目標為 Android:開發人員指南、
XPSession.CreateCloudAnchor(Anchor, int)
和XPSession.EstimateFeatureMapQualityForHosting(Pose)
。Unity 指定目標 iOS:開發人員指南、
XPSession.SetAuthToken(string)
和XPSession.CreateCloudAnchor(UnityARUserAnchorComponent, int)
。
其他異動和更新
請參閱以下版本資訊,瞭解其他錯誤修正和其他破壞性變更。
ARCore 1.19.0 版新功能
這個版本新增了下列重要變更:
- 針對 Android、Android NDK 和 Unity 推出新的 Instant Placement API。
- 使用 Unity 針對 Android 11 進行建構的新指南。
即時刊登位置
Instant Placement API 可讓使用者將 AR 物件放置在畫面上,不必等待 ARCore 偵測表面幾何圖形。當使用者在環境內移動時,物件位置會即時修正。一旦 ARCore 在放置 AR 物件的區域偵測到正確姿勢,白物件會自動更新,使其姿勢準確且不透明。
以下短片顯示了實際資料表中的虛擬 Android 人物。圖形首次擺放在白色,而且比較小。ARCore 修正場景維度的計算結果後,圖表就會跳到更準確的位置。這可能會導致感知物件的「大小」。
詳情請見:
ARCore 1.18.0 版新功能
這個版本新增了下列重要變更:
- 適用於 Android、Android NDK 和 Unity 的新深度 API。
- 新增指南,說明如何建立擴增臉孔資產並匯入 Android Studio。
AR Foundation
和ARCore XR Plugin
的4.1.0-preview.2
將支援深度 API。
深度 API
在深度支援的裝置上,深度 API 會使用支援 ARCore 的裝置 RGB 相機或主動深度感應器 (如有),建立深度地圖。接著,您可以運用深度圖提供的每像素深度,讓虛擬物件準確呈現在真實世界物件的前方或後方,提供身歷其境且逼真的使用者體驗。
舉例來說,下圖顯示實際空間中的虛擬 Android 人物,門口旁有後車廂。Depth API 會正確地遮蓋後車邊緣的假象。
詳情請見:
ARCore 1.17.0 版的新功能
位於 Android 適用的 ARCore SDK 中
新增可緩衝多個相機畫面的新方法。除了多執行緒轉譯等其他技術外,這種做法也可以降低畫面更新率的變化。
新增缺少的深度感應器用法和目標 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 和 Sceneform SDK for Android
這個版本新增了下列重要變更:
- 現在大多數裝置會傳回其他支援的相機設定,而且 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。詳情請參閱 ARCore 支援的裝置。
您可以透過
getSupportedCameraConfigs(CameraConfigFilter)
API 使用這些擴充的 GPU 解析度。
另請參閱:
知名特色:ARCore 適用的 ARCore Extensions
這個版本新增了下列重要變更:
AR Foundation 的
XRCameraConfiguration
進一步延伸,可讓您根據所需條件選擇適當的相機設定。這些方法包括 GetTextureDimensions()、GetFPSRange() 和 GetDepthSensorUsages()。請參閱詳細操作說明。Unity 2019.3.0f6 現在是 ARCore Extensions 建議的最低版本。AR Foundation 3.1.0-preview.6 需要 Unity 2019.3 以上版本。
Unity 現在會在跨平台 AR API 中使用「Anchor」、「Cloud Anchor」和「Cloud Anchor ID」。為因應這種情況,我們更新了 ARCore Extensions 的說明文件。
另請參閱:
特別是適用於 Unity 的 ARCore SDK
這個版本新增了下列重大變更:
- 現在大多數裝置會傳回其他支援的相機設定,而且 GPU 紋理解析度低於裝置的預設 GPU 紋理解析度。(詳情請參閱「支援 ARCore 的裝置」)。 您可以透過 ARCoreCameraConfigFilter API 使用這些擴充的 GPU 解析度。
另請參閱:
ARCore 1.15.0 版新功能
知名特色:ARCore 適用的 ARCore Extensions
這個版本新增了下列重要變更。
新增 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 Extensions 套件時產生的資料。您可以選擇停用這項功能。
ARCore 1.13.0 版新功能
這個版本新增了下列重要變更。
支援使用 Unity AR Foundation 的 ARCore Extensions,建構含有 Cloud Anchors 的 iOS 應用程式。
支援場景中的環境 HDR 亮度估算功能。
請參閱以下版本資訊,瞭解其他錯誤修正和其他破壞性變更。
ARCore 1.12.0 版新功能
此版本新增了下列變更:
在 iOS 上新增擴增臉孔功能。詳情請參閱這份總覽、quickstart和開發人員指南。
支援使用 Unity AR Foundation 的 ARCore Extensions,透過 Cloud Anchor 建構 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 個影格,防止 ARCore 使用深度感應器,或者同時根據這兩種選項進行篩選。
如要進一步瞭解相機設定:
ARCore 1.10.0 版新功能
這個版本為 Android、Android NDK 和 Unity 的 Lighting Estimation API 新增環境 HDR 亮度估算功能。
這些 API 會使用機器學習技術分析輸入相機圖片,並預估環境光源。您可以利用這種光源估算資料算繪非常真實的光照,包括在虛擬物件上採用主要方向光、陰影、環境光、鏡片的亮點和反射。最終目的是呈現更真實的虛擬內容。
詳情請見:
ARCore 1.9.0 版新功能
Android 適用的 ARCore SDK 新功能
這個版本新增了下列 API 和功能:
場景檢視器是沉浸式檢視器,讓使用者可以在網站上提供 AR 體驗。這個 API 可讓 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 說明文件現在提供更有關錨點的託管及解析的詳細說明。
iOS 適用的 ARCore SDK 新功能
支援這些裝置:
第五代 iPad Mini
第三代 iPad Air
Cloud Anchors 說明文件現在提供更有關錨點的託管及解析的詳細說明。