Paramètres recommandés pour UnityRecommended settings for Unity

Unity fournit un ensemble d’options par défaut qui sont généralement le cas moyen pour toutes les plateformes.Unity provides a set of default options that are generally the average case for all platforms. Toutefois, Unity offre des comportements spécifiques à la réalité mixte qui peuvent être activés via les paramètres du projet.However, Unity offers some behaviors specific to mixed reality that can be toggled through project settings.

Configuration de l’environnement performantePerformant environment set-up

Paramètres de qualité inférieureLow-quality settings

Il est important de modifier les paramètres de qualité des Unity afin que votre application soit exécutée et s’exécute correctement au niveau de la fréquence d’images appropriée, en particulier pour le développement HoloLens.It's important to modify the Unity Quality settings to Very Low so that your application is runs and performs well at the appropriate framerate, especially for HoloLens development. Pour le développement sur des casques immersifs, selon les spécifications du bureau qui alimente l’expérience VR, vous pouvez toujours obtenir une fréquence d’images sans les paramètres de qualité la plus basse.For development on immersive headsets, depending on the specs of the desktop powering the VR experience, one can still achieve framerate without the lowest quality parameters.

Dans Unity 2019 LTS +, vous pouvez définir le niveau de qualité du projet en sélectionnant modifier la > > qualité des paramètres du projet et en définissant la valeur par défaut en cliquant sur la flèche vers le bas jusqu’au niveau de qualité inférieure * *.In Unity 2019 LTS+, you can set the project's quality level by going to Edit > Project Settings > Quality and setting the Default by clicking on the downward arrow to the **Very Low-quality level.

Paramètres d’éclairageLighting settings

À l’instar des paramètres de scène de qualité, il est important de définir des paramètres d’éclairage optimaux pour votre application de réalité mixte.Similar to Quality scene settings, it's important to set optimal Lighting settings for your Mixed Reality application. Dans Unity, le paramètre d’éclairage qui aura généralement le plus grand impact sur les performances de votre scène est l' éclairage global en temps réel.In Unity, the Lighting setting that will usually have the greatest performance impact on your scene is Realtime Global Illumination. Vous pouvez désactiver l’éclairage global en accédant à fenêtre > rendu > paramètres d’éclairage en > temps réel éclairage global.You can turn off Global Illumination by going to Window > Rendering > Lighting Settings > Realtime Global Illumination.

Il existe un autre paramètre d’éclairage, un éclairage global cuit.There's another lighting setting, Baked Global Illumination. Ce paramètre peut fournir des résultats performants et visuellement sur les casques immersifs, mais ne s’applique pas au développement HoloLens.This setting can provide performant and visually striking results on immersive headsets but isn't applicable for HoloLens development. L' éclairage global cuit est calculé uniquement pour les GameObjects statiques, qui ne se trouvent pas dans les scènes HoloLens en raison de la nature d’un environnement inconnu et en cours de modification.Baked Global Illumination is only calculated for static GameObjects, which aren't found in HoloLens scenes because of the nature of an unknown and changing environment.

Pour plus d’informations, consultez illumination globale à partir d’Unity .Read Global Illumination from Unity for more information.

Notes

L' éclairage global en temps réel est défini par scène et les développeurs doivent donc enregistrer cette propriété pour chaque scène Unity dans leur projet.Realtime Global Illumination is set per-scene and thus developers must save this property for every Unity scene in their project.

Chemin de rendu d’instanciation à passage uniqueSingle pass instancing rendering path

Dans les applications de réalité mixte, la scène est restituée deux fois, une fois pour chaque œil à l’utilisateur.In Mixed Reality applications, the scene is rendered twice, once for each eye to the user. Comparé au développement 3D traditionnel, cela double la quantité de travail qui doit être calculée.Compared to traditional 3D development, this effectively doubles the amount of work that needs to be computed. Il est important de sélectionner le chemin de rendu le plus efficace dans Unity pour enregistrer les temps processeur et GPU.It's important to select the most efficient rendering path in Unity to save both on CPU and GPU time. Le rendu d’instance à passage unique optimise le pipeline de rendu Unity pour les applications de réalité mixte et il est recommandé d’activer ce paramètre par défaut pour chaque projet.Single pass instanced rendering optimizes the Unity rendering pipeline for Mixed Reality apps and it's recommended to enable this setting by default for every project.

Pour activer cette fonctionnalité dans votre projet UnityTo enable this feature in your Unity Project

  1. Ouvrez Player XR Settings (accédez à Edit > Project Settings > Player > XR Settings).Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. Sélectionnez Single Pass Instanced dans le menu déroulant Stereo Rendering Method (la case Virtual Reality Supported doit être cochée).Select Single Pass Instanced from the Stereo Rendering Method drop-down menu (Virtual Reality Supported checkbox must be checked)

Lisez les articles suivants sur Unity pour plus d’informations sur cette approche de rendu.Read the following articles from Unity for more details with this rendering approach.

Notes

Un problème courant avec le rendu d’instance à passage unique se produit si les développeurs ont déjà des nuanceurs personnalisés existants non écrits pour l’instanciation.One common issue with Single Pass Instanced Rendering occurs if developers already have existing custom shaders not written for instancing. Une fois cette fonctionnalité activée, les développeurs peuvent remarquer que certains GameObjects ne sont rendus que dans un seul œil.After enabling this feature, developers may notice some GameObjects only render in one eye. Cela est dû au fait que les nuanceurs personnalisés associés n’ont pas les propriétés appropriées pour l’instanciation.This is because the associated custom shaders do not have the appropriate properties for instancing.

Consultez Single Pass Stereo Rendering for HoloLens sur Unity pour savoir comment résoudre ce problème.See Single Pass Stereo Rendering for HoloLens from Unity for how to address this problem

Activer le partage de mémoire tampon de profondeurEnable depth buffer sharing

Pour obtenir une meilleure stabilité de l’hologramme à partir de la perception de l’utilisateur, il est recommandé d’activer la propriété de partage de la mémoire tampon de profondeur dans Unity.To achieve better hologram stability from the perception of the user, it's recommended to enable the Depth Buffer Sharing property in Unity. Si vous activez cette fonction, Unity partagera la carte de profondeur produite par votre application avec la plateforme Windows Mixed Reality.By turning this on, Unity will share the depth map produced by your application with the Windows Mixed Reality platform. La plateforme peut ensuite mieux optimiser la stabilité de l’hologramme pour votre scène pour toute image donnée rendue par votre application.The platform can then better optimize hologram stability specifically for your scene for any given frame being rendered by your application.

Pour activer cette fonctionnalité dans votre projet UnityTo enable this feature in your Unity Project

  1. Ouvrez Player XR Settings (accédez à Edit > Project Settings > Player > XR Settings).Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. Activez la case à cocher activer le partage de tampons de profondeur dans les kits de développement logiciel (SDK) Virtual Real > expansion Windows Mixed realisation (la case à cocher Virtual Really SupportedSelect the checkbox for Enable Depth Buffer Sharing under Virtual Reality SDKs > Windows Mixed Reality expansion (Virtual Reality Supported checkbox must be checked)

En outre, il est recommandé de sélectionner une profondeur de 16 bits sous le paramètre de format de profondeur dans ce panneau, en particulier pour le développement HoloLens.Further, it's recommended to select 16-bit depth under the Depth Format setting in this panel, especially for HoloLens Development. La sélection de 16 bits comparée à 24 bits réduit considérablement les besoins en bande passante, car moins de données devront être déplacées/traitées.Selecting 16-bit compared to 24-bit will significantly reduce the bandwidth requirements as less data will need to be moved/processed.

Pour que la plateforme Windows Mixed realisation optimise la stabilité des hologrammes, elle s’appuie sur la mémoire tampon de profondeur pour être exacte et correspond à n’importe quel hologramme rendu sur l’écran.In order for the Windows Mixed Reality platform to optimize hologram stability, it relies on the depth buffer to be accurate and match any rendered holograms on screen. Ainsi, avec le partage de mémoire tampon de profondeur sur, il est important de rendre la couleur de rendu, afin de rendre également la profondeur.Thus, with depth buffer sharing on, it is important when rendering color, to also render depth. Dans Unity, la plupart des matériaux opaques ou TransparentCutout affichent la profondeur par défaut, mais les objets transparents et textuels n’affichent pas de profondeur, bien qu’ils soient dépendants du nuanceur, etc.In Unity, most Opaque or TransparentCutout materials will render depth by default but transparent and text objects will not render depth although this is shader-dependent, etc.

Si vous utilisez le nuanceur standardde la boîte à outils de la réalité mixte, pour restituer la profondeur des objets transparents :If using the Mixed Reality Toolkit Standard shader, to render depth for transparent objects:

  1. Sélectionner la matière transparente qui utilise le nuanceur standard MRTK et ouvrir la fenêtre de l’éditeur de l’inspecteurSelect the transparent material that is using the MRTK Standard shader and open the Inspector editor window
  2. Sélectionnez le bouton corriger maintenant dans l’avertissement de partage de la mémoire tampon de profondeur.Select the Fix Now button within the depth buffer sharing warning. Vous pouvez également effectuer cette opération manuellement en définissant le mode de rendu sur personnalisé. puis définissez mode sur transparent et enfin définir l' écriture de profondeur sur activéThis can also be performed manually by setting the Rendering Mode to Custom; then set Mode to Transparent and finally set Depth Write to On

Important

Les développeurs doivent être attentifs à la lutte Z lors de la modification de ces valeurs avec les paramètres du plan proche/Far de l’appareil photo.Developers should beware of Z-fighting when changing these values along with the camera's near/far plane settings. Z-combat se produit lorsque deux Gameobjects essaient de s’afficher sur le même pixel et en raison de limitations de fidélité du tampon de profondeur (par exemple,Z-Fighting occurs when two gameobjects try to render to the same pixel and due to limitations in fidelity of the depth buffer (i.e profondeur z), Unity ne peut pas déterminer quel objet est devant l’autre.z depth), Unity cannot discern which object is in front of the other. Les développeurs notent un scintillement entre deux objets de jeu lorsqu’ils luttent contre la même valeur de profondeur z.Developers will note a flickering between two game objects as they fight for the same z-depth value. Cela peut être résolu en basculant au format de profondeur 24 bits, car il y aura une plus grande plage de valeurs pour chaque objet à calculer pour la profondeur z de l’appareil photo.This can be solved by switching to 24-bit depth format as there will be a larger range of values for each object to calculate upon for their z-depth from the camera.

Toutefois, il est recommandé, en particulier pour le développement HoloLens, de modifier les plans presque et Far de l’appareil photo vers une plage plus petite plutôt que de conserver le format de profondeur 16 bits.However, it is recommended, particularly for HoloLens development, to modify the camera's near and far planes to a smaller range instead and retain the 16-bit depth format. La profondeur z est mappée de manière non linéaire à la plage de valeurs le long des plans de caméra near et Far.The z-depth is non-linearly mapped to the range of values along the near and far camera planes. Vous pouvez modifier cette valeur en sélectionnant la caméra principale dans votre scène et sous Inspector, en remontant le plan de découpage proche & Far pour réduire leur plage (c.-à-d.This can be modified by selecting the Main Camera in your scene and under Inspector, change the Near & Far Clipping Plane values to reduce their range (i.e de 1000MD à 100 m ou à une autre valeur x, etc.)from 1000m to 100m or other x value, etc.)

Important

Unity ne crée pas de tampon de stencil lors de l’utilisation du format de profondeur 16 bits.Unity does not create a stencil buffer when using 16-bit depth format. Ainsi, certains effets d’interface utilisateur Unity et d’autres effets requis par stencil ne fonctionneront pas, à moins que le format de profondeur 24 bits ne soit sélectionné, ce qui créera une mémoire tampon de stencil de 8 bits.Thus, some Unity UI effects and other stencil-required effects will not work unless 24-bit depth format is selected which will create an 8-bit stencil buffer.

Génération pour IL2CPPBuilding for IL2CPP

Unity a déconseillé la prise en charge du backend de script .NET et recommande donc que les développeurs utilisent IL2CPP pour leurs builds Visual Studio UWP.Unity has deprecated support for the .NET scripting backend and thus recommends that developers utilize IL2CPP for their UWP visual studio builds. Bien que cela offre différents avantages, la génération de votre solution Visual Studio à partir d’Unity pour IL2CPP peut être plus lente que l’ancienne méthode .net.Although this brings various advantages, building your visual studio solution from Unity for IL2CPP can be slower than the old .NET method. Par conséquent, il est fortement recommandé de suivre les meilleures pratiques en matière de création de IL2CPP pour économiser l’heure de l’itération de développement.Thus, it is highly recommended to follow best practices for building IL2CPP to save on development iteration time.

  1. Tirez parti de la création incrémentielle en générant votre projet dans le même répertoire à chaque fois, en réutilisant les fichiers prédéfinisLeverage incremental building by building your project to the same directory every time, reusing the pre-built files there
  2. Désactiver les analyses logicielles anti-programme malveillant pour votre projet & les dossiers de buildDisable anti-malware software scans for your project & build folders
    • Ouvrir la protection contre les menaces contre les Virus & sous votre application Paramètres Windows 10Open Virus & threat protection under your Windows 10 settings app
    • Sélectionnez gérer les paramètres sous virus & les paramètres de protection contre les menacesSelect Manage Settings under Virus & threat protection settings
    • Sélectionnez Ajouter ou supprimer des exclusions sous la section exclusions .Select Add or remove exclusions under the Exclusions section
    • Sélectionnez Ajouter une exclusion , puis sélectionnez le dossier contenant le code de votre projet Unity et les sorties de générationSelect Add an exclusion and select the folder containing your Unity project code and build outputs
  3. Utiliser un SSD pour la générationUse an SSD for building

Pour plus d’informations, consultez optimisation des temps de génération pour IL2CPP .Read Optimizing Build Times for IL2CPP for more info.

Notes

En outre, il peut être avantageux de configurer un serveur de cache, en particulier pour les projets Unity qui comprennent une grande quantité de ressources (à l’exclusion des fichiers de script), et pour les scènes ou ressources qui changent constamment.Furthermore, it may be beneficial to setup a Cache Server, especially for Unity projects with a large amount of assets (excluding script files) or constantly changing scenes/assets. Lorsque vous ouvrez un projet, Unity stocke les ressources éligibles dans un format de cache interne sur l’ordinateur de développement.When opening a project, Unity stores qualifying assets into an internal cache format on the developer machine. Les éléments doivent être réimportés, et donc retraités, après modification.Items must be re-imported and thus re-processed when modified. Ce processus peut être effectué une fois puis enregistré dans un serveur de cache. Pour gagner du temps, vous pouvez le partager avec les autres développeurs, plutôt que de demander à chaque développeur de réimporter localement les éléments modifiés.This process can be done once and saved in a Cache Server and consequently shared with other developers to save time, instead of every developer processing the re-import of new changes locally.

Propriétés de publicationPublishing properties

Écran de démarrage holographiqueHolographic splash screen

HoloLens possède un processeur et un GPU de classe mobile, ce qui signifie que le chargement des applications peut prendre un peu plus de temps.HoloLens has a mobile-class CPU and GPU, which means apps may take a bit longer to load. Pendant le chargement de l’application, les utilisateurs voient simplement le noir et, par conséquent, peuvent se demander ce qui se passe.While the app is loading, users will just see black, and so they may wonder what's going on. Pour les rassurer pendant le chargement, vous pouvez ajouter un écran de démarrage holographique.To reassure them during loading, you can add a holographic splash screen.

Pour activer/désactiver l’écran de démarrage holographique :To toggle the holographic splash screen:

  1. Aller à la page modifier les > paramètres du projet, page du > lecteurGo to Edit > Project Settings > Player page
  2. Sélectionnez l’onglet Windows Store et ouvrez la section image de démarrage .Select the Windows Store tab and open the Splash Image section
  3. Appliquez votre image sous la propriété Windows holographique > image de démarrage holographique .Apply your image under the Windows Holographic > Holographic Splash Image property.
    • Le fait de basculer l’option afficher l’écran de démarrage Unity active ou désactive l’écran de démarrage de la personnalisation Unity.Toggling the Show Unity Splash Screen option will enable or disable the Unity branded splash screen. Si vous n’avez pas de licence Pro Unity, l’écran de démarrage de la personnalisation Unity s’affiche toujours.If you don't have a Unity Pro license, the Unity branded splash screen will always be displayed.
    • Si une image de démarrage holographique est appliquée, elle est toujours affichée si la case à cocher Afficher l’écran de démarrage Unity est activée ou désactivée.If a Holographic Splash Image is applied, it will always be displayed whether the Show Unity Splash Screen checkbox is enabled or disabled. La spécification d’une image de démarrage holographique personnalisée est disponible uniquement pour les développeurs disposant d’une licence Unity Pro.Specifying a custom holographic splash image is only available to developers with a Unity Pro license.
Afficher l’écran de démarrage UnityShow Unity Splash Screen Image de démarrage holographiqueHolographic Splash Image ComportementBehavior
ActivéOn NoneNone Affiche l’écran de démarrage Unity par défaut pendant 5 secondes ou jusqu’à ce que l’application soit chargée, selon la valeur la plus longue.Show default Unity splash screen for 5 seconds or until the app is loaded, whichever is longer.
ActivéOn CustomCustom Affichez l’écran de démarrage personnalisé pendant 5 secondes ou jusqu’à ce que l’application soit chargée, selon la valeur la plus longue.Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.
DésactivéOff NoneNone Affichez le noir transparent (rien) jusqu’à ce que l’application soit chargée.Show transparent black (nothing) until app is loaded.
DésactivéOff CustomCustom Affichez l’écran de démarrage personnalisé pendant 5 secondes ou jusqu’à ce que l’application soit chargée, selon la valeur la plus longue.Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.

Pour plus d’informations, consultez la documentation de l’écran de démarrage Unity .Read Unity's Splash Screen documentation for more info.

Perte de suiviTracking loss

Un casque de réalité mixte dépend de l’environnement qui l’entoure pour construire des systèmes de coordonnées à verrouillage universel, qui permettent aux hologrammes de rester en position.A Mixed reality headset depends on seeing the environment around it to construct world-locked coordinate systems, which allow holograms to remain in position. Lorsque le casque ne parvient pas à se trouver dans le monde, le casque est dit qu’il a perdu le suivi.When the headset is unable to locate itself in the world, the headset is said to have lost tracking. Dans ces cas, les fonctionnalités dépendantes des systèmes de coordonnées universels, tels que les étapes spatiales, les ancres spatiales et le mappage spatial, ne fonctionnent pas.In these cases, functionality dependent on world-locked coordinate systems, such as spatial stages, spatial anchors and spatial mapping, don't work.

Si une perte de suivi se produit, le comportement par défaut d’Unity consiste à arrêter le rendu des hologrammes, à suspendre la boucle de jeuet à afficher une notification de perte de suivi qui suit confortablement le point de vue des utilisateurs.If a loss of tracking occurs, Unity's default behavior is to stop rendering holograms, pause the game loop, and display a tracking lost notification that comfortably follows the users gaze. Des notifications personnalisées peuvent également être fournies sous la forme d’une image de perte de suivi.Custom notifications can also be provided in the form of a tracking loss image. Pour les applications qui dépendent du suivi pour leur expérience complète, il est suffisant pour permettre à Unity de la gérer entièrement jusqu’à ce que le suivi soit récupéré.For apps that depend upon tracking for their whole experience, it's sufficient to let Unity handle this entirely until tracking is regained. Les développeurs peuvent fournir une image personnalisée à afficher pendant la perte de suivi.Developers can supply a custom image to be shown during tracking loss.

Pour personnaliser l’image de suivi perdu :To customize the tracking lost image:

  1. Aller à la page modifier les > paramètres du projet, page du > lecteurGo to Edit > Project Settings > Player page
  2. Sélectionnez sous l’onglet Windows Store et ouvrez la section image de démarrage .Select on the Windows Store tab and open the Splash Image section
  3. Appliquez votre image sous la propriété image de la perte de suivi de > Windows holographique .Apply your image under the Windows Holographic > Tracking Loss Image property.

Désactiver la pause automatiqueOpt-out of automatic pause

Certaines applications peuvent ne pas nécessiter de suivi (par exemple, des applications d’orientation uniquement telles que des visionneuses vidéo de 360 degrés) ou doivent peut-être continuer le traitement sans interruption pendant que le suivi est perdu.Some apps may not require tracking (e.g. orientation-only apps such as 360-degree video viewers) or may need to continue processing uninterrupted while tracking is lost. Vous pouvez refuser la perte par défaut du comportement de suivi, mais vous êtes chargé de masquer/désactiver les objets, ce qui ne serait pas correctement rendu dans un scénario de perte de suivi.You can opt out of the default loss of tracking behavior but you're responsible for hiding/disabling any objects, which wouldn't render properly in a tracking-loss scenario. Dans la plupart des cas, le seul contenu qui est recommandé pour être rendu dans ce cas est le contenu verrouillé, centré autour de l’appareil photo principal.In most cases, the only content that is recommended to be render in that case is body-locked content, centered around the main camera.

Pour refuser le comportement de pause automatique :To opt out of automatic pause behavior:

  1. Accéder à la page Modifier les paramètres du > projet > Go to the Edit > Project Settings > Player page
  2. Sélectionnez l’onglet Windows Store et ouvrez la section image de démarrage .Select the Windows Store tab and open the Splash Image section
  3. Modifiez la case à cocher Windows holographique > en cas de suspension de perte de suivi et d’affichage d’image .Modify the Windows Holographic > On Tracking Loss Pause and Show Image checkbox.

Suivi des événements de perteTracking loss events

Pour définir un comportement personnalisé lorsque le suivi est perdu, gérez les événements de perte de suiviglobal.To define custom behavior when tracking is lost, handle the global tracking loss events.

FonctionsCapabilities

Pour qu’une application tire parti de certaines fonctionnalités, elle doit déclarer les fonctionnalités appropriées dans son manifeste.For an app to take advantage of certain functionality, it must declare the appropriate capabilities in its manifest. Les déclarations de manifeste peuvent être effectuées dans Unity afin qu’elles soient incluses dans chaque prochaine exportation de projet.The manifest declarations can be made in Unity so they're included in every future project export.

Les fonctionnalités peuvent être activées pour une application de réalité mixte en :Capabilities can be enabled for a Mixed Reality application by:

  1. Aller à la page modifier les > paramètres du projet, page du > lecteurGo to Edit > Project Settings > Player page
  2. Sélectionnez l’onglet Windows Store , ouvrez la section paramètres de publication et recherchez la liste des fonctionnalités .Select the Windows Store tab, open the Publishing Settings section, and look for the Capabilities list

Les fonctionnalités applicables pour activer les API couramment utilisées pour les applications holographiques sont les suivantes :The applicable capabilities for enabling the commonly used APIs for Holographic apps are:

FonctionnalitéCapability API nécessitant des fonctionnalitésAPIs requiring capability
SpatialPerceptionSpatialPerception SurfaceObserverSurfaceObserver
WebCamWebCam PhotoCapture et VideoCapturePhotoCapture and VideoCapture
PicturesLibrary/VideosLibraryPicturesLibrary / VideosLibrary PhotoCapture ou VideoCapture, respectivement (lors du stockage du contenu capturé)PhotoCapture or VideoCapture, respectively (when storing the captured content)
MicrophoneMicrophone VideoCapture (lors de la capture de l’audio), DictationRecognizer, GrammarRecognizer et KeywordRecognizerVideoCapture (when capturing audio), DictationRecognizer, GrammarRecognizer, and KeywordRecognizer
InternetClientInternetClient DictationRecognizer (et pour utiliser le profileur Unity)DictationRecognizer (and to use the Unity Profiler)

Voir aussiSee also