Jetpack SceneCore

3D コンテンツを使用して Android XR シーングラフを構築、操作します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
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)をドキュメント化するように GltfModelEntity API を更新しました。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 の変更

  • GltfAnimation API と SpatialGltfModelAnimation API が試験運用版としてマークされました。一部のプロパティはゲッターに変換されました。(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)
  • VertexLayout API が更新され、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 の PlaneSemanticType PlaneOrientation 定数が Ints からカスタムタイプに移行されました。ANY 定数は削除されます。クライアントは、必要なすべての定数を明示的に列挙するか、新しい .ALL 不変 Set 定数を使用する必要があります。AnchorEntity ファクトリ メソッドは、単一の値ではなく、これらの型のセットを受け入れるようになりました。(Ib1033)
  • 試験運用版の Custom Mesh API に、スケルタル アニメーション(スキニング)のサポートを追加しました。デベロッパーは、MeshEntity の作成時に boneCount を指定し、MeshEntity.setBoneTransforms() を使用してアニメーションをリアルタイムで更新することで、カスタム メッシュをアニメーション化できるようになりました。(Id8ba2、b/496692490)
  • 試験運用版の CustomMesh API を導入しました。開発者は、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 が ARCore Anchor から作成された場合に 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)
  • XrLog API を追加しました。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 アニメーションを制御するための GltfAnimation API を追加しました。(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 の変更

  • getPerceivedResolution API が CameraViewScenePose ではなく ARCore の RenderViewpoint API に依存するようになったため、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 の ArDevice API と RenderViewpoint API でカバーされています。ユーザーの頭部、左目、右目に対応する 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 と関連メソッドは、交差が見つからなかった場合に、null hitPosition を含む 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)
  • SceneCore TextureSampler 定数を更新して読みやすくしました。たとえば、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 の BaseEntity API と BaseScenePose API の制限を解除(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)
  • PerceivedResolution HSM でのアクティビティのメインパネルの知覚解像度をモニタリングするために、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)
  • SceneCore TestApp の 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 に追加され、トラックのビルド後にパラメータを更新できるようになりました。
  • Scenecore API への参照を含む新しいクラス 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() で構成することが必要になりました。
  • SpatialUser API で、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.setFullSpaceMode
    • import 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.getEntitiesOfType
    • import 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 を有効にする方法について詳しくは、こちらのガイドをご覧ください。