Création d’un fournisseur de paramètres d’appareil photo — MRTK2

Le système caméra est un système extensible permettant de prendre en charge les configurations de caméra spécifiques à la plateforme. Pour ajouter la prise en charge d’une nouvelle configuration de caméra, un fournisseur de paramètres personnalisés peut être nécessaire.

Notes

Le code source complet utilisé dans cet exemple se trouve dans le dossier MRTK/Providers/UnityAR .

Structure de l’espace de noms et des dossiers

Les fournisseurs de données peuvent être distribués de l’une des deux manières suivantes :

  1. Modules complémentaires tiers
  2. Partie de Microsoft Mixed Reality Toolkit

Le processus d’approbation des soumissions de nouveaux fournisseurs de données à MRTK variera au cas par cas et sera communiqué au moment de la proposition initiale. Les propositions peuvent être soumises en créant un nouveau problème de type demande de fonctionnalité.

Modules complémentaires tiers

Espace de noms

Les fournisseurs de données doivent disposer d’un espace de noms pour atténuer les collisions de noms potentielles. Il est recommandé que l’espace de noms inclue les composants suivants.

  • Nom de l’entreprise produisant le module complémentaire
  • Domaine de fonctionnalité

Par exemple, un fournisseur de paramètres d’appareil photo créé et expédié par la société Contoso peut être « Contoso.MixedReality.Toolkit.Camera ».

Structure de dossiers

Il est recommandé de placer le code source des fournisseurs de données dans une hiérarchie de dossiers, comme illustré dans l’image suivante.

Exemple de structure de dossiers

Lorsque le dossier ContosoCamera contient l’implémentation du fournisseur de données, le dossier Éditeur contient l’inspecteur (et tout autre code spécifique à l’éditeur Unity), et le dossier Profils contient un ou plusieurs objets scriptables de profil prédéfinis.

Soumission MRTK

Espace de noms

Si un fournisseur de paramètres de caméra est soumis au référentiel Mixed Reality Toolkit, l’espace de noms doit commencer par Microsoft.MixedReality.Toolkit (par exemple, Microsoft.MixedReality.Toolkit.CameraSystem).

Structure de dossiers

Tout le code doit se trouver dans un dossier sous MRTK/Providers (par exemple, MRTK/Providers/UnityAR).

Définir l’objet paramètres de l’appareil photo

La première étape de la création d’un fournisseur de paramètres de caméra consiste à déterminer le type de données (par exemple, des maillages ou des plans) qu’il fournira aux applications.

Tous les objets de données spatiales doivent implémenter l’interface IMixedRealityCameraSettingsProvider .

Implémenter le fournisseur de paramètres

Spécifier l’héritage de l’interface et/ou de la classe de base

Tous les fournisseurs de paramètres de caméra doivent implémenter l’interface IMixedRealityCameraSettingsProvider , qui spécifie la fonctionnalité minimale requise par le système de caméra. La base MRTK inclut la BaseCameraSettingsProvider classe qui fournit une implémentation par défaut des fonctionnalités requises.

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

Appliquer l’attribut MixedRealityDataProvider

Une étape clé de la création d’un fournisseur de paramètres de caméra consiste à appliquer l’attribut MixedRealityDataProvider à la classe . Cette étape permet de définir le profil et la ou les plateformes par défaut pour le fournisseur de données, lorsqu’elle est sélectionnée dans le profil Système de caméra, ainsi que le nom, le chemin du dossier, etc.

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

Implémenter les méthodes IMixedRealityDataProvider

Une fois la classe définie, l’étape suivante consiste à fournir l’implémentation de l’interface IMixedRealityDataProvider .

Notes

La BaseDataProvider classe, via la BaseService classe, fournit des implémentations vides pour IMixedRealityDataProvider les méthodes. Les détails de ces méthodes sont généralement spécifiques au fournisseur de données.

Les méthodes qui doivent être implémentées par le fournisseur de données sont les suivantes :

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

Notes

Tous les fournisseurs de paramètres n’auront pas besoin d’implémentations pour toutes ces méthodes. Il est vivement recommandé de Destroy() le Initialize() mettre en œuvre au minimum.

Implémenter la logique du fournisseur de données

L’étape suivante consiste à ajouter la logique du fournisseur de paramètres en implémentant IMixedRealityCameraSettingsProvider. Cette partie du fournisseur de données est généralement spécifique à la configuration de la caméra.

Créer le profil et l’inspecteur

Dans Mixed Reality Toolkit, les fournisseurs de données sont configurés à l’aide de profils.

Définir le profil

Le contenu du profil doit miroir les options de configuration sélectionnables par le développeur. Toutes les propriétés configurables par l’utilisateur définies dans chaque interface doivent également être contenues dans le profil.

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;
    }
}

L’attribut CreateAssetMenu peut être appliqué à la classe de profil pour permettre aux clients de créer un profil instance à l’aide du menu Créer des>ressources> Mixed RealityProfilsdu kit de ressources>.

Implémenter l’inspecteur

Les inspecteurs de profil sont l’interface utilisateur permettant de configurer et d’afficher le contenu du profil. Chaque inspecteur de profil doit étendre la BaseMixedRealityToolkitConfigurationProfileInspector classe.

L’attribut CustomEditor informe Unity du type de ressource auquel l’inspecteur s’applique.

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

Créer une ou plusieurs définitions d’assembly

Mixed Reality Toolkit utilise des fichiers de définition d’assembly (.asmdef) pour spécifier les dépendances entre les composants et aider Unity à réduire le temps de compilation.

Il est recommandé de créer des fichiers de définition d’assembly pour tous les fournisseurs de données et leurs composants d’éditeur.

À l’aide de la structure de dossiers dans l’exemple précédent, il existe deux fichiers .asmdef pour le fournisseur de données ContosoCamera.

La première définition d’assembly concerne le fournisseur de données. Pour cet exemple, il s’appelle ContosoCamera et se trouve dans le dossier ContosoCamera de l’exemple. Cette définition d’assembly doit spécifier une dépendance à Microsoft.MixedReality.Toolkit et à tous les autres assemblys dont elle dépend.

La définition de l’assembly ContosoCameraEditor spécifie l’inspecteur de profil et tout code spécifique à l’éditeur. Ce fichier doit se trouver dans le dossier racine du code de l’éditeur. Dans cet exemple, le fichier se trouve dans le dossier ContosoCamera\Editor . Cette définition d’assembly contient une référence à l’assembly ContosoCamera, ainsi que :

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

Inscrire le fournisseur de données

Une fois créé, le fournisseur de données peut être inscrit auprès du système Caméra à utiliser dans l’application.

Sélection du fournisseur de paramètres de l’appareil photo

Emballage et distribution

Les fournisseurs de données distribués en tant que composants tiers ont les détails spécifiques de l’empaquetage et de la distribution laissés à la préférence du développeur. La solution la plus courante consistera probablement à générer un fichier .unitypackage et à le distribuer via unity Asset Store.

Si un fournisseur de données est envoyé et accepté dans le cadre du package Microsoft Mixed Reality Toolkit, l’équipe Microsoft MRTK le packagera et le distribuera dans le cadre des offres MRTK.

Voir aussi