Skip to content

Latest

More results

Présentation du système de modèles interactifs légers et évolutifs « SLIM » (Scalable Lightweight Interactive Models)

Exploiter la puissance des composites de rendu légers pour des mondes plus vastes et détaillés sur tous les appareils

Roblox héberge des millions d'expériences : des mini-jeux simples aux mondes ouverts riches en assets 3D haute fidélité. Notre objectif est de prendre en charge des expériences de plus en plus denses et complexes, imaginées par les créateurs pour un large éventail d'appareils utilisateurs. Pour ce faire, nous devons faire preuve d'innovation au niveau de notre moteur, de nos systèmes de distribution de contenu et de notre infrastructure. Le système Scalable Lightweight Interactive Models (ou SLIM) s'inscrit dans un programme de développement à plusieurs volets, qui permet aux créateurs de donner vie à leurs grandes ambitions artistiques sans compromettre les performances. 

SLIM génère automatiquement des représentations légères de n'importe quel objet dans une expérience Roblox, réduisant le nombre d'appels de rendu (« draw calls »), de triangles et d'instances dans le modèle de données nécessaires au client pour afficher un monde riche et fluide. En outre, SLIM fournit à notre modèle de streaming de nouvelles capacités puissantes d'optimisation du contenu. Résultat : un utilisateur sur PC gaming haut de gamme et un utilisateur sur mobile d'entrée de gamme peuvent profiter de la même expérience, avec le niveau de rendu maximal supporté par leur appareil.

Scène SLIM.webp
La scène ci-dessus utilise beaucoup moins d'instances de modèle de données, de triangles et d'appels de rendu lorsque le streaming d'instances et SLIM sont activés.
Sans streaming d'instances et SLIMAvec streaming d'instances et SLIM
Instances de modèle de données client159 74592 536
Triangles20 millions3,35 millions
Appels de rendu2 4021 454

Les deux piliers du streaming : les instances et les contenus

Lorsque vous regardez un film sur votre service de streaming préféré, votre appareil ne télécharge pas l'intégralité du fichier avant la lecture : il télécharge le strict nécessaire pour démarrer, puis télécharge en continu (ou met en mémoire tampon) les quelques secondes suivantes, pour que l'expérience ne soit jamais interrompue. Si vous streamez sur un appareil de gamme inférieure ou disposant d'une connexion lente, la plateforme ajuste automatiquement la qualité. Pour ce faire, elle envoie une version du contenu à fidélité réduite pendant qu'elle télécharge suffisamment de données pour diffuser le contenu de meilleure qualité.

Roblox applique une logique similaire pour streamer du contenu à la volée, mais les données nécessaires pour représenter une simulation 3D haute fidélité posent des défis particuliers. Alors qu'une vidéo présente une chronologie de contenu linéaire regardée depuis une seule perspective, les expériences Roblox contiennent de vastes mondes 3D interactifs remplis de nombreux types de contenus pouvant être vus sous de nombreuses perspectives contrôlées par l'utilisateur. Ajoutez à cela 151,5 millions d'utilisateurs actifs quotidiens. Ils jouent, explorent et streament du contenu depuis une grande variété d'appareils. Autrement dit, il existe un énorme potentiel d'optimisation concernant les méthodes de distribution et d'affichage du contenu.1

Tout ce qu'un utilisateur voit sur Roblox (une voiture, un arbre, un avatar ou un bâtiment) est représenté dans le moteur par un certain nombre d'instances. Par exemple, une voiture utilisable est composée d'un ensemble d'instances distinctes : pare-chocs, portières, roues, etc. Chaque instance est construite dans l'expérience à l'aide de plusieurs types de contenus : maillages 3D, textures, animations et audio.

Sur Roblox, presque tout le streaming repose sur deux technologies principales : le streaming d'instances et le streaming de contenu.

  • Le streaming d'instances détermine les instances que l'appareil d'un utilisateur doit diffuser. Il n'est pas nécessaire de streamer des parties de l'expérience que l'utilisateur ne peut pas encore voir ou avec lesquelles il ne peut pas interagir. Dans l'exemple ci-dessus, seules les instances représentant les bâtiments à proximité sont streamées vers le client.

  • Le streaming de contenu détermine la qualité des instances diffusées. Pour une montagne en arrière-plan dont les détails sont indiscernables par l'utilisateur, il n'est pas nécessaire de télécharger une texture en 4K haute résolution. Dans l'image ci-dessus, les bâtiments au loin et ceux qui occupent une petite partie de l'écran utilisent des maillages décimés et des textures de résolution inférieure. 

Le cerveau central de cette opération est un système que nous appelons Harmony. Il surveille les ressources disponibles de chaque utilisateur à chaque image. Harmony ajuste à la fois le streaming d'instances et de contenu pour offrir la meilleure expérience en fonction de la mémoire, des charges GPU et CPU et de la bande passante réseau d'un appareil. Pour un PC gaming haut de gamme, Harmony pousse tout à la qualité maximale. Pour un appareil mobile disposant d'une connexion faible, il réduit automatiquement l'échelle pour maintenir une expérience utilisateur fluide.

L'équipe a discuté de la technologie derrière le streaming, le transcodage cloud et SLIM dans l'épisode 30 du podcast Tech Talks.

SLIM : Scalable Lightweight Interactive Models

L'idée derrière SLIM est simple, mais puissante : générer automatiquement plusieurs représentations légères et optimisées de n'importe quel objet ou modèle d'une expérience, stockées côté serveur et récupérées à l'exécution. En fonction des ressources de l'appareil disponibles, le client de chaque utilisateur peut alors basculer dynamiquement entre le rendu des instances et contenus originaux ou l'une des représentations SLIM légères.

Pour générer une représentation légère, SLIM repose sur deux techniques principales :

1. Le compositage

Tout d'abord, SLIM combine plusieurs parties d'un modèle en un nombre réduit de composants. Par exemple, une voiture nécessitant 112 maillages et 24 textures peut être réduite à un seul maillage et quatre textures. Le processus de compositage est précisément calibré pour correspondre à la façon dont le moteur rendra finalement le contenu. Ainsi, il élimine la géométrie invisible dans un objet et réduit le nombre d'appels de rendu nécessaires pour le rendre.

Comparaison de voitures SLIM.webp

2. Le niveau de détail (LoD)

Après avoir traité le compositage du modèle, SLIM génère plusieurs versions à différents niveaux de détail. Cela implique de créer des versions du maillage 3D avec beaucoup moins de triangles et de générer des textures à des résolutions beaucoup plus basses, comme nous le faisons avec n'importe quel maillage ou texture à l'aide des techniques de LoD traditionnelles. Lorsqu'elles sont appliquées aux modèles SLIM, ces techniques peuvent être optimisées davantage, car nous disposons des cadres de coordonnées individuels pour chaque instance sous-jacente. Cela nous donne le contexte complet du rendu d'ensemble du contenu imaginé par créateur. Avec ces informations, SLIM nous permet de prendre des décisions plus éclairées sur les zones aux détails inutiles à supprimer et celles aux détails à conserver, contenant des détails que les utilisateurs remarqueront.

non défini

La bonne représentation, au bon moment

Une fois que nous avons créé plusieurs représentations d'un objet, SLIM doit décider laquelle utiliser pour l'appareil d'un utilisateur spécifique ou s'il faut utiliser des techniques de rendu traditionnelles à la place. Le système divise le monde en trois zones distinctes. Une façon simple de concevoir ces zones est d'imaginer des cercles concentriques de détail s'étendant vers l'extérieur depuis l'utilisateur.

non défini

Les limites de streaming ne sont pas réellement circulaires. Leur forme dépend de divers facteurs.

Zone HH (instances lourdes, rendu lourd)

Dans la zone HH, les instances complètes et lourdes sont transmises du serveur vers le modèle de données client. Ce dernier détermine la représentation de contenu spécifique à télécharger et à rendre pour chaque instance. La mise à l'échelle peut toujours être réalisée avec les LoD de maillage et les mips de texture dans cette zone, mais il n'y a pas de compositage. Avant SLIM, c'est ainsi que chaque instance diffusée dans une expérience était rendue. 

Zone HL (instances lourdes, rendu léger)

La zone HL se situe entre les zones HH et LL. Dans cette zone, le client dispose des instances lourdes dans le modèle de données, mais il peut choisir de rendre en utilisant soit le pipeline de rendu complet, soit le pipeline SLIM. Cette zone s'adapte pour assurer une transition fluide entre les HH et LL, même si l'utilisateur rencontre une latence réseau. Le point de transition entre les zones HH et HL est dynamique, ce qui permet à Harmony d'augmenter ou de diminuer l'échelle immédiatement en réponse à un pic de ressources dans les deux sens.

Zone LL (instances légères, rendu léger)

Dans la zone LL, le client ne diffuse que des représentations super-légères d'instances nécessaires afin de définir un cadre de coordonnées pour un modèle SLIM, ainsi que les métadonnées minimales. Seuls les modèles SLIM composités légers sont rendus dans cette zone, plutôt que chaque instance et contenu individuels. La zone LL nécessite beaucoup moins de triangles et d'appels de rendu. Elle réduit l'utilisation de la mémoire sur l'appareil de l'utilisateur par rapport au streaming de chaque instance lourde et à l'utilisation du pipeline de rendu traditionnel.

Cette technique de zone permet au client de rendre l'ensemble du monde visible à tout moment, sans encourir le coût computationnel complet de l'utilisation de chaque instance et contenu lourds à la fois. Les objets éloignés sont des représentations légères hautement optimisées, qui sont remplacées par leurs équivalents haute fidélité au fur et à mesure que l'utilisateur s'en approche. La capacité de SLIM à créer des composites et plusieurs modèles de LoD mis à l'échelle donne à Harmony plus de leviers à actionner en vue d'optimiser la qualité des assets pour l'appareil de chaque utilisateur.

Lorsque tout se met en place, l'utilisateur devrait se sentir complètement immergé et ne remarquer aucun des points de transition ni des niveaux de détail variables.

Quel est l'avenir de SLIM ?

SLIM n'est que la première étape d'un parcours en plusieurs phases, et nous sommes impatients de voir comment les créateurs intègreront la technologie dans leurs flux de travail. Nous envisageons l'expansion de SLIM dans deux directions principales.

Déterminer ce qui peut être optimisé par SLIM

Nous commencerons tout d'abord par les modèles statiques que les créateurs imaginent dans Roblox Studio. À l'avenir, SLIM pourra optimiser certains des modèles les plus complexes sur Roblox : les avatars de la plateforme. Les avatars, avec toutes leurs animations associées, vêtements superposés et accessoires, peuvent être une variable imprévisible pour les créateurs. Permettre aux avatars d'être « SLIMés » signifie que le moteur peut effectivement plafonner les ressources qu'un modèle d'avatar individuel utilise.

À terme, nous voulons donner aux créateurs la possibilité de tirer profit de SLIM pour modifier les modèles dynamiques. Imaginez un modèle où le serveur peut activement apporter des modifications (par exemple, une porte s'ouvre ou une partie est détruite). Avec quelques astuces ingénieuses, le client pourrait réutiliser la même représentation légère.

Optimiser le pipeline SLIM

Maintenant que nous disposons d'un pipeline de bout en bout qui offre au moteur une nouvelle dimension de flexibilité, nous nous efforçons également de rendre le pipeline lui-même plus intelligent, plus rapide et plus efficace. Cela comprend :

  • Le ré-atlassage de textures : l'intégration intelligente de plusieurs textures de modèles dans une seule feuille de texture optimisée.

  • La segmentation automatique : utiliser automatiquement la compréhension sémantique et spatiale du monde pour identifier les meilleurs modèles SLIM.

  • Des représentations plus légères : pour les objets dynamiques qui dépendent moins de la latence, nous explorons la possibilité de générer des représentations 2D qui sont pratiquement sans ressources à rendre sur le client.

  • Un SLIM hiérarchique : une imbrication successive de modèles SLIM, de sorte que des groupes entiers d'instances puissent être simplifiés et que le moteur puisse choisir dynamiquement entre les niveaux de granularité (par exemple, d'un seul arbre à une forêt à une masse terrestre entière remplie de forêts et d'autres objets).

  • Une augmentation de la résolution : aujourd'hui, nous nous concentrons sur l'optimisation des performances, mais très bientôt, ce même système nous permettra d'augmenter la résolution des éléments pour le matériel futur tout en conservant l'intention artistique originale du créateur. Cette nouvelle architecture signifie qu'à mesure que notre moteur s'améliore dans la simulation de la réalité, nous pouvons continuellement mettre à niveau les représentations qu'il utilise. 

SLIM, en combinaison avec Harmony et le reste de notre architecture de streaming et de distribution de contenu, constitue un pas de géant dans notre objectif d'offrir des mondes plus expansifs et détaillés à un plus grand nombre d'utilisateurs. Couplée à la base de contenu massive de millions de créateurs, l'intégration poussée de notre moteur, de notre distribution de contenu et de notre infrastructure cloud nous permet de construire des systèmes profondément interconnectés qui améliorent l'expérience globale. À mesure que notre moteur s'améliore dans la simulation de la réalité, nous pouvons continuellement mettre à niveau les représentations qu'il utilise. Aujourd'hui, nous nous concentrons sur l'optimisation des performances, mais très bientôt, ce même système nous permettra d'augmenter la résolution des contenus pour le matériel futur tout en conservant l'intention artistique originale des créateurs.

Nous construisons une plateforme qui non seulement respecte cette intention artistique, mais qui peut également fournir intelligemment et automatiquement leurs créations à n'importe quel utilisateur sur une grande variété d'appareils, partout où Roblox est disponible. Nous avons hâte de voir ce que la communauté va construire avec elle.

1 Au troisième trimestre 2025.