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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отправка MRTK

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

Если поставщик параметров камеры отправляется в репозиторий Смешанная реальность Toolkit, пространство имен должно начинаться с Microsoft.MixedReality.Toolkit (например, Microsoft.MixedReality.Toolkit.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. Эта часть поставщика данных обычно зависит от конфигурации камеры.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Microsoft.MixedReality.Toolkit
  • Microsoft.MixedReality.Toolkit.Editor.Inspectors
  • Microsoft.MixedReality.Toolkit.Editor.Utilities

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

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

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

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

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

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

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