{} {}
Jetpack SceneCore
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
12 فوریه 2025 | - | - | - | 1.0.0-alpha02 |
اعلام وابستگی ها
برای افزودن وابستگی به XR SceneCore، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha01" // 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-alpha01" }
کاتلین
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha01") // 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-alpha01") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.0
نسخه 1.0.0-alpha02
12 فوریه 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02
و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02
منتشر شد. نسخه 1.0.0-alpha02 حاوی این تعهدات است.
تغییرات پیشرو بر برنامههای ساخته شده قبل از 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()
ممکن است تا زمانی که پانل در مرحله بعدی جابجا نشود، اثری نداشته باشند، این می تواند با انتقال پانل به موقعیت فعلی آن کاهش یابد. - هنگامی که
BoundsChanged
درActivitySpace
فراخوانی می شود، ممکن است برخی ازActivityPose
به درستی به روز نشده باشند. در تماسOnSpaceUpdated
زیر درActivitySpace
به روز می شود
شکستن و تغییرات رفتاری
-
PanelEntity
وActivityPanelEntity
شعاع گوشه پیش فرض 32dp یا کمتر خواهند داشت اگر پانل عرض یا ارتفاع کمتر از 32dp داشته باشد.
API ها و قابلیت های جدید
-
StereoSurface.CanvasShape
را معرفی می کند که امکان ایجاد بوم هایSpherical
وHemispherical
برای رندر کردن رسانه های همه جانبه فراهم می کند. -
StereoSurfaceEntity.create()
اکنون یک پارامترCanvasShape
را می پذیرد. (این پارامتر در حال حاضر نادیده گرفته شده است، اما در نسخه بعدی استفاده خواهد شد) -
StereoSurfaceEntity.create()
دیگر پارامترDimensions
را نمی گیرد. برنامه ها باید اندازه بوم را از طریق تنظیمCanvasShape
کنترل کنند -
StereoSurfaceEntity
یک عضوCanvasShape
دارد که می تواند به صورت پویا تنظیم شود. -
StereoSurfaceEntity.dimensions
اکنون یک ویژگی فقط خواندنی است. برنامه ها بایدCanvasShape
را برای تغییر ابعاد تنظیم کنند. -
StereoSurfaceEntity
اکنون اجازه می دهد تاStereoMode
پس از ساخت دوباره تنظیم شود.
تغییرات دیگر
- زمان کامپایل minSDK را به 24 کاهش داد. همه APIهای Jetpack XR همچنان به API 34 در زمان اجرا نیاز دارند.
- کارخانه جلسه
SceneCore
(Session.create
) دیگر قصدی برای دریافت مجوزSCENE_UNDERSTANDING
راه اندازی نمی کند. در عوض، برنامه سرویس گیرنده باید به صراحت مجوزها را از کاربر، قبل از تلاش برای ایجاد لنگرها درخواست کند. اگر مجوز توسط کاربر اعطا نشود، ایجاد لنگر با شکست مواجه خواهد شد.
رفع اشکال
-
getActivitySpacePose()
برای محاسبه مقیاسActivitySpace
با برگرداندن مقادیر ترجمه در مترهای مقیاس شده به جای برگرداندن همیشه مترهای غیرمقیاس ثابت شده است.transformPoseTo
اکنون همچنین از واحدهای مناسب برای محاسبه تغییرات مختصات زمانی کهActivitySpace
در منبع یا مقصد درگیر است استفاده می کند. - هر زمان که اولویت اسکای باکس تهی با استفاده از
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
منتقل شود، اکنون skybox روی یک skybox کاملا سیاه تنظیم می شود. برای بازگشت به skybox و هندسه پیش فرض سیستم، ازsetSpatialEnvironmentPreference(null).
نسخه 1.0.0-alpha01
12 دسامبر 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
منتشر شد.
ویژگی های Initial Release انتشار اولیه Jetpack SceneCore توسط توسعه دهندگان، یک کتابخانه نمودار صحنه سه بعدی برای ایجاد و دستکاری صحنه ها و محیط های غوطه ور. این کتابخانه به شما امکان می دهد مدل های سه بعدی و پنل های محتوا را نسبت به یکدیگر و محیط های مجازی یا دنیای واقعی خود قرار دهید و ترتیب دهید.
- محیط فضایی : با یک تصویر skybox و/یا هندسه مدل سه بعدی به عنوان پسزمینه صحنه XR محیط خود، تجربیات کاملاً فراگیر ایجاد کنید. یا عبور را فعال کنید تا صحنه مجازی شما بتواند با محیط دنیای واقعی کاربر ادغام شود.
- PanelEntity : با قرار دادن طرحبندیها و فعالیتهای استاندارد اندروید در پانلهای فضایی که میتوانند شناور شوند یا به سطوح واقعی متصل شوند، محتوای دو بعدی را به صحنههای سه بعدی خود اضافه کنید.
- GltfModelEntity : قرار دادن، متحرک سازی و تعامل با مدل های سه بعدی در صحنه خود. SceneCore از فرمت فایل glTF برای سهولت ادغام با مدل های موجود پشتیبانی می کند.
- SpatialAudio : منابع صوتی محیطی و نقطهای را به صحنه سهبعدی خود اضافه کنید تا صدایی کاملاً فراگیر و فضایی.
- StereoSurfaceEntity : SceneCore از مسیریابی چشم چپ/راست محتوای ارائه شده بر روی Surface اندروید پشتیبانی می کند. این می تواند برای ارائه محتوای استریوسکوپی در قالب کنار هم یا از بالا به پایین، مانند عکس های استریو، ویدیوهای سه بعدی یا سایر رابط های کاربری که به صورت پویا ارائه می شوند، استفاده شود. برنامه ها باید از MediaPlayer یا ExoPlayer برای رمزگشایی ویدیو استفاده کنند.
- سیستم مؤلفه: SceneCore یک سیستم مؤلفه قوی و منعطف را برای افزودن قابلیتهایی به محتوای XR شما ارائه میکند، از جمله امکاناتی برای جابجایی، تغییر اندازه و تعامل با مدلها و پانلها برای کاربران.
- Anchor : با فعال کردن گذر، میتوانید پانلها و مدلها را به سطوح واقعی متصل کنید و به کاربران اجازه دهید محتوای مجازی را در محیط واقعی خود یکپارچه کنند.
- موقعیت کاربر: به موقعیت مکانی کاربر در صحنه مجازی دسترسی پیدا کنید تا محتوای خود را حول موقعیت کاربر جهت دهید.
- قابلیتهای فضایی : برنامههای کاملاً تطبیقی بسازید که در صورت در دسترس بودن از قابلیتهای فضایی مانند موقعیتیابی سهبعدی محتوای UI استفاده میکنند. نه تنها این، بلکه برنامه شما میتواند تغییرات در قابلیتها را در حین اجرای برنامه کنترل کند تا تجربه را بر اساس نحوه استفاده کاربر از دستگاه Android XR خود تغییر دهد.
مسائل شناخته شده
- در حال حاضر برای استفاده از Jetpack SceneCore یک minSDK 30 مورد نیاز است. به عنوان یک راه حل، ورودی مانیفست زیر را اضافه کنید
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
تا بتوانید با minSDK 23 بسازید و اجرا کنید. - Session میتواند در موقعیتهای مختلف که به طور خودکار فعالیت را دوباره ایجاد میکنند، نامعتبر شود، از جمله تغییر اندازه پانل اصلی، اتصال وسایل جانبی، و تغییر بین حالت روشن و تاریک. اگر با مشکلات عدم اعتبار جلسه مواجه شدید، راهحلها عبارتند از غیرقابل تغییر اندازه پانل اصلی، استفاده از یک موجودیت پانل پویا، غیرفعال کردن بازآفرینی فعالیت برای تغییرات پیکربندی خاص یا غیرفعال کردن تغییرات تم حالت روشن/تاریک.
- اجزای متحرک و قابل تغییر اندازه در GltfEntity پشتیبانی نمی شوند.
- Entity.getSize() در GltfEntity پشتیبانی نمی شود.
- برنامههای Jetpack XR برای درخواست مجوز
android.permission.SCENE_UNDERSTANDING
در AndroidManifest مورد نیاز است. - ایجاد یک جلسه فقط در دستگاه Android XR پشتیبانی می شود. در این زمان، اگر یک Session ایجاد کنید و سعی کنید از آن در دستگاه غیر Android XR استفاده کنید، یک RuntimeException دریافت خواهید کرد.
- تنظیم skybox به تهی از طریق `SpatialEnvironment.setSpatialEnvironmentPreference() منجر به ایجاد یک skybox سیاه و سفید ثابت نمی شود. ممکن است منجر به skybox پیش فرض سیستم یا عدم تغییر در skybox فعلی شود.
- مشتریان SceneCore باید
implementation(“com.google.guava:listenablefuture-1.0”)
به پیکربندی Gradle خود برای وابستگی های برنامه خود اضافه کنند. در نسخههای بعدی، منظره این کتابخانه را بهعنوان یک وابستگیapi
در بر میگیرد، بنابراین مشتریان نیازی به اعلام صریح آن ندارند. - SceneCore به اشتباه
com.google.guava:guava-31.1-android
وcom.google.protobuf:protobuf-javalite
را به عنوان وابستگی های گذرا شامل می شود. اگر این منجر به خطاهای کلاس تکراری در ساخت شما شود، این دو وابستگی را می توان با خیال راحت حذف کرد. - اگر برنامه شما از SceneCore استفاده می کند و ProGuard را فعال می کند، هنگام ایجاد Session از کار می افتد. به عنوان یک راه حل، ProGuard را غیرفعال کنید. برای اطلاعات بیشتر در مورد نحوه فعال کردن ProGuard به این راهنما مراجعه کنید.