Jetpack SceneCore
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| 2025 年 10 月 22 日 | - | - | - | 1.0.0-alpha08 |
依存関係の宣言
XR SceneCore への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha08" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha08") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.0
バージョン 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の実装依存関係として:xr:scenecore:scenecore-spatial-renderingと:xr:scenecore:scenecore-spatial-coreを追加しました(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 が含まれています。
新機能
- 認識された解像度 API がパネル エンティティと
SurfaceEntitiesに追加されました。(I118f6) PerceivedResolution: Scene.kt にコールバック メソッドを追加し、HSM のアクティビティのメインパネルの認識解像度をモニタリング。(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に変更されました。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) InputEventの HitInfo のhitPositionがクラッシュする可能性があるバグを修正しました。これは、システムから返されたhitPositionが null の場合に発生します(I7a695)InteractableComponent- Config *Mode 値の名前が、その動作を反映するように変更されました。(I6d247)
SceneCoreTestApp の 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に追加され、トラックのビルド後にパラメータを更新できるようになりました。ScenecoreAPI への参照を含む新しいクラス 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では、Session.configure()でPlaneTrackingModeを構成する必要があります。SpatialUserAPI では、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.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呼び出しで更新されます。
互換性を破る変更と動作の変更
- パネルの幅または高さが 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 を有効にする方法について詳しくは、こちらのガイドをご覧ください。