Jetpack SceneCore
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| 2026 年 10 月 21 日 | 1.0.0 | - | - | 1.1.0-alpha01 |
依存関係の宣言
XR SceneCore への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.1
バージョン 1.1.0-alpha01
2026 年 10 月 21 日
androidx.xr.scenecore:scenecore-*:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
- 動的メッシュ更新 API(
MeshBuffer.createDynamic、MeshBuffer.updateVertexData、MeshBuffer.updateIndexData、動的CustomMesh.BuilderFromMeshDataコンストラクタ)を追加し、実行時に頂点データとインデックス データを更新できるようにしました。(Ia1ecb) - 指定された
VertexAttributeまたはVertexBufferLayoutのバッファ インデックスを簡単に取得できるように、VertexLayout.getBufferIndexヘルパー メソッドを追加しました。(I1a9e3) CustomMesh.boundsを var にして、実行時に境界ボックスを動的に更新できるようにしました。(Ib0397)glTFアニメーション API(GltfAnimation、GltfModelEntity.getAnimations、GltfModelEntity.stopAllAnimations)を公開/安定版に昇格させました。GltfAnimation.loop セッターは試験運用版のまま、GltfAnimationStartOptionsと start(options) は試験運用版かつ非推奨のままです。(Iacdae)stopAllAnimations()をGltfModelEntityに追加し、GltfAnimation.start()をパラメータなしにし、loopプロパティとspeedプロパティをGltfAnimationに追加し、GltfAnimationStartOptions、start(options)、seekTo(Duration)を非推奨にしました。(I53105)- 破棄されたエンティティで呼び出されたときに
IllegalStateException(具体的にはEntity.DisposedException)をドキュメント化するようにGltfModelEntityAPI を更新しました。I65a76f
バグの修正
androidx.lifecycle:lifecycle-runtimeの依存関係を 2.10.0 に更新しました。このバージョンは、バンドルされたライフサイクル ランタイム lint チェックを AGP バージョン 9.5.0-alpha04 以降で実行するために必要です。(I99bfd、b/556807521)AudioOutputProviderに関連する kdocs を改善し、複数のExoPlayerインスタンスで再利用すべきではないことを強調しました(I6b18e)。- さまざまな XR モジュールから
impressへの不要な依存関係を削除しました。I84636c
バージョン 1.0
バージョン 1.0.0
2026 年 10 月 21 日
androidx.xr.scenecore:scenecore-*:1.0.0 がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。
1.0.0 の主な機能:
- Jetpack XR SceneCore が安定版になりました。SceneCore を使用すると、エンティティで定義された 3D コンテンツを、互いに対して、また環境に対して配置、調整できます。SceneCore を使用すると、仮想現実や複合現実のシーンで 2D パネルや 3D モデルを作成、配置、操作したり、空間環境や空間オーディオ ソースを指定したり、仮想コンテンツを現実世界に固定したりできます。
- 詳しくは、概要ページと API リファレンスをご覧ください。
バージョン 1.0.0-rc02
2026 年 10 月 7 日
androidx.xr.scenecore:scenecore-*:1.0.0-rc02 がリリースされました。バージョン 1.0.0-rc02 に含まれる commit については、こちらをご覧ください。
バグの修正
SessionExtのperceptionRuntimeCacheを削除し、SessionインスタンスからPerceptionRuntimeを直接取得するようにリファクタリングすることで、潜在的なメモリリークを修正しました。(Ie35b1)OpenXRネイティブ ハンドルにapplicationContextを使用して、ネイティブ ランタイムがActivityコンテキストへの参照を保持しないようにすることで、コンテキスト リークの可能性を修正しました。(Ie35b1)- 適切な同期と初期化ロックを導入することで、
XrInstanceManagerの競合状態を修正しました。(Ie35b1) ReferenceCleanerを修正して、クリーンアップ アクションの登録解除をサポートし、dispose()中にEntityクリーンアップ アクションが明示的に実行されるようにして、ガベージ コレクションでの重複実行を防止しました。(Ie35b1)SessionExtのsceneCacheを削除し、sessionConnectorsから直接インスタンスを取得するようにSceneをリファクタリングすることで、Sceneのメモリリークを修正しました。(Ie35b1)
バージョン 1.0.0-rc01
2026 年 9 月 9 日
androidx.xr.scenecore:scenecore-*:1.0.0-rc01 がリリースされました。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください。
API の変更
xr:scenecore:scenecore-openxrライブラリを追加しました。(Ic49f2)- 1.0.0 安定版リリースに先立ち、非推奨の API をいくつか削除しました。
バグの修正
- アクティビティが破棄されたときに、Activity 参照がシステムによって保持される可能性があるメモリリークのバグを解決しました。(I6dcd7)
動作の変更
- SceneCore から logcat 出力を削除しました。(I10c3c)
バージョン 1.0.0-beta02
2026 年 8 月 12 日
androidx.xr.scenecore:scenecore-*:1.0.0-beta02 がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
- 親エンティティがガベージ コレクションされている場合、
toMoveEvent()はnullを返します。(Ia7a1b)
バージョン 1.0.0-beta01
2026 年 7 月 15 日
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
GltfAnimationAPI とSpatialGltfModelAnimationAPI が試験運用版としてマークされました。一部のプロパティはゲッターに変換されました。(I8d689、b/524771027)- パブリック
MovableComponent.createTrackingMovableファクトリ メソッドを削除しました。(I00912、b/477169015) - Session.create を suspend 関数に変換しました。(I5d27f)
ActivitySpaceとAnchorSpaceが、システムによって位置が制御されるエンティティの共通の動作を含む共通のSpaceEntityクラスを拡張するようになりました(I506ec、b/513619219)。AnchorEntityの名前をAnchorSpaceに更新しました(Ifa95e、b/513619219)SoundEffectPoolComponentTester公開テスト API を提供します。(I87df7、b/498104417)SurfaceEntity.Shape.QuadコンストラクタにオプションのcornerRadiusパラメータを追加し、cornerRadiusプロパティを公開しました。デベロッパーは、Quad シェイプを作成するときに角丸の半径を指定して、角が丸いSurfaceEntityキャンバスをレンダリングできるようになりました。また、既存の Quad の半径をクエリすることもできます。(Ia7809、b/474681085)- 公開テスト API
SpatialAudioTrackBuilderTester、SpatialAudioTrackTester、SceneCoreTestRule.getTesterのオーバーロードを提供します。(I378c6、b/496333938) - 多数の ARCore タイプに
toString()の特殊なオーバーライドを追加しました。これらのタイプは、デバッグ目的でデベロッパーに追加情報を提供することを目的としており、本番環境やリリースされたアプリでの使用を想定していません。
バージョン 1.0.0-alpha16
2026 年 6 月 17 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 がリリースされました。バージョン 1.0.0-alpha16 に含まれる commit については、こちらをご覧ください。
API の変更
addVertexData、setIndexData、addSubsetのオーバーロードをCustomMesh.BuilderFromMeshDataとCustomMesh.BuilderFromMeshBufferに追加しました。これらのオーバーロードにより、デベロッパーはByteBufferRegionやMeshSubsetなどの仲介オブジェクトでラップすることなく、元データとパラメータ(ByteBuffer、offset、size、topology、indexOffset、indexCountなど)を直接渡すことができます。(I84d5c)Scene.requestFullSpaceMode()とScene.requestHomeSpaceMode()の名前がそれぞれrequestFullSpace()とrequestHomeSpace()に変更されました。「ホームスペース モード」と「フルスペース モード」を参照する他のメソッドとドキュメントも同様に更新されています。(I45751)- 公開テスト API
PanelEntityTesterとMainPanelEntityTesterを提供します(I961e4) pointSourceParamsプロパティをSoundEffectPoolComponentに追加しました(I4a750)- 公開テスト API
MovableComponentTesterを提供します(I0c972) - 公開テスト API
PointerCaptureComponentTesterを提供します(Ic0d4f) - 公開テスト API
ActivityPanelEntityTesterを提供します(I837c4)。 - 公開テスト API
ResizableComponentTesterを提供します(I0a3a4) - 公開テスト API
BoundsComponentTester.を提供します(Iefd53) - 公開テスト API
SpatialMediaPlayerTesterを提供します(Ia3e09) - 公開テスト API
SpatialEnvironmentTesterを提供します(Icf60f) - 公開テスト API
GltfModelTesterとSceneCoreTestRule.getGltfModelTesterを提供します。(I33fcb) InteractableComponentTester公開テスト API を提供します。(Ia7096)SurfaceEntityTester公開テスト API を提供します。(Ic0740)- 公開テスト API
GltfModelEntityTester、TestGltfModelNode、TestGltfAnimationを提供します。(I72c4d) - 公開テスト API
SceneTesterとSceneCoreTestRule.sceneTesterを提供します。(Ib4ec5) - 公開テスト API
PerceptionSpaceTesterとSceneCoreTestRule.perceptionSpaceTesterを提供します。(Icf739) MeshEntityTester公開テスト API を提供します。(I63801)- 公開テスト API
ImageBasedLightingAssetTesterとSceneCoreTestRule.getTesterのオーバーロードを提供します。(I57ec4) - 公開テスト API
TextureTesterを提供します(Ia865b) - 公開テスト API
PositionalAudioComponentTesterを提供します(Icd96e) - 公開テスト API
SpatialSoundPoolTesterを提供します(Ia3531) - 公開テスト API
SoundEffectPoolTesterを提供します(If349a) - 公開テスト API
ActivitySpaceTesterとSceneCoreTestRule.activitySpaceTesterを提供します。(I2d5c2) - 公開テスト API
SpatialWindowTesterを提供します(I41837)。 - 公開テスト API
AnchorEntityTesterを提供します(I68404) - 公開テスト API インターフェース
SceneCoreTestRuleを提供します。(Ic72d3) PixelDensityクラスを追加し、Scene#virtualPixelDensityを介して公開しました。これにより、ActivitySpaceで正確な物理寸法マッピングを行うためのハードウェア ベースのピクセル / メートル比が提供されます。(I0e3ac)- カスタム メッシュを作成してレンダリングするための公開 API を追加しました。(I7ad2f)
VertexLayoutAPI が更新され、VertexBufferLayoutのリストを使用するようになりました。各VertexBufferLayoutは、単一の頂点バッファ内の属性を記述します。これにより、カスタムのストライドとオフセットを持つインターリーブされた属性など、より柔軟な頂点データの配置が可能になります。(Ic426b)- ARCore トラッキング可能をアクティビティ空間を基準とするポーズに変換する
MovableComponent.createTrackingMovableを提供します。(I12249) Entity.createの親のデフォルト値が null に更新されました。(Ic3145)Entityがインターフェースではなくクラスに更新され、すべての Entity タイプの基本クラスになりました。この変更の一環として、BaseEntityが削除されました。(I7fbc9)GltfModel、ExrImage、ImageBasedLightingAssetがAutoCloseableを実装するようになり、Kotlin のuseブロックを使用した慣用的なリソース管理が可能になりました。(I1ac79)- 空間環境照明を定義するための
ExrImageに代わるImageBasedLightingAssetクラスを導入しました。ExrImageは非推奨となり、公開 API から削除されました。SpatialEnvironmentPreferenceがImageBasedLightingAssetを使用するように更新されました。(I6c92a) SpatialEnvironmentのskyboxパラメータの名前をimageBasedLightingAssetに変更して、その目的をより明確に反映し、ビジュアル スカイボックス テクスチャをジオメトリ パラメータに含める必要があることを明確にしました。(I24d4a)- Spatial API レベル 1 と 2 で、空間エンティティがピクセルからメートルへの計算に安定したデバイス密度を使用するようになり、システム ディスプレイ密度の変化に関係なく一貫したサイズ設定が保証されます。(I37051)
バージョン 1.0.0-alpha15
2026 年 5 月 19 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 がリリースされました。バージョン 1.0.0-alpha15 に含まれる commit については、こちらをご覧ください。
API の変更
Entity.dispose()が公開 API から削除されました。アプリは、Entity インスタンスでdispose()を呼び出す代わりに、parentをnullに設定し、それらのインスタンスへの強い参照をすべてクリアすることで、インスタンスをクリーンアップ可能にできます。(I396c9)SoundEffectPoolのset/clearOnLoadCompleteListenerメソッドが削除されました。代わりにadd/removeLoadCompleteListenerを使用してください(Iae78d)- Scene の
set/clearSpatialVisibilityChangedListenerをadd/removeSpatialVisibilityChangedListenerに置き換えました。(I67dff) - すべての SceneCore
add/removeOnFooListenerメソッドの名前がadd/removeFooListenerに変更され、名前からOnが削除されました。(Ibe50b) AnchorEntity.setOnOriginChangedListenerメソッドとAnchorEntity.setOnStateChangedListenerメソッドがadd/removeFooListenerメソッドに置き換えられ、複数のリスナーを同時にサポートできるようになりました。(I13749)AnchorEntity.State.TIMEDOUTの名前をState.TIMED_OUTに変更しました(Id2b8d)- 安全性と拡張性を向上させるため、Component API をリファクタリングしました。
Componentが抽象クラスになりました。onAttach()メソッドとonDetach()メソッドがprotectedになり、直接呼び出しができなくなりました。コンポーネントのライフサイクルを管理するには、Entity.addComponent()とEntity.removeComponent()を使用してください。(Id04e8) - SceneCore の
PlaneSemanticTypePlaneOrientation定数が Ints からカスタムタイプに移行されました。ANY定数は削除されます。クライアントは、必要なすべての定数を明示的に列挙するか、新しい.ALL不変 Set 定数を使用する必要があります。AnchorEntityファクトリ メソッドは、単一の値ではなく、これらの型のセットを受け入れるようになりました。(Ib1033) - 試験運用版の Custom Mesh API に、スケルタル アニメーション(スキニング)のサポートを追加しました。デベロッパーは、
MeshEntityの作成時にboneCountを指定し、MeshEntity.setBoneTransforms()を使用してアニメーションをリアルタイムで更新することで、カスタム メッシュをアニメーション化できるようになりました。(Id8ba2、b/496692490) - 試験運用版の
CustomMeshAPI を導入しました。開発者は、CustomMesh、MeshBuffer、MeshEntityを使用して、プログラムでシーン内の 3D ジオメトリを作成およびレンダリングできるようになりました。(I94617) androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELDを削除しました。代わりにSourceType.SOUND_FIELDを使用してください。(Ia68b9)- 空間オーディオ コンポーネント
PositionalAudioComponent、SoundEffectPoolComponent、SoundFieldAudioComponentを追加しました(Ieda89) AnchorEntity.getAnchorがAnchorEntity.anchorに置き換えられ、AnchorEntityが ARCoreAnchorから作成された場合にAnchorを返すようになりました(I5c7c8)ActivityPanelEntity、GltfModelEntity、GroupEntity、PanelEntity、SurfaceEntityファクトリ メソッドのparentパラメータのデフォルト値がActivitySpaceからnullに変更されました。エンティティをシーングラフにアタッチして表示するには、デベロッパーはインスタンス化時に、またはEntity.parent = ...を介して、明示的に親を設定する必要があります(Ie7cc1)。
バグの修正
SceneCoreは、Entityインスタンスがファントム到達可能になると自動的に再利用するようになりました。これにより、デベロッパーがdispose()を明示的に呼び出してリソースを解放する必要がなくなりました。[Entity] インスタンスが適切に再利用されるようにするには、デベロッパーは次のことを行う必要があります。parentをnullに設定して、シーングラフからデタッチします。- コード内のインスタンスへの強い参照をすべて放棄する。
- 特別なエンティティ タイプに関する注: 親にできないエンティティ(
AnchorEntityなど)の場合、デベロッパーはインスタンスの使用中に強い参照を維持する必要があります。すべての参照が解放されると、これらのインスタンスはファントム到達可能になり、自動的に再利用されます。(I83fe4)
- すべての
SceneCoreライブラリの Proguard 保持ルールを絞り込みました。(I98447)
既知の問題
PositionalAudioComponentを、非アクティブなExoPlayerインスタンスを持つEntityにアタッチすると、クラッシュが発生します。ExoPlayer が停止している間は、setPointSourceParamsを呼び出したり、空間オーディオ コンポーネントをアタッチまたはデタッチしたりしないでください。この問題は次のリリースで修正される予定です。
バージョン 1.0.0-alpha14
2026 年 5 月 6 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 がリリースされました。バージョン 1.0.0-alpha14 に含まれる commit については、こちらをご覧ください。
API の変更
TrackingStateとVpsAvailabilityResultがandroidx.xr.arcore packageに移動し、androidx.xr.runtimeの型が非推奨になりました。(Ic7930、b/480462213)Plane.Typeの名前をPlaneTypeに変更しました(I8c90c、b/482675376)Plane.Labelの名前をPlaneLabelに変更しました(Ic6b67、b/482675376)androidx.xr.runtime.FieldOfViewが非推奨になりました。代わりにandroidx.xr.runtime.math.FieldOfViewを使用してください。(Ia01a0、b/480233045)Matrix4.poseの名前をMatrix4.toPose()に変更しました。pose プロパティは非推奨になりました。(I329b4、b/493383490)HandJointType個の列挙値の名前を変更しました。(Ifbc83、b/482670596)Component.onAttachとonDetachを公開 API として公開し、カスタムComponent実装を可能にしました。(I0ca1f)- 空間オーディオ コンポーネントを追加しました(I39ddd、b/489421980、b/436642086、b/436642499)
PointSourceParamsからエンティティを削除します。代わりに、Entity がSpatialAudioTrack、SpatialSoundPool、SpatialMediaPlayerで直接使用されます(Ib3685、b/489421980、b/436634048)。DeviceTrackingMode.LAST_KNOWNの名前をSPATIAL_LAST_KNOWNに変更し(非推奨のフォールバックあり)、3DoF トラッキング用にINERTIAL_LAST_KNOWNを追加し、TrackingStateにTRACKING_DEGRADEDを追加しました。(Ie661c、b/445466590)GroupEntityが非推奨になりました。基本の Entity 機能のみを持つ Entity を作成するには、Entity.createを呼び出します。これにより、Entity インターフェースが返されます。(I4c450、b/473867483)XrLogAPI を追加しました。XrLog.isEnabledをtrueに設定して JetpackXR でロギングを有効にし、XrLog.Levelを使用してログレベルを設定します。(I76a1f、b/463460895、b/487378441)
バグの修正
Scene.keyEntityのデフォルトがmainPanelEntityになりました。(I6a3ef)
バージョン 1.0.0-alpha13
2026 年 3 月 25 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 がリリースされました。バージョン 1.0.0-alpha13 に含まれる commit については、こちらをご覧ください。
API の変更
Session.createからunscaledGravityAlignedActivitySpaceフラグを削除しました。ActivitySpaceは常にスケーリングされず、重力に沿って配置されるようになりました。(If6f11、b/458173423)GltfModelEntityから非推奨のsetMaterialOverride関数とclearMaterialOverride関数を削除しました。これらの関数は、個々のGltfModelNodeで呼び出されるようになりました。(I2e5d2)PanelEntityにtransformPixelCoordinatesToLocalPositionとtransformNormalizedCoordinatesToLocalPositionを追加し、Vector3の位置ではなくポーズを返していた同等の試験運用版メソッドを削除しました。(Ib6960、b/460123106、b/458333591)SceneCoreで glTF アニメーションを制御するためのGltfAnimationAPI を追加しました。(I2c172、b/466065486、b/465819070、b/465818617)ScenePose.activitySpacePoseの名前をScenePose.poseInActivitySpaceに変更しました(I8f175、b/427822261)- Scenecore Projected Runtime の実装を追加しました(I9c4ab、b/476440158)
- メインパネル エンティティのサイズを変更すると、
ActivitySpaceの原点に再配置されることがあります。手動またはプログラムでパネルを元の位置に戻す以外に回避策はありません。このバグは今後のリリースで修正される予定です。(b/489427007)。 - 場合によっては、
SurfaceEntityやその他のパネル以外のエンティティ タイプにMovableComponentのアフォーダンスが表示されないことがあります。MovableComponent.sizeを明示的に設定すると、アフォーダンスが表示されます。このバグは今後のリリースで修正される予定です(b/490983469)。
バージョン 1.0.0-alpha12
2026 年 2 月 25 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 がリリースされました。バージョン 1.0.0-alpha12 に含まれる commit については、こちらをご覧ください。
既知の問題
- アンカーされたエンティティは、数秒後にアンカーされた位置からアクティビティ空間の原点にスナップされることがあります。
SurfaceEntityインスタンスの作成時にアプリがクラッシュすることがあります。この問題は、androidx.xr.scenecore:scenecore-*:1.0.0-alpha13以降のリリースで解決されています。影響を受けるアプリは最新バージョンに更新する必要があります。
API の変更
ActivitySpace.addOnSpaceUpdatedListenerとActivitySpace.removeOnSpaceUpdatedListenerの名前がaddOnOriginChangedListenerとremoveOnOriginChangedListenerに変更されました。AnchorEntity.setOnSpaceUpdatedListenerの名前がsetOnOriginChangedListenerに変更されました。(I5d8fb)FakeEntityに公開名プロパティを追加し、FakePanelEntityでビューを公開しました。(Ifa1f9)
バグの修正
- 新しいシステム イメージでのピクセル密度の計算を修正しました(I57d04)。
バージョン 1.0.0-alpha11
2026 年 1 月 28 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 がリリースされました。バージョン 1.0.0-alpha11 に含まれる commit については、こちらをご覧ください。
API の変更
getPerceivedResolutionAPI がCameraViewScenePoseではなく ARCore のRenderViewpointAPI に依存するようになったため、PerceivedResolutionResult.InvalidCameraViewの名前をPerceivedResolutionResult.InvalidRenderViewpointに変更しました。この名前は、新しい実装をより適切に反映しています。(I8c967、b/446989745、b/419311998)PanelEntity/SurfaceEntity.getPerceivedResolutionメソッドは、デベロッパーが指定したRenderViewpointを引数として受け取るようになりました。以前は、ランタイムが、知覚解像度の計算に使用されるRenderViewpointを任意に選択していました。(I8c967、b/446989745、b/419311998)SpatialUser、ScenePose.Head、ScenePose.CameraViewを削除しました。これらの API の機能は、ARCore for Jetpack XR のArDeviceAPI とRenderViewpointAPI でカバーされています。ユーザーの頭部、左目、右目に対応するScenePoseを取得するには、ARCore API を使用して取得した適切なポーズでPerceptionSpace.getScenePoseFromPerceptionPoseを使用します。(I2f69c、b/446989745)
バージョン 1.0.0-alpha10
2025 年 12 月 3 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。
API の変更
transformPixelCoordinatesToPoseとtransformNormalizedCoordinatesToPoseをPanelEntityに追加しました(I462b3)SceneCoreのロジックに基づいて、ヘルパークラス Utils をSceneCoreランタイムに追加しました(I570b9)。
バグの修正
- セッションが破棄され、
SpatialModeChangeEventが受信されたときに発生する可能性のあるクラッシュを修正しました(If44e8) - アクティビティを終了または再開するときに
IllegalStateExceptionがスローされる原因となるバグを修正しました。(Ibff1c)
バージョン 1.0.0-alpha09
2025 年 11 月 19 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。
新機能
- 知覚空間の原点ポーズと、知覚空間の原点に対するポーズの合成を表す
ScenePoseを取得するための API を追加しました。(I5b50a) getGravityAlignedPose関数を追加しました。重力に沿ったポーズでは、回転のピッチとロールは無視されます。(I5ae21)AnchorEntity.State定数型が Ints から State サブタイプに変更されました。(Ib0c49)- Entity インターフェースに
getChildren()を追加しました。MainPanelEntityのライフサイクルを更新しました。(Ia69d6)
API の変更
PointerCaptureComponent.PointerCaptureState定数型が Ints からPointerCaptureStateサブタイプに変更されました。(Ic888a)Scene.spatialCapabilitiesが Int フィールドではなくSet<SpatialCapability>型になりました。SpatialCapability定数の名前が変更されました。(I9c109)SurfaceEntity定数型の名前が変更され、Ints からSurfaceEntityサブタイプに変更されました。(I419ed)SpatializerConstant定数型の名前が変更され、Ints からSpatializerConstantサブタイプに変更されました。(Ia0e18)TextureSampler定数型の名前が変更され、Ints からTextureSamplerサブタイプに変更されました。(I44078)SpatialVisibility定数型が Ints からSpatialVisibilityサブタイプに変更されました。(I70739)ResizeEvent.ResizeState定数型の名前が変更され、Ints からResizeStateサブタイプに変更されました。(I384d5)InputEvent定数型の名前が変更され、Ints からそれぞれの囲み型を継承するように変更されました。(I82817)GltfModelEntity.AnimationState定数型が Ints からAnimationStateサブタイプに変更されました。(I24f4e)AlphaMode定数型の名前が変更され、Ints からAlphaModeサブタイプに変更されました。(I27b56)Space定数型が Ints から Space サブタイプに変更されました。(I9255b)ScenePose.hitTestと関連メソッドは、交差が見つからなかった場合に、nullhitPositionを含むHitTestResultではなく、nullを返すようになりました。HitTestResult.hitPositionが null 許容ではなくなりました。(I1400a)ActivityPoseの参照をScenePoseに変更しました。(I7fe43)
バージョン 1.0.0-alpha08
2025 年 10 月 22 日
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。
API の変更
ActivityPanelEntity.moveActivityの名前をtransferActivityに変更しました(I273c5、b/430332856)
バグの修正
:xr:scenecore:scenecore-spatial-renderingと:xr:scenecore:scenecore-spatial-coreが:xr:scenecore:scenecoreの実装依存関係として追加されました(I6ab65、b/447000520)- セッションの破棄後に
session.sceneにアクセスすると、例外がスローされます。(I77e6f)
バージョン 1.0.0-alpha07
2025 年 9 月 24 日
androidx.xr.scenecore:scenecore:1.0.0-alpha07、androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07、androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。
API の変更
fixedAspectRatioの名前をisFixedAspectRatioEnabledに変更し、ブール値プロパティにしました(I5c4e8、b/440588971)Scenecoreフェイクがxr:scenecore:scenecore-testingモジュールに配置されるようになりました。(Idd951)shouldAutoHideContentの名前をisAutoHideContentWhileResizingEnabledに、shouldAlwaysShowOverlayの名前をisAlwaysShowOverlayEnabledに変更しました(I97c36、b/432335421)SceneCoreTextureSampler定数を更新して読みやすくしました。たとえば、TextureSampler.MinFilter.LINEARはTextureSampler.MIN_FILTER_LINEARになりました(Ib159c)- Scene の
setKeyEntityセッターがkeyEntity変数に統合されました。keyEntityをAnchorEntityなどの移動不可能なエンティティに設定すると、ブール値の false が返されるのではなく、IllegalArgumentExceptionがスローされます。(I62080、b/428721695、b/422215745) - Scene の
SpatialModeChangeListener変数がsetSpatialModeChangedListenerに置き換えられました。SpatialModeChangedListenerではなくConsumer<SpatialModeChangeEvent>を受け取ります。setSpatialModeChangedListenerで Executor をオプションで受け取れるようになりました。(I62080、b/428721695、b/422215745) ActivityPanelEntity.startActivityからbundleパラメータを削除しました(I64344、b/430332856、b/430333040)SpatializerConstants.SOURCE_TYPE_BYPASSの名前をSpatializerConstants.SOURCE_TYPE_DEFAULTに変更しました(Ifc7fe、b/422215565)SpatialSoundPool.PLAY_FAILED定数を追加しました。(Ifc7fe、b/422215565)SpatialSoundPool.playメソッドにデフォルトの引数を追加しました。(Ifc7fe、b/422215565)SpatialAudioTrackBuilderのセッターの戻り値を削除しました。(Ifc7fe、b/422215565)- SurfaceEntity の変更
SurfaceEntity.CanvasShapeさんがShapeの名前を変更しましたSurfaceEntity.CanvasShape.Vr180HemisphereさんがHemisphereの名前を変更しましたSurfaceEntity.CanvasShape.Vr360SphereさんがSphereの名前を変更しましたSurfaceEntity.EdgeFeatheringParams.SmoothFeatherさんがRectangleFeatherの名前を変更しましたSurfaceEntity.EdgeFeathingParams.SolidEdgeさんがNoFeatheringの名前を変更しましたSurfaceEntity.ContentSecurityLevelさんがSurfaceProtectionの名前を変更しましたSurfaceEntity.ContentSecurityLevel.{values}さんが接頭辞「SURFACE_PROTECTION_」を追加しました。SurfaceEntity.SuperSampling.{$values}さんが接頭辞「SUPER_SAMPLING_」を追加しましたSurfaceEntity.StereoMode.{values}さんが接頭辞「STEREO_MODE_」を追加しましたSurfaceEntity.ContentColorMetadata.maxCLLの名前をmaxContentLightLevelに変更しました(I7eb5f、b/422216050、b/427529950)
launchActivityの名前をstartActivityに変更しました(I7db90、b/430332856)Scene.activitySpaceRootを削除しました。代わりにScene.activitySpaceを使用してください。(I05ee8、b/378706624、b/422215745)configureBundleForFullSpaceModeLaunchとconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedの名前をそれぞれcreateBundleForFullSpaceModeLaunchとcreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedに変更し、LaunchUtils.kt ファイルに最上位メソッドとして移動しました。最初のパラメータとして Session を受け取ります(I64a2c、b/437186050)。GroupEntityファクトリが Entity ではなくGroupEntity型を返すようになりました。(I66042)
バグの修正
- 破棄後にエンティティ インスタンスが使用された場合に
IllegalStateExceptionをスローします。(I90990、b/427314036、b/432063442)
バージョン 1.0.0-alpha06
2025 年 8 月 13 日
androidx.xr.scenecore:scenecore:1.0.0-alpha06、androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06、androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。
API の変更
SceneCoreのBaseEntityAPI とBaseScenePoseAPI の制限を解除(88c0ff6)
バージョン 1.0.0-alpha05
2025 年 7 月 30 日
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05、androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05、androidx.xr.scenecore:scenecore:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。
新機能
- パネル エンティティと
SurfaceEntitiesに Perceived Resolution API を追加しました。(I118f6) PerceivedResolutionHSM でのアクティビティのメインパネルの知覚解像度をモニタリングするために、Scene.kt にコールバック メソッドを追加しました。(I58084)SurfaceEntity- アプリケーションが作成時にスーパー サンプリングをリクエストするためのサポートを追加しました。これにより、アプリケーションはアンチエイリアシングにスーパー サンプリング フィルタを使用できます。(I06913)recommendedContentBoxInFullSpaceプロパティをActivitySpaceに追加しました。フルスペース モードでコンテンツを配置する推奨ボックスを返します。(I4cd6f)- アンカーを可能にする、移動可能な修飾子のオーバーロードされたコンストラクタを提供しました。(Ic0c70)
API の変更
このリリースでは、SceneCore に広範な API の変更が加えられました。いくつかのクラスの名前が変更されたり、別のモジュールに移動されたりしています。また、ほとんどのゲッター / セッター メソッドが Kotlin プロパティに置き換えられています。最初のベータ版リリースまでは、API の大幅な変更が今後も行われることが予想されますが、それほど大きな変更や多数の変更にはならない見込みです。
- 次のクラスとインターフェースの名前を変更、または移動しました。
androidx.xr.scenecore.PixelDimensionsをandroidx.xr.runtime.math.IntSize2dに、androidx.xr.scenecore.Dimensionsをandroidx.xr.runtime.math.FloatSize3dに、androidx.xr.scenecore.ActivityPoseをScenePoseに、androidx.xr.scenecore.ContentlessEntityをGroupEntityに、androidx.xr.scenecore.PlaneTypeをPlaneOrientationに、androidx.xr.scenecore.PlaneSemanticをPlaneSemanticTypeに。(Ifd405)(I3b622)(If534d) Sceneのプロパティのセッターの多くが非公開になりました。これらは、SceneCoreクライアントによる変更を想定していませんでした。activitySpace、activitySpaceRoot、mainPanelEntity、perceptionSpace、spatialCapabilities、spatialEnvironment、spatialUser。(I2f506)- Entity:
get/setParent()、setContentDescriptionをプロパティに変更しました。Entity.is/setHidden()を非推奨にしました。代わりにEntity.is/setEnabledを使用してください。(Ibc4c6) androidx.xr.scenecore.BasePanelEntityクラスを削除しました。代わりにPanelEntityを直接使用してください。PanelEntityのゲッターとセッターをプロパティに置き換えました。PanelEntity.sizeプロパティをFloat3dSizeからFloat2dSizeに変更しました。非推奨のメソッドandroidx.xr.scenecore.PanelEntity.getPixelDimensionsを削除しました。代わりにgetSizeInPixelsを使用してください。(Icc174)androidx.xr.scenecore.OnSpaceUpdatedListenerがRunnableに変更されました。(I19308)SpatialUser.getCameraViews()をプロパティに置き換えました。(Ib0cc5)ExrImageとGltfModel:の場合、createメソッドを suspend 関数に変更しました。StringではなくUriまたはPathを受け入れるように create パラメータを変更しました。(Id8883)(I0d247)、(I25706)SpatialEnvironment.requestFullSpaceModeとSpatialEnvironment.requestHomeSpaceModeを Scene に移動しました。たとえば、session.scene.spatialEnvironment.requestFullSpaceMode()の代わりにsession.scene.requestFullSpaceMode()を使用します。addOnPassthroughOpacityChangedListenerとaddOnSpatialEnvironmentChangedListenerに、オプションの Executor を受け入れるオーバーライドが追加されました。(I12fe0)(I6b21e)- 非推奨の
SpatialEnvironmentメソッド(togglePassthrough、setPassthrough、setPassthroughOpacity、getPassthroughMode、getPassthroughOpacity、setSkybox、setGeometry)を削除しました。また、非推奨のクラスSpatialEnvironment.PassthroughModeを削除しました(I927bd)(I927bd)(I927bd) - 次の
SpatialEnvironmentのゲッターとセッターを Kotlin プロパティに置き換えました:getCurrentPassthroughOpacity()、get/setPassthroughOpacityPreference()、get/setSpatialEnvironmentPreference()、isSpatialEnvironmentPreferenceActive()(I33a7b)(Ie06e2)(Ie06e2) SpatialEnvironmentPreference.preferredPassthroughOpacityのタイプをFloat?からFloatに変更しました。null 値は受け入れられなくなりました。代わりに、SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEを使用して、不透明度の設定がないことを示します。(I40107)- create メソッドで、
windowBoundsPxパラメータをpixelDimensionsに更新し、その型を Rect からIntSize2dに更新しました。(I1926e) SpatialEnvironmentコンストラクタが内部になりました(I75a51)SpatialPointerIconNoneクラスとSpatialPointerIconCircleクラスをコンパニオン オブジェクトSpatialPointerIcon.NONEとSpatialPointerIcon.CIRCLEに置き換えました(I416d2)SpatialPointerComponentのSpatialPointerIconが null 許容ではなくなりました。システムのデフォルトのポインタ アイコンを使用する必要があることを示すには、null ではなくSpatialPointerIcon.DEFAULTを使用します。(I416d2)androidx.xr.scenecore.AnchorEntity.getState()を読み取り専用プロパティに置き換えました。わかりやすくするため、AnchorEntity.create()メソッドのパラメータの名前を変更しました。リスナーを設定、追加するAnchorEntityのメソッドで、リスナーが最後の引数に移動され、後置ラムダが有効になりました。AnchorEntityのandroidx.xr.scenecore.OnStateChangedListenerをConsumer<AnchorEntity.State>に置き換えました。(I472e0)GltfModelEntity.getAnimationState()がプロパティになりました。(I10b29)ActivitySpace.getBounds()をプロパティに置き換えました。ActivitySpace.addBoundsChangedListenerの名前をActivitySpace.addOnBoundsChangedListenerに変更しました。ActivitySpace.setOnSpaceUpdatedListenerを add/remove メソッドに置き換えました。(I4c956)AnchorPlacement: planeTypeFilterの名前がanchorablePlaneOrientationsに変更され、planeSemanticFilterの名前がanchorablePlaneSemanticTypesに変更されました。AnchorEntityまたはActivitySpaceにMovableComponentを追加すると false が返されるようになりました。MoveListenerの名前がEntityMoveListener shouldDisposeParentAnchorに変更され、disposeParentOnReAnchor systemMovableの名前が変更され、create関数から削除されました。代わりにcreeateCustomMovable、createSystemMovable、createAnchorableが使用されます(If11c4)。SurfaceEntity.featherRadiusX/Yを削除し、EdgeFeatheringParamsクラスのコンセプトを追加しました。(Ic78fc)PanelEntity.enablePanelDepthTest()メソッドがpanelClippingConfigプロパティに置き換えられました。深度テストを有効にするにはScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)に設定し、無効にするにはPanelClippingConfig(isDepthTestEnabled = false)に設定します。(I0cbe0)Scene.mainPanelEntityのタイプがPanelEntityではなくMainPanelEntityになりました(I7125a)- Scene の
setFullSpaceModeメソッドの名前をconfigureBundleForFullSpaceModeLaunchに、setFullSpaceModeWithEnvironmentInheritedメソッドの名前をconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedに変更しました。(I0cbe0)(I0cbe0) SpatialVisibilityの UNKNOWN、OUTSIDE_FOV、PARTIALLY_WITHIN_FOV、WITHIN_FOV の値を、それぞれ SPATIAL_VISIBILITY_UNKNOWN、SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW、SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW、SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW に変更しました(Ie7e8c)。SpatialVisibilityクラスが、const Int 値を持つパブリック オブジェクトに置き換えられました。setSpatialVisibilityChangedListenerがConsumer<SpatialVisibility>ではなくConsumer<Int>を受け入れるようになりました(Ie7e8c)。PointerCaptureComponent定数の名前を変更し、PointerCaptureComponent.PointerCaptureStateオブジェクトに移動しました(I9c7ac)PointerCaptureComponents' StateListenerがConsumer<Int>に変更されました。(I9c7ac)InputEventListenerをConsumer<InputEvent>に置き換えました(I9c7ac)setPreferredAspectRatioが Scene クラスからSpatialWindowオブジェクトに移動し、最初のパラメータとして Session を受け取るようになりました。(I7b717)Entity.setHidden()をEntity.setEnabled()に、Entity.isHidden()をEntity.isEnabled()に置き換えました。setHidden(false)はsetEnabled(true)およびisHidden() == !isEnabled()と同等です。(Icf0de)Entity.contentDescriptionの型が String からCharSequenceに変更されました。(Ie59be)Session.createとSession.configureが、十分な権限が付与されていない場合にSessionCreatePermissionsNotGrantedまたはSessionConfigurePermissionsNotGrantedを返すのではなく、SecurityExceptionをスローするようになりました。(I7c488)ResizableComponent.createにConsumer<ResizeEvent> ResizeEventListenerが必要になりました。Consumer<ResizeEvent> ResizableComponent.sizeの名前をResizableComponent.affordanceSize ResizableComponent.minimumSizeに、ResizableComponent.minimumEntitySize ResizableComponent.maximumSizeの名前をResizableComponent.maximumEntitySizeに、ResizableComponent.autoHideContentの名前をResizableComponent.shouldAutoHideContentに、ResizableComponent.forceShowResizeOverlayの名前をResizableComponent.shouldAlwaysShowOverlayに変更しました(I97a2d)。androidx.xr.scenecoreとandroidx.xr.composeのminSDKを 24 に減らしました。XR パッケージは、実行時に引き続き API 34 を必要とします。(I17224)- すべての Jetpack XR パッケージから
RequiresApi(34)制限を削除しました。Jetpack XR は現在、API レベル 34 以降のデバイスでのみ利用できるため、この制限は不要でした。(Iae0f8) - メインの
SceneCoreアーティファクト(xr:scenecore:scenecore)には、Kotlin スタイルの非同期 API のみが含まれます。Java デベロッパーは、xr:scenecore:scenecore-guavaライブラリを使用して互換性のある API にアクセスできます。(If221b) - Kotlin 2.0 でリリースされたプロジェクトを使用するには、KGP 2.0.0 以降が必要です(Idb6b5)。
- このライブラリは、タイプユースである JSpecify nullness アノテーションを使用するようになりました。Kotlin デベロッパーは、コンパイラ引数
-Xjspecify-annotations=strictを使用して、正しい使用方法を適用する必要があります(これは Kotlin コンパイラのバージョン 2.1.0 以降のデフォルトです)(Ia8420)。 ListenableFutureを返す非同期メソッドはすべて、Kotlin の suspend 関数に置き換えられました。Kotlin の suspend 関数の代わりにListenableFutureベースの非同期メソッドを使用する Java デベロッパーは、:xr:scenecore-scenecore-guavaの拡張関数を使用する必要があります。たとえば、GuavaExrImageには Guava と同等の ExrImage 非同期関数、GuavaScenePoseには Guava と同等のScenePose非同期関数、GuavaGltfModelにはGuava-equivalent GltfModel非同期関数などが含まれています。(If7283)(I0af60)(If7283)(Ia8515)(I4efdf)(I54bbf)(I3467a)(I82a33)
バグの修正
- Jetpack XR Scenecore の
ProGuardルールを更新し、難読化されたクライアントでAbstractMethodErrorが発生しないようにしました。(I91a01) - Jetpack XR
SceneCoreの Proguard 圧縮をサポートするための追加の修正(I4f47e) - システムから返された
hitPositionが null の場合、InputEventの HitInfo のhitPositionがクラッシュすると、InteractableComponentがクラッシュするバグを修正しました(I7a695)。 - Config *Mode の値の名前を、動作を反映するように変更しました。(I6d247)
SceneCoreTestApp の FOV とHitTestに関する問題を修正しました。(I2c51e)SpatialCapabilities.hasCapability()のバグを修正しました。ビット単位の OR で渡された機能のいずれかが true の場合に、すべてが true の場合にのみ true を返すのではなく、true を返すようになりました。(I2cd40)SurfaceEntity.StereoMode.TOP_BOTTOMを更新し、上部のマップを左目に、下部のマップを右目に表示するようにしました。(I4ae68)
バージョン 1.0.0-alpha04
2025 年 5 月 7 日
androidx.xr.scenecore:scenecore:1.0.0-alpha04 と androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。
新機能
- 埋め込みアクティビティのないパネル エンティティで、バックハンドリングが機能するようになりました。戻るボタンの処理を機能させるには、Android マニフェストで
android:enableOnBackInvokedCallback= "true"を指定する必要があります。 StereoSurfaceEntityで、2 つの新しいStereoMode値(MULTIVIEW_LEFT_PRIMARY と MULTIVIEW_RIGHT_PRIMARY)による MV-HEVC 再生がサポートされるようになりました。PanelEntity.setSizeとPanelEntity.getSizeが親スペースのサイズを返すようになりました。Entity.setPose、Entity.getPose、Entity.setScale、Entity.getScale、Entity.setAlpha、Entity.getAlphaが新しいパラメータrelativeToを受け取るようになりました。これにより、さまざまな空間を基準とした値の取得/設定が可能になります。サポートされている値は、Parent、Activity、Real World の各スペースです。このパラメータのデフォルト値は Parent です。- シーン コンテンツがユーザーの画角の内外に移動したことをモニタリングするために、空間可視性コールバック拡張メソッドを
SessionExt.ktに追加しました。 setPointSourceParamsがSpatialAudioTrackに追加され、トラックのビルド後にパラメータを更新できるようになりました。ScenecoreAPI への参照を含む新しいクラス Scene を追加しました。Scene には、Session の拡張プロパティとしてアクセスできます。SessionExt内の関数が Scene に移動されたため、インポートの調整が必要になります(例:SessionExt.getScene(session))。addSpatialCapababilitiesChangedListener対SessionExt.addSpatialCapabilitiesChangedListener。ActivityPose.hitTestAsyncが追加され、仮想コンテンツに対するhitTestが可能になりました。- 新しいコンポーネント タイプ
SpatialPointerComponentを追加しました。これにより、クライアントはポインタにレンダリングされるアイコンを指定したり、アイコンを無効にしたりできます。このコンポーネントは現在、PanelEntityインスタンスにのみアタッチできます。 - 新しい
PanelEntityファクトリを導入しました。このファクトリは、パネルのサイズをメートルまたはピクセルで受け取ります。パネルに 2 つの Dimension 型パラメータを受け取る古いPanelEntityファクトリを削除しました。
API の変更
- すべての Jetpack XR パッケージから
RequiresApi(34)制限を削除しました。Jetpack XR は現在、API レベル 34 以降のデバイスでのみ利用できるため、この制限は不要でした。(Iae0f8) - Kotlin 2.0 でリリースされたプロジェクトを使用するには、KGP 2.0.0 以降が必要です(Idb6b5)。
PermissionHelperクラスが削除されました。PanelEntity.getPixelDensityは非推奨となりました。PanelEntity.setPixelDimensionsとPanelEntity.getPixelDimensionを削除し、setSizeInPixelsとgetSizeInPixelsに置き換えました。Entity.getActivitySpaceAlphaを削除しました。Entity.getAlpha(Space.Activity)に置き換えることができます。Entity.getWorldSpaceScaleを削除しました。Entity.getScale(Space.REAL\_WORLD)に置き換えることができます。SceneCoreの Session クラスは、XR ランタイムの Session に置き換えられ、削除されました。StereoSurfaceEntityの名前がSurfaceEntityに変更されました。Entity.setSizeとEntity.getSizeが削除され、同じメソッドがPanelEntityに追加されました。PointSourceAttributesの名前がPointSourceParamsに変更されました。SpatializerConstants.SOURCE\_TYPE\_BYPASSの名前がSpatializerConstants.SOURCE\_TYPE\_DEFAULTに変更されました。PointSourceParamsエンティティが一般公開から内部アクセスに変更されました。AnchorEntity.createで、PlaneTrackingModeをSession.configure()で構成することが必要になりました。SpatialUserAPI で、Session.configure()にHeadTrackingModeを構成することが必要になりました。ResizableComponentがアタッチされていない場合、ERROR レベルのログではなく INFO レベルのログが生成されます。- Fov クラスが通常の Kotlin クラスになりました。
Entity.ktを分割して、各具象エンティティ タイプを独自のファイルに配置します。- 新しい
PanelEntityを作成すると、ほとんどの View の親がFrameLayoutに変更されます。これにより、空間パネルでLayoutInspectorを簡単に使用できるようになります。 - 現在使用されている
XrExtensionsインスタンスが、アプリのデバッグを支援するために、ベスト エフォート方式でプラットフォームに登録されるようになりました。
バグの修正
MovableComponentとAnchorPlacementを含むPanelEntityが移動されたときに発生する可能性のあるクラッシュを防ぐ修正を追加しました。ResizableComponentがonResizeStartコールバックで古いサイズを提供していた問題を修正しました。JxrPlatformAdapterAxrのdispose()が複数回呼び出されたときにクラッシュする問題を修正しました。
バージョン 1.0.0-alpha03
2025 年 2 月 26 日
androidx.xr.scenecore:scenecore:1.0.0-alpha03 と androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- Jetpack XR コードで Proguard の圧縮がサポートされるようになりました
バグの修正
- Jetpack XR SceneCore の Proguard 圧縮をサポートするための追加の修正(I4f47e)
- Jetpack XR Scenecore の
ProGuardルールを更新し、難読化されたクライアントでAbstractMethodErrorが発生しないようにしました。(I91a01)
バージョン 1.0.0-alpha02
2025 年 2 月 12 日
androidx.xr.scenecore:scenecore:1.0.0-alpha02 と androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。
1.0.0-alpha02 より前にビルドされたアプリに影響する、互換性を破る変更
- ファクトリ メソッドが
Sessionクラスから、それぞれのタイプのコンパニオン メソッドに移動されました。Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)を削除し、ActivityPanelEntity.create(Session, Dimensions, String, Pose)に置き換えました。Session.createAnchorEntity(Anchor)を削除し、AnchorEntity.create(Session, Anchor)に置き換えました。Session.createAnchorEntity(Dimensions, Int, Int, Duration)を削除し、AnchorEntity.create(Session, Dimensions, Int, Int, Duration)に置き換えました。Session.createEntity(String, Pose)を削除し、ContentlessEntity.create(Session, String, Pose)に置き換えました。Session.createExrImageResource(String)を削除し、ExrImage.create(Session, String)に置き換えました。Session.createGltfEntity(GltfModel, Pose)を削除し、GltfModelEntity.create(Session, GltfModel, Pose)に置き換えました。Session.createGltfModelResource(String)を削除し、GltfModel.create(Session, String)に置き換えました。Session.createInteractableComponent(Executor, InputEventListener)を削除し、InteractableComponent.create(Session, Executor, InputEventListener)に置き換えました。Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)を削除し、MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)に置き換えました。Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)を削除し、PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)に置き換えました。Session.createResizableComponent(Dimensions, Dimensions)を削除し、ResizableComponent.create(Session, Dimensions, Dimensions)に置き換えました。Session.createStereoSurfaceEntity(Int, Dimensions, Pose)を削除し、StereoSurface.create(Session, Int, Dimensions, Pose)に置き換えました。
- 次の非推奨メソッドが削除されました。
Session.canEmbedActivityPanel(Activity)を削除しました。代わりにgetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)を使用してくださいSession.hasSpatialCapability(Int)を削除しました。getSpatialCapabilities()はSpatialCapabilitiesオブジェクトを返すため、空間機能の有無をより細かくチェックする方法として、getSpatialCapabilities().hasCapability()を使用するように置き換えられました。Session.requestFullSpaceMode()を削除し、SpatialEnvironment.requestFullSpaceMode()に置き換えました。Session.requestHomeSpaceMode()を削除し、SpatialEnvironment.requestHomeSpaceMode()に置き換えました。
Session.setFullSpaceMode(Bundle)とSession.setFullSpaceModeWithEnvironmentInherited(Bundle)は拡張関数に移動されました。デベロッパー ファイルに、アクセス用の新しいインポートを追加する必要があります。import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)は拡張関数に移動されました。デベロッパー ファイルに、アクセス用の新しいインポートを追加する必要があります。import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)とSession.getEntityForRtEntity(RtEntity)が拡張関数に移動されました。デベロッパー ファイルに、アクセス用の新しいインポートを追加する必要があります。import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
Session.unpersistAnchor(Anchor)を削除しましたSession.createPersistedAnchorEntity(UUID)を削除しました
既知の問題
PanelEntity.setCornerRadius()とActivityPanelEntity.setCornerRadius()は、パネルが次に移動されるまで有効にならない場合があります。これは、パネルを現在の位置に移動することで軽減できます。ActivitySpaceでBoundsChangedが呼び出されると、一部のActivityPoseが正しく更新されないことがあります。ActivitySpaceのOnSpaceUpdatedのコールで更新されます。
互換性を破る変更と動作の変更
PanelEntityとActivityPanelEntityのデフォルトの角丸半径は 32 dp です。パネルの幅または高さが 32 dp 未満の場合は、それより小さくなります。
新しい API と機能
StereoSurface.CanvasShapeを導入しました。これにより、没入型メディアをレンダリングするためのSphericalキャンバスとHemisphericalキャンバスを作成できます。StereoSurfaceEntity.create()がCanvasShapeパラメータを受け入れるようになりました。(このパラメータは現在無視されていますが、今後のリリースで使用される予定です)StereoSurfaceEntity.create()がDimensionsパラメータを取ることはなくなりました。アプリは、CanvasShapeを設定してキャンバスのサイズを制御する必要があります。StereoSurfaceEntityには、動的に設定できるCanvasShapeメンバーがあります。StereoSurfaceEntity.dimensionsが読み取り専用プロパティになりました。アプリケーションでサイズを変更するには、CanvasShapeを設定する必要があります。StereoSurfaceEntityで、構築後にStereoModeを再設定できるようになりました。
その他の変更
- コンパイル時の minSDK を 24 に引き下げました。すべての Jetpack XR API は、引き続き実行時に API 34 を必要とします。
SceneCoreのセッション ファクトリ(Session.create)が、SCENE_UNDERSTANDING権限を取得するためのインテントを起動しなくなりました。代わりに、クライアント アプリケーションは、アンカーの作成を試みる前に、ユーザーに権限を明示的にリクエストする必要があります。ユーザーが権限を付与しない場合、アンカーの作成は失敗します。
バグの修正
getActivitySpacePose()は、常にスケーリングされていないメートルを返すのではなく、スケーリングされたメートルで変換値を返すことで、ActivitySpaceスケールを考慮するように修正されました。transformPoseToは、ActivitySpaceがソースまたはデスティネーションに関与している場合に、適切な単位を使用して座標の変更を計算するようになりました。setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))を使用して null のスカイボックス設定が渡されると、スカイボックスはすべて黒のスカイボックスに設定されるようになりました。システムのデフォルトのスカイボックスとジオメトリに戻すには、setSpatialEnvironmentPreference(null).を使用します。
バージョン 1.0.0-alpha01
2024 年 12 月 12 日
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 がリリースされました。
初回リリースの機能 Jetpack SceneCore の初回デベロッパー リリース。Jetpack SceneCore は、没入型シーンと環境を作成、操作するための 3D シーングラフ ライブラリです。このライブラリを使用すると、3D モデルとコンテンツ パネルを、互いに、また仮想環境や現実世界の環境に対して配置、調整できます。
- SpatialEnvironment: スカイボックス画像や 3D モデル ジオメトリを XR シーンの背景として使用し、完全な没入型エクスペリエンスを作成します。または、パススルーを有効にして、仮想シーンをユーザーの現実世界の環境と統合します。
- PanelEntity: 標準の Android レイアウトとアクティビティを、空間化されたパネルに埋め込むことで、3D シーンに 2D コンテンツを追加します。パネルは、浮遊させることも、現実世界のサーフェスに固定することもできます。
- GltfModelEntity: シーン内の 3D モデルを配置、アニメーション化、操作します。SceneCore は、既存のモデルとの統合を容易にするために glTF ファイル形式をサポートしています。
- SpatialAudio: 3D シーンにアンビエント オーディオ ソースとポイント オーディオ ソースを追加して、臨場感あふれる空間化されたサウンドを実現します。
- StereoSurfaceEntity: SceneCore は、Android Surface にレンダリングされたコンテンツの左右の目のルーティングをサポートしています。これを使用して、ステレオ写真、3D 動画、その他の動的にレンダリングされる UI など、ステレオスコープ コンテンツを左右または上下の形式でレンダリングできます。アプリは、動画のデコードに MediaPlayer または ExoPlayer を使用する必要があります。
- コンポーネント システム: SceneCore は、XR コンテンツに機能を追加するための堅牢で柔軟なコンポーネント システムを提供します。これには、ユーザーがモデルやパネルを移動、サイズ変更、操作できるようにするアフォーダンスが含まれます。
- アンカー: パススルーを有効にすると、パネルやモデルを実際の表面に配置できるため、ユーザーは現実世界の環境に仮想コンテンツをシームレスに統合できます。
- ユーザーのポーズ: 仮想シーン内のユーザーの位置にアクセスして、ユーザーの位置に合わせてコンテンツの向きを調整します。
- SpatialCapabilities: UI コンテンツの 3D 配置など、空間化機能が利用可能な場合にそれを活用する、完全なアダプティブ アプリを構築します。さらに、アプリの実行中に機能の変更をモニタリングし、ユーザーが Android XR デバイスをどのように使用しているかに基づいてエクスペリエンスを変更することもできます。
既知の問題
- 現在、Jetpack SceneCore を使用するには minSDK 30 が必要です。回避策として、次のマニフェスト エントリ
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>を追加すると、minSDK 23 でビルドして実行できるようになります。 - セッションは、メインパネルのサイズ変更、周辺機器の接続、ライトモードとダークモードの切り替えなど、Activity を自動的に再作成するさまざまな状況で無効になることがあります。セッションの無効化の問題が発生した場合の回避策としては、メインパネルのサイズを変更不可にする、動的パネル エンティティを使用する、特定の構成変更に対してアクティビティの再作成を無効にする、ライトモード/ダークモードのテーマ変更を無効にする、などがあります。
- 移動可能コンポーネントとサイズ変更可能コンポーネントは、GltfEntity ではサポートされていません。
- Entity.getSize() は GltfEntity でサポートされていません。
- Jetpack XR アプリは、AndroidManifest で
android.permission.SCENE_UNDERSTANDING権限をリクエストする必要があります。 - セッションの作成は、Android XR デバイスでのみサポートされています。現時点では、セッションを作成して Android XR デバイス以外のデバイスで使用しようとすると、RuntimeException が発生します。
- `SpatialEnvironment.setSpatialEnvironmentPreference() を介してスカイボックスを null に設定しても、ドキュメントに記載されているように、スカイボックスが黒一色になりません。システムのデフォルトのスカイボックスが使用されるか、現在のスカイボックスが変更されない可能性があります。
- SceneCore クライアントは、アプリの依存関係の Gradle 構成に
implementation(“com.google.guava:listenablefuture-1.0”)を追加する必要があります。今後のリリースでは、scenecore にこのライブラリがapi依存関係として含まれるため、クライアントが明示的に宣言する必要はなくなります。 - SceneCore に、推移的な依存関係として
com.google.guava:guava-31.1-androidとcom.google.protobuf:protobuf-javaliteが誤って含まれています。これによりビルドで重複クラスエラーが発生する場合は、これら 2 つの依存関係を安全に除外できます。 - アプリで SceneCore を使用し、ProGuard を有効にしている場合、Session を作成するとクラッシュします。回避策として、ProGuard を無効にします。ProGuard を有効にする方法について詳しくは、こちらのガイドをご覧ください。