{ } { }
Реактивный ранец SceneCore
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
12 февраля 2025 г. | - | - | - | 1.0.0-альфа02 |
Объявление зависимостей
Чтобы добавить зависимость от XR SceneCore, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл 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-альфа02
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().hasCapability()
как более разделенный способ проверки наличия пространственных возможностей, посколькуgetSpatialCapabilities()
возвращает объектSpatialCapabilities
. -
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))
передается нулевое предпочтение скайбокса. Чтобы вернуться к системному скайбоксу и геометрии по умолчанию, используйтеsetSpatialEnvironmentPreference(null).
Версия 1.0.0-альфа01
12 декабря 2024 г.
Выпущен androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
.
Особенности начальной версии Первоначальная версия Jetpack SceneCore для разработчиков, библиотеки графов 3D-сцен для создания и управления иммерсивными сценами и средами. Эта библиотека позволяет вам размещать и упорядочивать 3D-модели и панели контента относительно друг друга и вашей виртуальной или реальной среды.
- SpatialEnvironment : создавайте полностью захватывающие впечатления с помощью изображения скайбокса и/или геометрии 3D-модели в качестве фона для сцены XR вашей среды. Или включите сквозную передачу, чтобы ваша виртуальная сцена могла интегрироваться с реальной средой пользователя.
- PanelEntity : добавляйте 2D-контент в 3D-сцены, встраивая стандартные макеты и действия Android в пространственные панели, которые могут плавать или быть привязаны к поверхностям реального мира.
- GltfModelEntity : размещайте, анимируйте и взаимодействуйте с 3D-моделями в вашей сцене. SceneCore поддерживает формат файлов glTF для простоты интеграции с существующими моделями.
- SpatialAudio : добавьте окружающие и точечные источники звука в свою 3D-сцену для получения полностью захватывающего пространственного звука.
- StereoSurfaceEntity : SceneCore поддерживает маршрутизацию содержимого для левого и правого глаза, отображаемого на поверхности Android. Это можно использовать для рендеринга стереоскопического контента в формате «бок о бок» или «сверху вниз», например стереофотографии, 3D-видео или другие динамически отображаемые пользовательские интерфейсы. Приложения должны использовать MediaPlayer или ExoPlayer для декодирования видео.
- Система компонентов: SceneCore предлагает надежную и гибкую систему компонентов для добавления возможностей к вашему контенту XR, включая возможности для пользователей перемещать, изменять размер и взаимодействовать с моделями и панелями.
- Привязка : при включенной сквозной передаче вы можете прикреплять панели и модели к реальным поверхностям, предоставляя пользователям беспрепятственную интеграцию виртуального контента в их реальную среду.
- Поза пользователя: доступ к местоположению пользователя в виртуальной сцене, чтобы ориентировать контент вокруг положения пользователя.
- SpatialCapabilities : создавайте полностью адаптивные приложения, которые используют пространственные возможности, когда они доступны, такие как трехмерное позиционирование содержимого пользовательского интерфейса. Мало того, ваше приложение может отслеживать изменения возможностей во время работы приложения, чтобы изменять работу в зависимости от того, как пользователь использует свое устройство Android XR.
Известные проблемы
- В настоящее время для использования Jetpack SceneCore требуется minSDK 30. В качестве обходного пути добавьте следующую запись манифеста
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
чтобы иметь возможность сборки и запуска с minSDK 23. - Сеанс может стать недействительным в различных ситуациях, которые автоматически воссоздают действие, включая изменение размера главной панели, подключение периферийных устройств и переключение между светлым и темным режимом. Если вы столкнулись с проблемами аннулирования сеанса, обходные пути включают в себя запретить изменение размера основной панели, использование объекта динамической панели, отключение воспроизведения активности для определенных изменений конфигурации или отключение изменений тем в светлом/темном режиме.
- Компоненты Movable и Resizable не поддерживаются в GltfEntity.
- Entity.getSize() не поддерживается в GltfEntity.
- Приложения Jetpack XR должны запрашивать разрешение
android.permission.SCENE_UNDERSTANDING
в AndroidManifest. - Создание сеанса поддерживается только на устройстве Android XR. В настоящее время, если вы создадите сеанс и попытаетесь использовать его на устройстве, отличном от Android XR, вы получите исключение RuntimeException.
- Установка для скайбокса значения null с помощью SpatialEnvironment.setSpatialEnvironmentPreference() не приводит к появлению сплошного черного скайбокса, как описано в документации. Это может привести к использованию системного скайбокса по умолчанию или к отсутствию изменений в текущем скайбоксе.
- Клиенты SceneCore должны добавить
implementation(“com.google.guava:listenablefuture-1.0”)
в свою конфигурацию Gradle для зависимостей своего приложения. В будущем выпуске Scenecore будет включать эту библиотеку в качестве зависимостиapi
, поэтому клиентам не нужно будет явно объявлять ее. - SceneCore ошибочно включает
com.google.guava:guava-31.1-android
иcom.google.protobuf:protobuf-javalite
в качестве транзитивных зависимостей. Если это приводит к повторяющимся ошибкам классов в вашей сборке, эти две зависимости можно безопасно исключить. - Если ваше приложение использует SceneCore и включает ProGuard, оно выйдет из строя при создании сеанса. В качестве обходного пути отключите ProGuard. См. это руководство для получения дополнительной информации о том, как включить ProGuard.