Создание поставщика параметров камеры

Система камеры является расширяемой системой для обеспечения поддержки конфигураций камер, зависящих от платформы. Чтобы добавить поддержку новой конфигурации камеры, может потребоваться поставщик настраиваемых параметров.

Примечание

Полный исходный код, используемый в этом примере, можно найти в папке мртк/providers/унитяр .

Пространство имен и структура папок

Поставщики данных могут распространяться одним из двух способов:

  1. Сторонние надстройки
  2. в составе Microsoft Mixed Reality набор средств

Процесс утверждения для отправки новых поставщиков данных в МРТК будет изменяться в зависимости от конкретного случая и будет передан на момент начального предложения. Предложения можно отправлять, создавая новый тип запроса функции.

Сторонние надстройки

Пространство имен

Поставщики данных должны иметь пространство имен для устранения потенциальных конфликтов имен. Рекомендуется, чтобы пространство имен включало следующие компоненты.

  • Название компании, создающее надстройку
  • Область применения компонента

например, поставщик параметров камеры, созданный и поставляемый компанией contoso, может иметь значение Contoso. микседреалити. набор средств. Camera».

Структура папок

Рекомендуется расположены исходный код для поставщиков данных в иерархии папок, как показано на следующем рисунке.

Пример структуры папок

Где папка контосокамера содержит реализацию поставщика данных, папка редактора содержит инспектор (и любой другой код, относящийся к редактору Unity), а папка Profiles содержит один или несколько предварительно подготовленных объектов Profile.

Отправка МРТК

Пространство имен

если поставщик параметров камеры отправляется в репозиторий "смешанная реальность" набор средств, пространство имен должно начинаться с Microsoft. микседреалити. набор средств (например: Microsoft. микседреалити. набор средств. Камерасистем).

Структура папок

Весь код должен находиться в папке под МРТК или поставщиками (например: МРТК/providers/Унитяр).

Определение объекта параметров камеры

Первым шагом в создании поставщика параметров камеры является определение типа данных (например, сеток или плоскостей), которые будут предоставляться приложениям.

Все объекты пространственных данных должны реализовывать IMixedRealityCameraSettingsProvider интерфейс.

Реализация поставщика параметров

Укажите наследование интерфейса и/или базового класса

Все поставщики параметров камеры должны реализовывать IMixedRealityCameraSettingsProvider интерфейс, который указывает минимальную функциональность, требуемую для системы камеры. МРТК Foundation включает класс, BaseCameraSettingsProvider который предоставляет реализацию требуемой функциональности по умолчанию.

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }
}

Применение атрибута Микседреалитидатапровидер

Ключевым шагом при создании поставщика параметров камеры является применение MixedRealityDataProvider атрибута к классу. Этот шаг позволяет задать профиль и платформы по умолчанию для поставщика данных, если он выбран в профиле системы камеры, а также имя, путь к папке и т. д.

    [MixedRealityDataProvider(
        typeof(IMixedRealityCameraSystem),
        SupportedPlatforms.Android | SupportedPlatforms.IOS,
        "Unity AR Foundation Camera Settings",
        "UnityAR/Profiles/DefaultUnityARCameraSettingsProfile.asset",
        "MixedRealityToolkit.Providers")]
    public class UnityARCameraSettings : BaseCameraSettingsProvider
    { }

Реализация методов Имикседреалитидатапровидер

После определения класса следующим шагом является предоставление реализации IMixedRealityDataProvider интерфейса.

Примечание

BaseDataProviderКласс через BaseService класс предоставляет пустые реализации для IMixedRealityDataProvider методов. Сведения об этих методах обычно относятся к конкретному поставщику данных.

Поставщик данных должен реализовать следующие методы:

  • Destroy()
  • Disable()
  • Enable()
  • Initialize()
  • Reset()
  • Update()

Примечание

Не все поставщики параметров потребует реализации всех этих методов. Настоятельно рекомендуется Destroy() и Initialize() реализовывать как минимум.

Реализация логики поставщика данных

Следующим шагом является добавление логики поставщика параметров путем реализации IMixedRealityCameraSettingsProvider . Эта часть поставщика данных, как правило, зависит от конфигурации камеры.

Создание профиля и инспектора

в набор средств смешанной реальности поставщики данных настраиваются с помощью профилей.

Определение профиля

Содержимое профиля должно отражать параметры конфигурации, выбираемые разработчиком. Все настраиваемые пользователем свойства, определенные в каждом интерфейсе, также должны содержаться в профиле.

using UnityEngine.SpatialTracking;

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    [CreateAssetMenu(
        menuName = "Mixed Reality Toolkit/Profiles/Unity AR Camera Settings Profile",
        fileName = "UnityARCameraSettingsProfile",
        order = 100)]
    public class UnityARCameraSettingsProfile : BaseCameraSettingsProfile
    {
        [SerializeField]
        [Tooltip("The portion of the device (ex: color camera) from which to read the pose.")]
        private ArTrackedPose poseSource = TrackedPoseDriver.TrackedPose.ColorCamera;

        /// <summary>
        /// The portion of the device (ex: color camera) from which to read the pose.
        /// </summary>
        public ArTrackedPose PoseSource => poseSource;

        [SerializeField]
        [Tooltip("The type of tracking (position and/or rotation) to apply.")]
        private ArTrackingType trackingType = TrackedPoseDriver.TrackingType.RotationAndPosition;

        /// <summary>
        /// The type of tracking (position and/or rotation) to apply.
        /// </summary>
        public ArTrackingType TrackingType => trackingType;

        [SerializeField]
        [Tooltip("Specifies when (during Update and/or just before rendering) to update the tracking of the pose.")]
        private ArUpdateType updateType = TrackedPoseDriver.UpdateType.UpdateAndBeforeRender;

        /// <summary>
        /// Specifies when (during Update and/or just before rendering) to update the tracking of the pose.
        /// </summary>
        public ArUpdateType UpdateType => updateType;
    }
}

CreateAssetMenuатрибут можно применить к классу profile, чтобы клиенты могли создавать экземпляры профиля с помощью меню " создание > ресурсов" в набор средств "профили" > смешанной реальности > .

Реализация инспектора

Инспекторы профилей — это пользовательский интерфейс для настройки и просмотра содержимого профиля. Каждый инспектор профилей должен расширять BaseMixedRealityToolkitConfigurationProfileInspector класс.

CustomEditorАтрибут информирует Unity о типе ресурса, к которому применяется инспектор.

namespace namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR
{
    [CustomEditor(typeof(UnityARCameraSettingsProfile))]
    public class UnityARCameraSettingsProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
    { }
}

Создание определений сборок

набор средств смешанной реальности использует файлы определения сборки (. асмдеф) для указания зависимостей между компонентами, а также для помощи Unity при сокращении времени компиляции.

Рекомендуется создавать файлы определения сборки для всех поставщиков данных и их компонентов редактора.

Используя структуру папок в предыдущем примере, для поставщика данных контосокамера требуется два асмдеф файла.

Первое определение сборки предназначено для поставщика данных. В этом примере он будет называться Контосокамера и будет находиться в папке контосокамера в примере. Это определение сборки должно задавать зависимость от Microsoft. Микседреалити. набор средств и другие сборки, от которых он зависит.

В определении сборки Контосокамераедитор будет указан инспектор профилей и код конкретного редактора. Этот файл должен находиться в корневой папке кода редактора. В этом примере файл будет находиться в папке контосокамера\едитор Это определение сборки будет содержать ссылку на сборку Контосокамера, а также:

  • Microsoft. Микседреалити. набор средств
  • Microsoft. Микседреалити. набор средств. Редактор. Инспекторы
  • Microsoft. Микседреалити. набор средств. Редактор. Utilities

Регистрация поставщика данных

После создания поставщик данных можно зарегистрировать в системе камеры для использования в приложении.

Выбор поставщика параметров камеры

Упаковка и распространение

Поставщики данных, распространяемые в виде компонентов третьих лиц, имеют конкретные сведения о упаковке и распределении в соответствии с предпочтениями разработчика. Скорее всего, наиболее распространенным решением будет создание. пакет unitypackage и распространение через хранилище активов Unity.

если поставщик данных отправлен и принят как часть пакета microsoft Mixed Reality набор средств, группа microsoft мртк будет упаковывать и распространять ее в рамках предложений мртк.

См. также раздел