View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Sujets
  • Toutes les vidéos
  • À propos

Retour à WWDC25

  • À propos
  • Résumé
  • Transcription
  • Optimisez vos environnements personnalisés pour visionOS

    Découvrez comment utiliser des outils procéduraux pour créer de magnifiques environnements immersifs pour votre app ou votre jeu visionOS. Nous partagerons les éléments fondamentaux pour créer un environnement de haute qualité, puis nous approfondirons le processus d'optimisation. Apprenez à utiliser une série de workflows fournis par Apple pour Houdini afin de réduire le nombre de polygones de votre scène, à nettoyer la géométrie, à assembler les cartes UV et à créer des ressources USD à importer dans Reality Composer Pro ou dans le moteur de jeu de votre choix.

    Chapitres

    • 0:00 - Introduction
    • 3:51 - Se préparer pour Vision Pro
    • 7:35 - Optimiser la géométrie
    • 17:22 - Projection UV
    • 24:20 - Cuisson des textures
    • 25:38 - Configuration USD
    • 28:35 - Conclusion

    Ressources

    • Construct an immersive environment for visionOS
    • Download immersive environment optimization toolkit for Houdini
    • Enabling video reflections in an immersive environment
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC24

    • Create custom environments for your immersive apps in visionOS
    • Enhance the immersion of media viewing in custom environments
    • Optimize your 3D assets for spatial computing

    WWDC23

    • Explore the USD ecosystem
  • Rechercher dans cette vidéo…

    Bonjour et bienvenue dans Optimisez les environnements pour visionOS. Je m’appelle Alex, artiste technique chez Apple. Dans cette vidéo, nous allons apprendre à créer des environnements immersifs pour rendre vos histoires plus réelles sur Apple Vision Pro. Cette plate-forme vous permet de travailler avec une résolution très élevée, des taux de rafraîchissement rapides et des interactions rapides en temps réel. Elle vous permet aussi de concevoir des espaces donnant une authentique sensation de présence. Des univers où les gens sont complètement captivés. Pour cela, nous devons créer des images dignes du grand écran qui donneront vie aux récits d’une manière inédite. Malheureusement, le rendu haute fidélité en temps réel est coûteux. Les fonctionnalités, telles que les ombres douces, l’illumination globale et l’ombrage complexe ont toutes un coût élevé. Comment relever ce défi ? Ce n’est pas une simple question de technique. Nous avons besoin d’une approche flexible qui s’adapte aux contraintes techniques tout en optimisant la qualité visuelle. Examinons le processus d’optimisation que nous pouvons utiliser pour y parvenir. Cela commence par une image prérendue, offrant un éclairage de qualité cinéma, un niveau de détail élevé et des matériaux haut de gamme. Ensuite, la géométrie et les textures sont optimisées en fonction de l’expérience réelle du spectateur. Cette image prérendue est ensuite transférée sur l’environnement optimisé, ce qui lui donne un aspect visuel de haute qualité. Enfin, tout est assemblé dans un éditeur en temps réel, comme Reality Composer ou Unity. Il en résulte des images véritablement immersives. Dans cette vidéo, je vais vous présenter deux parties de ce processus : l’optimisation et le précalcul de vos ressources, pour vous aider à créer des environnements époustouflants pour vos apps Vision Pro. Vous pouvez faire tout cela manuellement, mais cela prendrait beaucoup trop de temps, surtout pour une courte vidéo comme celle-ci. Je vais plutôt vous montrer comment utiliser des outils procéduraux pour créer un flux de travail capable d’automatiser la majeure partie de ce processus. Il existe diverses techniques d’optimisation 3D, mais Houdini excelle dans ce domaine. Son architecture nodale avancée propose des outils performants pour cette tâche. Son système de script visuel vous permet de créer des recettes procédurales pour automatiser et calculer des tâches complexes. Avec Houdini, vous pouvez également utiliser des outils personnalisés appelés Houdini Digital Assets (HDA). Ils associent une interface visuelle au code source et présentent les contrôles essentiels via des paramètres ajustables dans une interface dédiée. Nous avons créé une suite de 14 outils performants, téléchargeables, conçus pour optimiser votre créativité artistique avec un contrôle précis à chaque étape. Ce flux de travail ne couvre pas tous les cas d’utilisation, mais il vous donne une base solide pour relever les défis uniques de la création de contenus immersifs.

    Dans cette vidéo, je vais utiliser l’environnement lunaire comme étude de cas. Je vais vous montrer la procédure pour optimiser ce contenu en vue d’un rendu en temps réel sur Vision Pro. Pour ceux qui ne connaissent pas encore la création d’éléments pour Vision Pro, je vais commencer par une rapide présentation de la perspective graphique et de ce qu’il faut savoir pour créer un contenu immersif. J’aborderai ensuite le processus d’optimisation, en commençant par l’utilisation du périmètre d’immersion pour optimiser la géométrie au-delà des méthodes traditionnelles. Je vais ensuite vous montrer l’application de ces principes aux textures grâce au dépliage UV et aux techniques de précalcul des textures. Une fois l’optimisation terminée, je vais préparer cet environnement pour qu’il soit compatible avec l’USD et un moteur de rendu en temps réel. C’est parti. Comme mon collègue Scott l’a mentionné dans sa vidéo WWDC24, « Optimize your 3D assets for spatial computing », la création de contenu sur Vision Pro est différente. Lorsque vous créez du contenu pour cet appareil, vous devez comprendre comment les utilisateurs vont l’utiliser, car cela peut influencer vos choix au cours du processus de développement.

    C’est un point important, étant donné l’impact du rendu graphique du Vision Pro dans les environnements immersifs. Dans l’immersion mixte, le contenu passthrough n’affiche qu’une partie de l’écran, tandis que l’immersion totale nécessite le rendu de tous les pixels, ce qui nécessite plus de ressources. Quand une personne est en immersion totale, elle se trouve dans un espace fixe et traversable. Elle peut se déplacer sur plusieurs mètres dans toutes les directions jusqu’à ce que l’expérience s’efface pour laisser place au réel. C’est ce qu’on appelle le périmètre d’immersion de Vision Pro. Il assure la sécurité des personnes dans leur environnement tout en optimisant votre budget graphique.

    Si vous connaissez la position et le champ de vision d’un individu, seules les zones visibles nécessitent un rendu de haute qualité. Ni plus ni moins. C’est essentiel pour pouvoir optimiser l’environnement, les scènes haute fidélité étant généralement complexes et denses en polygones. Notre contenu prérendu de la lune en compte plus de 100 millions. Bien que peu optimal, cela permet d’évaluer les limites des capacités d’Houdini. Commençons par ouvrir notre package d’outils, configurer notre scène et prendre un outil de notre flux d’optimisation.

    Après avoir téléchargé l’exemple Houdini, ouvrez le dossier du projet. Il contient tout ce qui est nécessaire pour suivre cette démo. À la racine se trouve le fichier principal Houdini, optimize.hip. Il contient la configuration que nous allons utiliser. Juste à côté se trouve le dossier HDA, qui contient tous les outils personnalisés utilisés dans ce flux de travail. Ces HDA sont déjà référencés dans le fichier principal, mais ils peuvent également être réutilisés dans un projet Houdini. Passons sur Houdini où j’ai chargé cette scène. Ici, tout est organisé en trois parties, chacune contenant son propre réseau et ses propres nœuds. La première est le réseau source. C’est la disposition en pleine résolution, qui utilise une géométrie dense à haute fidélité. Dans l’exemple de fichier, c’est une simple procédure. Mais pour cette démo, je vais utiliser l’environnement lunaire comme exemple. L’étape suivante est l’optimisation, où la scène est recréée pour des performances en temps réel à l’aide des techniques présentées dans cette vidéo.

    Enfin, tout est assemblé au format USD, qui peut être exporté vers un éditeur d’exécution, tel que Reality Composer ou Unity. Voyons le premier HDA personnalisé, un utilitaire qui sera utile à chaque étape de ce processus. Boundary Camera HDA a été conçu pour visualiser l’expérience d’un contenu immersif.

    Cet outil fournit un cadre de référence pour définir les limites du périmètre d’immersion. Il possède plusieurs caméras, ce qui vous permet de voir votre contenu sous différents angles.

    Des paramètres ajustables permettent de modifier la caméra et de suivre la scène tout en optimisant le rendu.

    Une fois le projet configuré, nous allons utiliser la première suite d’outils d’optimisation de la géométrie. Cette scène contient une densité élevée de polygones, avec d’innombrables rochers et un terrain qui s’étend sur des kilomètres. Comment réduire la complexité d’un environnement d’une telle ampleur ? Vous pouvez utiliser un système de niveau de détail pour simplifier les actifs individuels. C’est la bonne solution pour certains types de contenus. Utilisons tout le potentiel du périmètre d’immersion, au-delà des approches conventionnelles. Je vais utiliser trois techniques pour simplifier l’environnement en réduisant le nombre total de polygones. Commençons par la réduction adaptative des polygones. Au lieu de réduire les actifs individuellement, optimisons chaque triangle et limitons la réduction aux angles de vue potentiels. Ici, la taille du triangle est visualisée : le rouge indique une forte densité et le bleu des zones plus grandes et plus simples. Dans cette configuration, les triangles sont maintenus pour conserver la complexité aux endroits requis, et la densité fluctue naturellement, les détails s’atténuant graduellement plutôt que brutalement. Elle assure la netteté des détails essentiels tout en évitant les artefacts polygonaux qui nuisent à l’immersion. Voilà le concept. Voyons comment créer tout cela. C’est là qu’interviennent les outils sur mesure, conçus pour calculer et automatiser le processus. En utilisant des paramètres basés sur des attributs, vous pouvez contrôler la préservation ou la réduction des éléments via une logique procédurale. Utilisez ici l’outil PolyReduce de Houdini, conçu pour gérer des points de vue multiples. Dans cette visualisation, la sphère verte marque une position potentielle utilisée pour mesurer l’importance de la silhouette. Le HDA est piloté par un ensemble de points répartis le long du périmètre d’immersion. Vous vous assurez ainsi que la géométrie reste cohérente sous tous les points de vue possibles.

    Voyons où cela se situe dans le pipeline. Après avoir importé l’actif source en haute définition, la première étape consiste à diviser le contenu pour traiter séparément chaque type. Passons sur Houdini et voyons la configuration de l’un de ces HDA. Dans l’exemple de fichier, tous les rochers sont réduits en un seul passage grâce à un Adaptive Reduce HDA. Mais, c’est une opération complexe puisque les rochers sources contiennent plus de 22 millions de triangles. Pour itérer rapidement, j’ai isolé un échantillon de rochers afin de démontrer la configuration d’un seul HDA. En commençant par ces rochers, je vais déposer une nouvelle instance de l’Adaptive Reduce HDA et la connecter.

    Ensuite, je passe à la caméra immersive pour travailler sous l’angle du périmètre d’immersion.

    Si j’active et précalcule le HDA, une carte thermique est superposée. Je peux ainsi savoir immédiatement où se trouve la densité sur la surface après la réduction. Le nombre total de triangles est contrôlé par ce paramètre en haut de la page.

    Vous pouvez l’ajuster pour obtenir le résultat souhaité. L’évaluation géométrique par ces outils repose essentiellement sur des points sélectionnés selon différents angles de vue. Boundary Samples est un HDA dédié, qui génère des points à l’intérieur du périmètre d’immersion.

    Je vais créer ce nouveau HDA et l’affecter à l’Adaptive Reduce HDA.

    Une fois les points attribués, l’outil va effectuer la réduction selon ces positions. Plus de triangles sont préservés sur les contours de la silhouette, sans modifier le nombre total de triangles, qui est déterminé par le paramètre de la silhouette.

    En ajustant cette valeur, je peux utiliser plus ou moins de triangles sur ces fonctionnalités. Passons aux rochers plus éloignés. Je vais modifier le facteur distance pour réduire la géométrie tout en préservant la silhouette.

    C’est la configuration de base de la plupart de ces outils. Créez un HDA, attribuez des points spécifiques et ajustez ses paramètres pour obtenir les résultats souhaités.

    En appliquant l’outil sur le terrain, puis sur les rochers, la géométrie est optimisée dans le premier kilomètre. Le terrain est réduit de manière plus agressive en fonction de la distance, en diminuant progressivement la densité des triangles vers l’horizon, tandis que les rochers sont simplifiés pour conserver la plus grande partie de la silhouette, en réduisant tout le reste. Cela permet d’optimiser le premier kilomètre. Mais qu’en est-il de la vue restante ? Pour les objets distants, vous pouvez utiliser une technique souvent utilisée dans le développement de jeux. Les Billboards. Il y a une limite naturelle à la profondeur de parallaxe pouvant être perçue à longue distance. Vous n’avez donc pas besoin d’une géométrie 3D complète pour les objets éloignés. Pour le périmètre d’immersion, les repères de profondeur commencent à s’estomper entre 1 et 3 kilomètres. Vous pouvez réduire ces zones à une image plate sans perte de profondeur perceptible. Cette technique prend des objets 3D complexes et les affiche sous forme de géométrie plate, orientée vers le périmètre d’immersion. Pour les grands environnements, elle peut être configurée comme une bande panoramique qui s’intègre parfaitement au reste de la scène. Pour la Lune, j’ai choisi 1 kilomètre afin de pouvoir enregistrer encore plus de triangles, ce qui me permet de mettre encore plus de détails dans les actifs proches.

    Les Billboards utilisent souvent la transparence afin de conserver une géométrie simple, mais cet outil crée la silhouette en utilisant la géométrie réelle. Cela signifie que la bordure correspond à la source originale, sommet par sommet, sans qu’il soit nécessaire d’utiliser des matériaux transparents. Cette méthode peut être utilisée pour toutes sortes d’objets, des roches dures au feuillage organique. Elle fonctionne en projetant chaque sommet vers une position fixe. Ces rayons entrent ensuite en collision avec une forme simple, comme une sphère ou un cylindre, placée à une distance prédéfinie. Au début, la géométrie est désordonnée. Mais une fois que les points sont retriangulés, la silhouette reste précise et simplifiée tout en restant cohérente pour l’observateur. Le Vista Billboard HDA gère l’ensemble de cette configuration de manière procédurale. Il est placé juste après l’importation du train à partir de la disposition source.

    Avec cet outil, la géométrie au-delà d’un kilomètre passe de plusieurs millions de polygones à quelques milliers seulement. Ce maillage simplifié est combiné avec les optimisations précédentes, ce qui donne une vue entièrement optimisée de l’environnement.

    Faisons le point sur les économies réalisées jusqu’à présent. Grâce à la réduction adaptative du maillage et à la conversion de la géométrie distante en Billboards, le nombre de triangles n’est déjà plus que de 350 000. C’est une baisse considérable par rapport au modèle initial de 100 millions de polygones. L’environnement est optimisé pour que tout ce qui est visible soit beaucoup plus efficace. L’étape suivante consiste à optimiser ce qui n’est pas visible grâce à l’élimination par occlusion. L’élimination par occlusion supprime les géométries masquées. Elle optimise ainsi les ressources en évitant le rendu d’éléments invisibles pour l’observateur. Une partie de l’élimination se fait au moment de l’exécution, ce qui entraîne la suppression des maillages invisibles. Simplifions le rendu en éliminant les triangles masqués directement de la géométrie. Le HDA suivant supprime les triangles en lançant des millions de points dans toutes les directions pour tester les polygones visibles. Si un seul rayon touche une partie d’un triangle, celle-ci est conservée, mais tout le reste est supprimé, ce qui est représenté ici en rouge. Cet ensemble d’outils comprend deux types d’élimination : suppression de la face arrière et élimination de l’occlusion. Ils s’exécutent en tandem après la réduction des polygones.

    Tout d’abord, la suppression des faces arrière. Il utilise une comparaison de produits scalaires pour détecter des polygones orientés vers l’extérieur du périmètre d’immersion. C’est rapide, fiable et offre un excellent premier passage. Les polygones éliminés apparaissent sous forme filaire, et le nombre de triangles économisés s’affiche juste en dessous de chaque HDA. Dans le cas de la Lune, nous en supprimons un peu moins de 60 000.

    Passons maintenant au deuxième outil, l’élimination par occlusion. Il fonctionne par ray casting à partir de chaque position d’échantillon pour tester la visibilité. La précision dépend du nombre de points d’échantillonnage utilisés et du nombre de rayons émis par chacun d’eux. Dans cet exemple, 110 000 triangles ont été éliminés. Cela s’ajoute à ce qui a déjà été réalisé par l’élimination des faces arrière. Ensemble, ces outils forment une puissante combinaison. Environ 50 % des triangles restants sont supprimés lors de ce passage, visualisés ici en bleu, montrant les limites actualisées de la géométrie. Et depuis les points de vue actuels, c’est comme s’il ne s’était rien passé du tout. Consultons les derniers chiffres.

    Le nombre de triangles n’est plus que de 180 000. Pour un environnement d’un tel niveau de complexité, c’est fantastique. Voici une comparaison côte à côte qui utilise une carte de profondeur pour la visualisation. Les silhouettes sont les mêmes, presque identiques, mais elles ne s’exécutent plus que sur une fraction de la géométrie d’origine.

    L’intérêt réel d’organiser votre flux de travail ainsi ne se limite pas aux données chiffrées. Il s’agit aussi de pouvoir affiner chaque étape du processus. Augmentez la valeur pour plus de qualité, diminuez-la pour plus de performance. Avec une chaîne d’outils procéduraux, vous maîtrisez parfaitement le processus. Après l’optimisation géométrique, passons au dépliage UV et aux textures. Ce n’est pas évident à première vue, mais même un paysage aride comme celui-ci regorge de détails uniques. Des dizaines de gigaoctets de cartes PBR haute fidélité rendues avec des éclairages par lancer de chemin qui couvrent toutes les surfaces. Cela signifie que chaque pixel, quel que soit son angle, est unique. Toutes ces données représentent un défi de taille.

    Comment préserver tous ces détails sur la géométrie optimisée ? Les UV, système de coordonnées 2D gérant l’application des textures sur la géométrie, permettent de repenser l’organisation des données de texture via le périmètre d’immersion. Commençons au bord du périmètre d’immersion, en isolant seulement les 5 premiers mètres. Les actifs de cet espace peuvent être vus sous presque tous les angles. La densité des texels doit donc rester constante sur toutes les surfaces. C’est ce que montre ce modèle de grille : le mappage UV par zone, de sorte que chaque surface résiste à une inspection minutieuse. En dehors du périmètre, les choses deviennent intéressantes. Les actifs ne sont vus que sous des angles et à des distances limités, de sorte que la cartographie habituelle de la surface est insuffisante, car

    elle gaspille des texels sur des zones dont l’observateur ne peut jamais s’approcher. Nous devons changer de stratégie. Au lieu d’utiliser des UV basés sur la zone, c’est la cartographie basée sur la projection qui prend le relais, en alignant les textures sur la zone de l’écran à l’intérieur du périmètre d’immersion.

    Ce processus crée une cartographie de l’espace de l’écran, où la densité du texte s’adapte à la façon dont le spectateur le voit. Les surfaces éloignées reçoivent moins de texels, tandis que les zones plus proches et plus visibles ont une plus grande résolution. Pour utiliser la cartographie de l’espace de l’écran, l’outil suivant utilise une technique appelée projection sphérique. Il s’agit d’envelopper une sphère autour du spectateur, puis de projeter l’environnement sur cette surface. Pour que cela fonctionne pour les textures, les UV et les images prérendues doivent parler le même langage. Lors du rendu de l’environnement source, la même projection sphérique est utilisée pour la caméra. Cela signifie que l’image s’aligne parfaitement au dépliage UV. Essayons d’appliquer cette configuration à la géométrie optimisée.

    Les premières impressions sont bonnes. Avec l’activation de l’image filaire, la géométrie et l’image rendue s’assemblent parfaitement. Mais que se passe-t-il si l’on se lève et que l’on regarde un peu autour de soi ?

    On dirait que quelque chose ne va pas.

    En fait, des parties entières du paysage sont absentes de la texture. Les surfaces s’emparent de tout ce qui se trouve devant elles, étalant de petits rochers sur de gros rochers et de gros rochers sur des montagnes.

    Pour une expérience immersive comme celle-ci, il faut plus d’informations pour couvrir la scène sous tous les angles. Mais, il y a plusieurs défis à relever. Tout d’abord, le chevauchement des UV, représenté ici en rouge. Sous certains angles, les surfaces se compressent dans l’espace UV, ce qui provoque le pliage des triangles les uns sur les autres et leur empilement sur la géométrie située derrière. Cela signifie que, même si un rendu possède ces surfaces, les données ne sont stockées nulle part. Le problème suivant est la mise à l’échelle du texel. Elle n’est précise qu’à partir de la position de projection réelle. Dès que vous vous déplacez, la densité des texels commence à se dégrader.

    Et enfin, le rendu. Une seule prise de vue panoramique ne permet pas de tout voir. Certaines surfaces manquent de détails ou sont complètement omises. Pour résoudre ces problèmes, vous devrez projeter les UV sous plusieurs angles, optimiser le positionnement des surfaces, ajuster la densité des texels selon les points de vue et éliminer les chevauchements d’UV durant le processus. Ça fait beaucoup. Si vous abordez le problème de façon individuelle, vous pouvez le répartir en plusieurs étapes plus faciles à gérer. Il n’est pas nécessaire de réduire la complexité, il suffit d’avoir le bon système pour la maîtriser.

    Commençons par séparer la géométrie à l’intérieur du périmètre d’immersion et concentrons-nous sur le reste de l’environnement.

    Cette technique se déroule en deux temps. Tout d’abord, divisons le maillage en sections plus petites afin que la géométrie ne soit pas limitée à une seule projection d’UV. C’est un peu comme la prédéfinition des îlots UV, en définissant les limites avant que les UV ne soient réellement créés. Chaque section reçoit sa propre projection UV à partir d’une position personnalisée qui maximise la visibilité. Pour la Lune, concentrons-nous à nouveau sur les rochers, car ce sont les plus difficiles. En effet, tous les côtés ne sont pas visibles d’un seul point de vue. Le Mesh Partition HDA est là pour vous aider. Il tente de diviser le maillage en autant d’îlots que possible afin que chacun d’entre eux puisse être vu clairement depuis au moins une position. Par exemple, sur ce rocher héros, les faces sont divisées de manière à ce que les UV puissent être projetés d’un côté, puis de l’autre, ce qui permet d’obtenir le niveau de résolution maximal nécessaire pour les deux faces. Le Multi-Projection HDA s’intègre dans ce processus juste après l’optimisation de la géométrie. Une fois les partitions en place, elles peuvent être traitées ensemble à l’aide du Multi-Projection HDA.

    Cet outil parcourt chaque partition créée par le HDA précédent, en projetant les UV à partir du point où l’élément apparaît le plus grand dans l’espace de l’écran.

    Il trace une ligne vers l’origine de chaque projection et indique exactement où les UV ont été créés. Tout ceci peut sembler un peu chaotique au début, mais une fois qu’il fonctionne, le gros du travail est déjà fait. Voyons les résultats.

    Tous les îlots UV sont superposés, chacun étant aligné sur le centre de sa projection. Il ne reste plus qu’à les présenter et à les rassembler dans un atlas UV définitif.

    Voilà la configuration complète. Avec une passe pour les rochers et une autre pour le terrain, le maillage a d’abord été divisé de manière procédurale. De nouveaux UV sont ensuite projetés sur chaque section. Il en résulte une mise à l’échelle plus précise des texels, avec un minimum de chevauchement et de distorsion. Avec cette configuration, l’ensemble de l’environnement peut tenir sur deux textures seulement : une pour le périmètre d’immersion à l’échelle de la surface, et une pour tout ce qui se trouve au-delà. Grâce à la mise à l’échelle de l’espace écran, les deux peuvent avoir des textures de taille similaire. C’est une compression massive. Des kilomètres de terrain condensés dans la même empreinte que les premiers mètres.

    Une fois l’optimisation terminée, l’environnement lunaire est prêt à recevoir des images prérendues. Le rendu et le précalcul sont des sujets complexes. Nous nous concentrerons ici sur quelques concepts clés dont vous aurez besoin pour tout comprendre. Dans Houdini, le précalcul peut être réalisé à l’aide de rendus sphériques. Voici comment cela fonctionne. Une projection sphérique temporaire permet d’appliquer le rendu à la géométrie. Cette projection est ensuite intégrée dans le modèle UV final. Mais gardez à l’esprit qu’il ne s’agit que d’un angle de vue. Pour compléter les données manquantes, vous pouvez utiliser une méthode de projection qui ne dépend pas de la vue.

    Si vous avez travaillé dans des jeux, vous avez probablement déjà fait cela, en intégrant des détails à haute résolution sur un maillage à faible résolution. L’idée est la même ici : projeter directement la surface de la géométrie source sur l’atlas UV optimisé. Cela garantit une couverture complète de toutes les surfaces.

    En combinant ces techniques et en les appliquant en tant que matériau non éclairé sur la géométrie optimisée, vous obtenez un environnement entièrement texturé. À partir des dizaines de gigaoctets de textures en haute résolution, les environnements les plus vastes peuvent désormais être compressés en moins de deux cents mégaoctets, tout en préservant les images haut de gamme. Tout est maintenant prêt à être exporté pour Vision Pro. La dernière étape consiste à mettre en place l’USD. Mais un USD bien conçu ne se contente pas de mettre de l’ordre. Il permet de débloquer une dernière optimisation qui peut améliorer encore les performances. Après l’optimisation, l’environnement existe désormais sous la forme d’un maillage unique. Si vous l’exportez de cette manière, chaque triangle sera envoyé au GPU au moment de l’exécution, même si des sections se trouvent complètement en dehors de votre vue. Pour atténuer ce coût, il doit être configuré pour un élagage optimal du frustum. La hiérarchie USD permet le partitionnement de scène. Elle autorise ainsi le moteur de rendu à éliminer la géométrie selon les cadres de sélection tout en optimisant les performances grâce à l’exclusion des objets en dehors du champ de la caméra.

    Voici une illustration de ce processus. Les éléments bleus mettent en évidence les entités déchargées du GPU, tandis que le spectateur regarde et se déplace dans la scène. Ce processus utilise deux types de partitionnement, selon que la géométrie se trouve à l’intérieur ou à l’extérieur du périmètre d’immersion. Nous avons créé un HDA personnalisé pour chaque cas afin de générer des attributs pour définir chaque nouvelle partition et jeter les bases de la structure USD. À l’intérieur du périmètre, la géométrie est divisée à l’aide du Boundary Partition HDA, qui est optimal pour éliminer la géométrie dense sous les pieds. Pour tout ce qui se trouve à l’extérieur du périmètre, le Frustum Partition HDA prend le relais. Il divise le maillage en tuiles de plus en plus grandes, optimisées pour que chacune ait une taille et un espace d’écran relativement similaires. Toutes les optimisations effectuées jusqu’à présent ont été effectuées au niveau de la surface afin de modifier une table de données de points et de primitives au lieu de véritables objets. Mais, l’USD nécessite une structure hiérarchique, organisée en transformations, primitives de maillage et sous-ensembles géométriques. Avant l’exportation, la géométrie doit être nettoyée et structurée de manière à pouvoir être interprétée par USD. Pour cette configuration, seuls quelques attributs doivent être conservés. Un attribut de nom devient le nom primitif dans la hiérarchie USD, et les affectations de groupe définissent les sous-ensembles utilisés pour l’élagage du frustum. Les deux HDA de partition ont déjà créé ces groupes, il suffit donc de les transmettre à l’USD. Une fois ces attributs définis, le reste est simple. Importez la géométrie dans Solaris, puis activez les groupes de sous-ensembles et déclarez vos noms de groupes personnalisés. Vos partitions sont des sous-ensembles géométriques, prêts pour l’élagage du frustum en temps réel. L’environnement lunaire a commencé par une géométrie dense, des textures massives et des ombres complexes. Cette optimisation est maintenant terminée. Ce qui n’était au départ qu’un rendu cinéma est désormais disponible en temps réel grâce à des outils procéduraux destinés à créer des contenus immersifs. Pour conclure, examinons l’impact réel de ces optimisations sur la création d’une grande variété d’expériences immersives.

    Pour la Lune, la scène a commencé avec plus de 100 millions de triangles. Ce nombre a été réduit à moins de 200 000, dont moins de 100 000 visibles à l’écran à tout moment, grâce à l’élagage du frustum. Il est possible de pousser ce chiffre encore plus loin, en particulier pour une scène statique. Mais il y a d’autres coûts à prendre en compte, tels que les ombrages complexes, les personnages animés et les éléments interactifs. Le fait de limiter le nombre de triangles permet de réserver du budget pour le contenu qui compte le plus. Du côté des textures, les projections sphériques ont eu un impact considérable. Ils ont réduit l’ensemble de l’environnement à moins de 250 mégaoctets de mémoire de texture. Ce nombre variera en fonction de vos projets, mais il peut rester relativement constant, car la plupart des surfaces sont adaptées à l’espace de l’écran. En prime, vous pouvez utiliser autant de textures uniques que nécessaire sur l’entrée source, puisque tout est finalement intégré dans le même atlas de textures.

    Du côté des objets, le nombre total d’entités est maintenu en dessous de 200 actifs, et dans chaque image, il y a généralement moins de 100 draw calls. Cela est possible, car tous les actifs sont fusionnés et intégrés dans des partitions de maillage cohérentes, quel que soit le nombre d’objets uniques avec lesquels vous commencez. Les outils utilisés dans cette vidéo sont conçus pour être aussi robustes que possible, afin que vous puissiez les réutiliser dans de nombreuses situations.

    Si vous créez un portail, vous pouvez utiliser un ensemble d’outils très similaires avec des paramètres adaptés. Ici, la modification de l’Occlusion Culling HDA supprimera les triangles non visibles au-delà des limites d’un portail. Dans certains environnements, l’objectif peut être de créer plusieurs paramètres immersifs. Au lieu de recréer la scène pour chaque position, vous pouvez utiliser plusieurs ensembles de points d’échantillonnage afin d’optimiser chaque expérience immersive. Avec un simple ajustement, la plupart des outils devraient fonctionner de la même manière pour redimensionner les triangles pour les deux périmètres et projeter les UV de manière à ce que chacun ait la densité de texels minimale requise, ce qui permet de partager un maillage et un ensemble de textures pour les deux points de vue. Chaque environnement dans lequel vous travaillez sera différent. Il n’existe pas de processus universel. Cependant, si vous utilisez les bons outils, vous pouvez choisir la meilleure approche pour chaque projet. Par exemple, des environnements rocheux comme la lune ou Joshua Tree, des scènes atmosphériques comme le Mont Hood ou Haleakala, ou même des intérieurs à surface dure, comme une salle de conférence ou un théâtre. Des expériences similaires peuvent être créées à l’aide des techniques décrites ici et d’autres techniques. Certaines scènes exigent des shaders plus complexes, ce qui nécessite de réduire la géométrie afin de maintenir les performances en temps réel. D’autres espaces, tels qu’une salle de conférence, sont modélisés manuellement dès le début pour optimiser l’efficacité, ce qui rend inutiles les ajustements majeurs. Pour approfondir la configuration technique, vous pouvez commencer par l’exemple de projet fourni. Il contient le même processus et les mêmes outils que cette vidéo, et peut être utilisé et modifié gratuitement. Le fichier README contient des descriptions pour chaque outil, ainsi que quelques HDA supplémentaires que je n’ai pas couverts. Pour obtenir des conseils d’optimisation plus spécifiques à une plate-forme, regardez « Optimize your 3D assets for spatial compution ». Le point à retenir ici est que le contenu haute fidélité n’a pas besoin d’être coûteux. Au début, les développeurs ne pouvaient pas rendre tous les détails. Ils ont dû mettre au point des techniques créatives pour en faire plus avec moins. Ces mêmes principes peuvent renforcer votre processus aujourd’hui. L’objectif est d’améliorer méthodiquement chaque étape de la création. Grâce à des outils performants, vous pouvez repousser les limites du possible et créer des environnements qui offrent une immersion approfondie et un fort sentiment de présence. Merci.

    • 0:00 - Introduction
    • Découvrez comment utiliser des outils procéduraux pour créer de magnifiques environnements immersifs pour votre app ou votre jeu visionOS. Nous partageons les éléments fondamentaux permettant de créer un environnement de haute qualité, puis nous approfondissons le processus d’optimisation. Découvrez comment utiliser une série de flux de travail fournis par Apple pour Houdini afin de réduire le nombre de polygones de votre scène, comment nettoyer la géométrie, comment assembler les cartes UV et comment créer des ressources USD à importer dans Reality Composer Pro ou dans le moteur de jeu de votre choix.

    • 3:51 - Se préparer pour Vision Pro
    • La création de contenu pour l’Apple Vision Pro nécessite une approche particulière en raison de ses fonctionnalités d’Informatique spatiale. Vous devez tenir compte des exigences de rendu de l’appareil, en particulier en immersion totale, où chaque pixel est rendu. Lorsqu’une personne se trouve dans un environnement totalement immersif, elle apparaît dans une limite immersive et un espace traversable de 3 m. Cette limite vous permet d’optimiser le budget graphique en ne rendant que les parties de l’environnement que les utilisateurs peuvent voir et auxquelles ils peuvent accéder dans cette zone.

    • 7:35 - Optimiser la géométrie
    • Découvrez comment utiliser la limite immersive et appliquer des techniques dans Houdini pour réduire le nombre de polygones dans votre scène sans diminuer la qualité de l’apparence de votre environnement.

    • 17:22 - Projection UV
    • Découvrez comment optimiser votre mappage de texture et l’organisation des données pour regrouper efficacement les textures de votre environnement et réduire davantage les coûts de rendu.

    • 24:20 - Cuisson des textures
    • Découvrez comment utiliser les rendus sphériques et une méthode de projection directement à partir de la géométrie source sur l’atlas UV optimisé pour capturer une couverture sur toute la surface.

    • 25:38 - Configuration USD
    • Découvrez comment exporter votre environnement optimisé en USD pour l’importer dans Reality Composer Pro ou le moteur de votre choix.

    • 28:35 - Conclusion
    • Découvrez comment utiliser ces mêmes techniques pour créer un large éventail d’environnements différents, y compris des expériences de portail ou des environnements avec diverses limites immersives.

Developer Footer

  • Vidéos
  • WWDC25
  • Optimisez vos environnements personnalisés pour visionOS
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines