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

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

Примечание

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

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

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

  1. Сторонние надстройки
  2. Часть microsoft Смешанная реальность набор средств

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

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

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

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

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

Например, поставщик параметров камеры, созданный и поставляемый компанией Contoso, может быть Contoso.MixedReality.набор средств. Камера".

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

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

Example folder structure

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

Отправка MRTK

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

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

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

Весь код должен находиться в папке под MRTK/Providers (например, MRTK/Providers/UnityAR).

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

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

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

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

Указание интерфейса и (или) наследования базового класса

Все поставщики параметров камеры должны реализовать IMixedRealityCameraSettingsProvider интерфейс, который задает минимальные функциональные возможности, необходимые системе камеры. Основа MRTK включает BaseCameraSettingsProvider класс, который обеспечивает реализацию необходимых функций по умолчанию.

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

Применение атрибута MixedRealityDataProvider

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

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

Реализация методов IMixedRealityDataProvider

После определения класса следующим шагом является предоставление реализации 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 можно применить к классу профиля, чтобы пользователи могли создавать экземпляр профиля с помощью меню CreateAssets>>Смешанная реальность набор средств>Profiles.

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

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

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

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

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

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

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

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

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

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

  • Microsoft.MixedReality. набор средств
  • Microsoft.MixedReality. набор средств. Editor.Inspectors
  • Microsoft.MixedReality. набор средств. Editor.Utilities

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

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

Selecting the camera settings provider

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

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

Если поставщик данных отправляется и принимается в составе пакета Microsoft Смешанная реальность набор средств, команда Microsoft MRTK упаковает и распространяет его в рамках предложений MRTK.

См. также