Jetpack SceneCore
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2025 年 7 月 30 日 | - | - | - | 1.0.0-alpha05 |
依存関係の宣言
XR SceneCore への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha05" // 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-alpha05" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha05") // 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-alpha05") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.0
バージョン 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 が含まれています。
新機能
- 認識された解像度 API がパネル エンティティと
SurfaceEntities
に追加されました。(I118f6) PerceivedResolution
HSM のアクティビティのメインパネルの認識解像度をモニタリングするために Scene.kt に追加されたコールバック メソッド。(I58084)SurfaceEntity
- アプリケーションが作成時にスーパー サンプリングをリクエストするためのサポートを追加。これにより、アプリケーションはアンチエイリアシングにスーパー サンプリング フィルタを使用できます。(I06913)recommendedContentBoxInFullSpace
プロパティをActivitySpace
に追加しました。フルスペース モードでコンテンツを配置する際の推奨ボックスを返します。(I4cd6f)- アンカー設定を可能にする、移動可能な修飾子のオーバーロードされたコンストラクタを提供しました。(Ic0c70)
API の変更
このリリースでは、SceneCore
に大幅な API の変更が加えられました。いくつかのクラスの名前が変更されたり、別のモジュールに移動されたりしています。また、ほとんどの getter / setter メソッドが 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)- エンティティ:
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
メソッドを一時停止関数に変更しました。また、String
ではなくUri
またはPath
を受け入れるように作成パラメータを変更しました。(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
コンストラクタが internal になりました(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
を追加/削除メソッドに置き換えました。(I4c956)AnchorPlacement: planeTypeFilter
の名前がanchorablePlaneOrientations
に変更され、planeSemanticFilter
の名前がanchorablePlaneSemanticTypes
に変更されました。AnchorEntity
またはActivitySpace
にMovableComponent
を追加すると false が返されるようになりました。MoveListener
の名前がEntityMoveListener shouldDisposeParentAnchor
に変更され、EntityMoveListener shouldDisposeParentAnchor
の名前がdisposeParentOnReAnchor systemMovable
に変更されました。create
関数からdisposeParentOnReAnchor systemMovable
が削除され、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) InputEvent
の HitInfo のhitPosition
が、システムから返されたhitPosition
が null の場合にクラッシュする可能性があるバグを修正しました(I7a695)InteractableComponent
- Config *Mode 値の名前が、その動作を反映するように変更されました。(I6d247)
SceneCore
TestApp の FOV とHitTest
に関する問題を修正しました。(I2c51e)- ビット単位の OR で渡された機能のいずれかが true の場合に、すべてが true の場合にのみ true を返すのではなく、true を返す
SpatialCapabilities.hasCapability()
のバグを修正しました。(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
に Spatial Visibility Callback 拡張メソッドを追加。 setPointSourceParams
がSpatialAudioTrack
に追加され、トラックのビルド後にパラメータを更新できるようになりました。Scenecore
API への参照を含む新しいクラス Scene を追加しました。シーンは、セッションの拡張プロパティとしてアクセスできるようになります。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
では、Session.configure()
でPlaneTrackingMode
を構成する必要があります。SpatialUser
API では、Session.configure()
でHeadTrackingMode
を構成する必要があります。ResizableComponent
がアタッチされていない場合、ERROR レベルのログではなく INFO レベルのログが返されます。- Fov クラスが通常の Kotlin クラスになりました。
Entity.kt
を分割して、各具象エンティティ タイプを独自のファイルに配置します。- 新しい
PanelEntity
を作成すると、ほとんどの View はFrameLayout
に再ペアレントされます。これにより、Spatial Panels で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
呼び出しで更新されます。
互換性を破る変更と動作の変更
- パネルの幅または高さが 32 dp 未満の場合、
PanelEntity
とActivityPanelEntity
のデフォルトの角の半径は 32 dp 以下になります。
新しい API と機能
- 没入型メディアをレンダリングするための
Spherical
キャンバスとHemispherical
キャンバスの作成を可能にするStereoSurface.CanvasShape
を導入します。 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: スカイボックス画像や 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 が必要です。回避策として、minSDK が 23 の状態でビルドして実行できるように、次のマニフェスト エントリ
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
を追加します。 - セッションは、メインパネルのサイズ変更、周辺機器の接続、ライトモードとダークモードの切り替えなど、アクティビティが自動的に再作成されるさまざまな状況で無効になる可能性があります。セッションの無効化に関する問題が発生した場合は、メインパネルのサイズ変更を不可にする、動的パネル エンティティを使用する、特定の構成変更に対するアクティビティの再作成を無効にする、ライトモード/ダークモードのテーマ変更を無効にするなどの回避策があります。
- GltfEntity では、移動可能コンポーネントとサイズ変更可能コンポーネントはサポートされていません。
- GltfEntity では Entity.getSize() はサポートされていません。
- Jetpack XR アプリは、AndroidManifest で
android.permission.SCENE_UNDERSTANDING
権限をリクエストする必要があります。 - セッションの作成は、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 を有効にしている場合、Session を作成するとクラッシュします。回避策として、ProGuard を無効にします。ProGuard を有効にする方法について詳しくは、こちらのガイドをご覧ください。