{ } { }
Jetpack SceneCore
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2025 年 5 月 7 日 | - | - | - | 1.0.0-alpha04 |
依存関係の宣言
XR SceneCore への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha04" // Required for Java implementation "com.google.guava:listenablefuture:1.0" // Required for Kotlin implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha04") // Required for Java implementation("com.google.guava:listenablefuture:1.0") // Required for Kotlin implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.0
バージョン 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
が使用されるようになりました。これにより、異なるスペースを基準とした値の取得と設定が可能になります。サポートされている値は、親、アクティビティ、現実世界のスペースです。このパラメータのデフォルト値は親です。- シーン コンテンツがユーザーの視界内または視界外に移動したタイミングをモニタリングするための空間可視性コールバック拡張メソッドが
SessionExt.kt
に追加されました。 setPointSourceParams
がSpatialAudioTrack
に追加され、トラックのビルド後にパラメータを更新できるようになりました。Scenecore
API を参照する新しいクラス Scene を追加しました。Scene は、Session の拡張プロパティとしてアクセスできます。SessionExt
内の関数が Scene に移動されたため、インポートを調整する必要があります(SessionExt.getScene(session)
など)。addSpatialCapababilitiesChangedListener
対SessionExt.addSpatialCapabilitiesChangedListener
。ActivityPose.hitTestAsync
が追加され、仮想コンテンツに対するhitTest
が可能になりました。- 新しいコンポーネント タイプ
SpatialPointerComponent
を追加しました。これにより、クライアントはポインタにレンダリングされるアイコンを指定したり、アイコンを無効にしたりできるようになりました。現在、このコンポーネントはPanelEntity
インスタンスにのみアタッチできます。 - パネルの寸法をメートル単位またはピクセル単位で受け取る新しい
PanelEntity
ファクトリを導入しました。パネルの 2 つのディメンション タイプのパラメータを取る古い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
では、Session.configure()
でPlaneTrackingMode
を構成する必要があります。SpatialUser
API では、Session.configure()
でHeadTrackingMode
を構成する必要があります。ResizableComponent
がアタッチされていない場合、ERROR レベルのログではなく INFO レベルのログが生成されます。- Fov クラスが通常の Kotlin クラスになりました。
Entity.kt
を分割して、各具体的なエンティティ タイプを独自のファイルに配置します。- 新しい
PanelEntity
を作成するときに、ほとんどのビューは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)
- 圧縮されたクライアントの
AbstractMethodError
を防ぐように、Jetpack XR Scenecore のProGuard
ルールを更新しました。(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
呼び出しで更新されます。
互換性と動作の変更
- パネルの幅または高さが 32 dp 未満の場合、
PanelEntity
とActivityPanelEntity
のデフォルトの角の半径は 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
がリリースされました。
初回リリースの機能 没入感のあるシーンと環境を作成、操作するための 3D シーングラフ ライブラリである Jetpack SceneCore の初回デベロッパー リリース。このライブラリを使用すると、3D モデルとコンテンツ パネルを相互に、または仮想環境または現実世界環境に対して配置できます。
- SpatialEnvironment: 環境の XR シーンの背景として、スカイボックス画像や 3D モデル ジオメトリを使用して、没入感のあるエクスペリエンスを作成します。または、パススルーを有効にして、仮想シーンをユーザーの現実世界環境と統合することもできます。
- PanelEntity: 標準の Android レイアウトとアクティビティを空間化されたパネルに埋め込み、3D シーンに 2D コンテンツを追加します。パネルは浮遊させたり、現実世界のサーフェスに固定したりできます。
- GltfModelEntity: シーンに 3D モデルを配置、アニメーション化、操作します。SceneCore は glTF ファイル形式をサポートしているため、既存のモデルとの統合が容易です。
- SpatialAudio: アンビエント音源とポイント音源を 3D シーンに追加して、没入感のある空間オーディオを実現します。
- StereoSurfaceEntity: SceneCore は、Android サーフェスにレンダリングされたコンテンツの左右の目のルーティングをサポートしています。これにより、ステレオ写真、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 でビルドして実行できるようにします。 - セッションが無効になる状況はさまざまです。たとえば、メインパネルのサイズ変更、周辺機器の接続、明るいモードと暗いモードの切り替えなど、アクティビティが自動的に再作成される状況では、セッションが無効になる可能性があります。セッションの無効化に関する問題が発生した場合は、回避策として、メインパネルのサイズ変更を無効にしたり、動的パネル エンティティを使用したり、特定の構成変更に対するアクティビティの再作成を無効にしたり、ライトモード/ダークモードのテーマの変更を無効にしたりできます。
- 移動可能コンポーネントとサイズ変更可能コンポーネントは GltfEntity ではサポートされていません。
- Entity.getSize() は GltfEntity でサポートされていません。
- AndroidManifest で
android.permission.SCENE_UNDERSTANDING
権限をリクエストする必要がある Jetpack XR アプリ。 - セッションの作成は、Android XR デバイスでのみサポートされています。現時点では、Session を作成して 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 を有効にしている場合、セッションを作成するとクラッシュします。回避策として、ProGuard を無効にします。ProGuard を有効にする方法については、こちらのガイドをご覧ください。