Assembler une bibliothèque de ressources est le processus d'importation et de configuration d'une collection de ressources dans un emplacement central de votre expérience pour un accès et un réutilisation faciles.Ce processus peut vous faire gagner du temps lorsque vous vous préparez à construire votre environnement, notamment si vous configurez les valeurs de chaque contenupour améliorer les performances et optimiser l'utilisation de la mémoire sur les appareils de milieu à bas de gamme.
En utilisant le fichier Environnement Art - Assemblage.rbxl comme référence, cette section du cursus d'art environnemental vous montre comment assembler une bibliothèque d'actifs à partir de vos actifs polis, y compris des instructions étape par étape sur :
- Création de matériaux personnalisés pour votre terrain à partir de vos textures carrelables.
- Créer des objets d'apparence de surface pour votre feuille de finition et les appliquer à des mailles non déballées dans votre bibliothèque de ressources.
- Définir des paramètres de rendu pour vos ressources afin d'assurer une performance optimale sur tous les appareils.
- Convertir vos ressources en packages afin que vous puissiez les mettre à jour et les réutiliser dans tous vos projets.
Une fois que vous aurez terminé cette section, vous apprendrez à utiliser votre bibliothèque d'actifs de manières créatives pour remplacer ou convertir l'environnement de la boîte grise, et à ajouter des touches finales qui améliorent l'espace 3D global.

Créer des matériaux personnalisés
Studio représente des matériaux personnalisés comme des objets MaterialVariant à l'intérieur du MaterialService.Ces objets MaterialVariant ont quatre propriétés qui combinent les quatre cartes de texture tileables pour créer un matériau personnalisé de haute qualité avec des caractéristiques physiques :
- MaterialVariant.ColorMap – Représente la carte de texture albedo.
- MaterialVariant.MetalnessMap – Représente la carte de texture de métallicité.
- MaterialVariant.NormalMap – Représente la carte de texture normale.
- MaterialVariant.RoughnessMap – Représente la carte de texture de rugosité.
Après avoir fourni les cartes de texture à ces propriétés, vous pouvez appliquer votre nouveau matériau personnalisé à ces deux parties, mailles et terrain.Vous pouvez utiliser ou modifier les fichiers de carte de texture d'échantillon .png pour créer le Lumpy Moss, le Lumpy Moss en fleurs, le Lumpy Moss avec des pierres et les matériaux personnalisés de pierre dans l'environnement de balise laser final, ou vous pouvez utiliser votre propre que vous avez conçu dans la section précédente du tutoriel.
Pour créer MaterialVariant des objets pour vos textures carrelables :
Dans l'onglet Accueil ou Modèle de la barre d'outils, cliquez sur le bouton gestionnaire de matériel .La fenêtre Gestionnaire de matériel s'ouvre.
Dans la liste des matériaux , sélectionnez le matériau de base qui se rapproche le plus de votre texture carrelable.Par exemple, si vous créiez un objet MaterialVariant pour la texture carrelable rugueuse en mousse, choisissez le matériau de sol par défaut afin que le matériau hérite de ses propriétés physiques.
Dans la barre d'outils , cliquez sur l'icône ⊕ .Un nouveau MaterialVariant s'affiche dans la palette avec une icône dans le coin inférieur droit qui indique qu'il s'agit d'un matériau personnalisé.
Dans le inspecteur , naviguez vers la section générale , puis renommez le matériau pour qu'il soit en accord avec le nom de votre texture carrelable.
Dans la section cartes de texture sur le côté droit de couleur , cliquez sur le bouton importer . Un navigateur de fichiers s'affiche.
Dans le navigateur de dossiers, sélectionnez la carte de texture Albedo pour la texture carrelable correspondante, puis le bouton Ouvrir .Le navigateur de dossiers se ferme et la nouvelle carte des couleurs s'affiche avec son ID de ressource.
Répétez ce processus pour les cartes de texture métallicité , normale et rugosité .Les mises à jour du matériau personnalisé reflètent les cartes de texture.
Dans la section substitutions , activez l'option définir comme substitution pour vous assurer que lorsque vous appliquez du terrain à votre terrain, Studio utilise ce matériau personnalisé.
(Facultatif) Si vous créez un matériau personnalisé représentant un matériau organique,
- Dans la section Tuiles , cliquez sur le menu déroulant Motif .
- Sélectionnez Organique pour randomiser la sortie et réduire la superposition visible.
Répétez ce processus pour chaque texture carrelable que vous voulez inclure dans votre expérience.
Créer des packages d'apparence de surface
Studio utilise des feuilles de découpe dans les objets SurfaceAppearance que vous pouvez parent à MeshParts qui contiennent des données UV.Semblable aux matériaux personnalisés, les objets SurfaceAppearance ont quatre propriétés qui combinent les quatre cartes de texture de feuille de finition pour créer un traitement de surface visuelle 3D de haute qualité :
SurfaceAppearance.ColorMap – Représente la carte de texture albedo.SurfaceAppearance.MetalnessMap – Représente la carte de texture de métallicité.SurfaceAppearance.NormalMap – Représente la carte de texture normale.SurfaceAppearance.RoughnessMap – Représente la carte de texture de rugosité.
Après avoir fourni les cartes de texture à ces propriétés, vous pouvez faire de l'objet SurfaceAppearance enfant d'un MeshPart avec des données uv qui se traduisent sur votre feuille d'maillage, et les données uv s'appliquent automatiquement à la maillure parentale.C'est pour cette raison que il est utile de rendre l'objet SurfaceAppearancepackage afin que vous puissiez réutiliser le même objet SurfaceAppearance à travers toutes vos ressources et éléments modulaires.Par exemple, les mailles suivantes ont toutes des données UV qui se traduisent par le même format de feuille d'assemblage représenté dans un seul paquet d'objets SurfaceAppearance.

Vous pouvez utiliser ou modifier la carte de texture d'échantillon .png pour créer un objet SurfaceAppearance qui respecte les données uv pour les ressources modulaires et les accessoires de l'échantillon dans l'environnement de balise laser final, ou vous pouvez utiliser la vôtre que vous avez conçue dans la section précédente du tutoriel qui s'applique à vos propres ressources modulaires et accessoires.
Pour créer des packages SurfaceAppearance que vous pouvez enficher dans votre kit modulaire et vos accessoires :
Insérez un objet SurfaceAppearance dans Workspace.
Sélectionnez l'objet Apparence de surface , puis dans la fenêtre Propriétés , sélectionnez la propriété Carte des couleurs . Une pop-up s'affiche.
Cliquez sur le bouton Ajouter une image… . Un navigateur de fichiers s'affiche.
Sélectionnez la carte de texture Albedo pour la texture correspondante, puis le bouton Ouvrir .Le navigateur de dossiers se ferme et la propriété Carte des couleurs est mise à jour avec un nouvel ID de ressource.
Répétez ce processus pour la propriété Carte de métallicité , Carte normale , et Carte de rugosité , en sélectionnant leurs cartes de texture respectives dans le navigateur de fichiers.
Dans la fenêtre Explorateur , faites un clic droit sur l'objet Apparence de surface , puis sélectionnez Convertir en paquet dans le menu contextuel.La convertir en paquet boîte de dialogue s'affiche.
Remplissez les champs titre et description , définissez la propriété à vous-même ou à un groupe, puis cliquez sur le bouton soumettre .Une fois terminé, un symbole de lien de chaîne s'affiche sur l'icône de l'objet SurfaceAppearance pour l'identifier comme un paquet.
(Facultatif) Sélectionnez l'objet enfant SurfaceAppearance de l'objet PackageLink , puis dans la fenêtre Propriétés , activez Mise à jour automatique pour mettre à jour automatiquement le paquet si vous apportez des modifications à l'objet SurfaceAppearance .
Importer des ressources modulaires et des props
Studio représente les ressources modulaires et les accessoires que vous importez comme Model objets avec enfant MeshParts pour chaque composant de la contenu.Par exemple, si vous importez une section murale avec une bordure supérieure, une bordure inférieure et un composant mur, Studio représente le fichier ou comme une section murale avec une bordure enfant séparée Top_Trim , Bottom_Trim , et Wall .

En utilisant l'importateur 3D, vous pouvez importer le kit modulaire d'échantillon et les accessoires dans Studio pour les utiliser dans votre bibliothèque d'actifs, ou vous pouvez importer n'importe quel élément que vous avez conçu dans la section précédente du tutoriel.Pour plus d'informations sur la fonctionnalité de cet outil, voir Importer 3D.
Pour importer vos ressources et éléments modulaires dans l'expérience :
Dans l'onglet Accueil ou Avatar de la barre d'outils, cliquez sur le bouton Importer 3D . Un navigateur de fichiers s'affiche.
Sélectionnez un fichier .fbx pour un actif modulaire ou une pièce de décoration.
Vérifiez l'aperçu de l'objet et vérifiez que les paramètres d'importation sont corrects pour votre objet.
Cliquez sur Importer . La ressource s'affiche dans la fenêtre Explorateur et dans la fenêtre du fenêtre de jeu.
Répétez ce processus pour chaque ressource modulaire et pièce de décoration.
Déplacez toutes vos ressources dans une zone de votre expérience près de votre géométrie de boîte grise. Cette zone est votre bibliothèque d'actifs.
Appliquer les données d'apparence de surface
Lorsque vous traversez le processus de déballage des UV d'un maillage dans un logiciel de modélisation tiers, le logiciel stocke les données UV dans le fichier .fbx ou .obj du maillage.Lorsque vous importez ce maillage dans Studio, l'objet résultant MeshPart conserve ces données, mais vous devez toujours appliquer un objet SurfaceAppearance avec des propriétés de carte de texture de votre feuille de finition afin d'afficher vos textures de finition sur la contenu.
Pour appliquer les données de la carte de texture SurfaceAppearance à des mailles déballées dans votre bibliothèque d'actifs :
- Dans la fenêtre Explorateur , cliquez sur votre package Apparence de surface , puis appuyez sur CtrlD (⌘D) pour le dupliquer.
- Enfant le paquet dupliqué SurfaceAppearance à un actif modulaire ou à un élément.La ressource applique ses données UV aux cartes de texture et affiche son traitement visuel.
- Répétez ce processus pour chaque ressource modulaire et pièce de décoration.
Définir les paramètres de physique et de rendu
Maintenant que vous avez vos ressources dans Studio, il est important de définir les paramètres de physique et de rendu qui permettent aux ressources de conserver la plus haute qualité visuelle possible sur les appareils souffrant de limitations de mémoire et de GPU.En général, plus vous adhérez étroitement aux directives de cette section, plus vous rendez votre expérience performante.Cependant, il est important de bien examiner le contexte dans lequel vous prévoyez de placer chaque ressource dans l'environnement global pour vous assurer de maintenir vos objectifs esthétiques et vos exigences de jeu.
Ancré
La propriété BasePart.Anchored détermine si le système de physique du moteur Roblox affecte la position de l'objet.Lorsque vous activez cette propriété pour un Part ou MeshPart , elle supprime l'objet des calculs physiques de la simulation dynamique qui est toujours en cours d'exécution dans l'expérience, ce qui signifie que l'objet ne changera jamais de position en raison de la gravité ou de la collision d'autres objets.
Les objets qui ne simulent pas une réponse physique sont moins chers à rendre car ils ne prennent pas le GPU nécessaire pour ces calculs de physique.Lorsque vous libérez la GPU, vous améliorez les performances pour votre expérience, notamment sur les appareils de bas de gamme qui doivent conserver la GPU pour un partierapide.C'est pour cette raison que chaque ressource à part les portes dans l'environnement de balise laser final sont ancrées.
Peut-Collisionner
La propriété BasePart.CanCollide détermine si l'objet peut interagir physiquement avec d'autres objets.Lorsque vous activez cette propriété pour un Part ou MeshPart , l'objet est impénétrable et les comptes du moteur Roblox le tiennent en compte dans les calculs physiques.Ces calculs peuvent avoir un impact sur les performances de votre expérience lorsqu'il y a beaucoup d'objets que le moteur doit prendre en compte dans ses calculs physiques.
Pour atténuer une partie de cet impact sur les performances, désactivez cette propriété pour les objets avec lesquels l'utilisateur ne sera jamais en interaction.Par exemple, l'environnement de balise laser final désactive cette propriété pour tout le feuillage.

Peut toucher
La propriété BasePart.CanTouch détermine si Touched et TouchEnded événements se déclenchent sur l'objet.Lorsque vous activez cette propriété pour un Part ou MeshPart , le moteur Roblox vérifie l'état de l'événement de toucher de l'objet pour voir s'il doit déclencher ou arrêter un événement.
Ce processus se produit pour chaque cadre, ce qui peut prendre une grande quantité de mémoire si le moteur doit vérifier l'état de l'événement de toucher pour de nombreux objets à la fois.Pour soulager une partie de cet impact sur la mémoire, activez cette propriété uniquement pour les objets qui doivent déclencher un événement.
CanQuery
La propriété BasePart.CanQuery détermine si le moteur Roblox prend en compte l'objet lors des opérations de requête spatiales, telles que le lancer de rayons.Studio active cette propriété pour chaque Part ou MeshPart par défaut, ce qui signifie que le moteur vérifie si chaque objet doit appeler une opération de requête spatiale.Ce processus se produit pour chaque cadre, qui peut prendre une grande quantité de mémoire lorsque le moteur doit effectuer ces vérifications pour de nombreux objets à la fois.
Pour cette raison, il est recommandé de désactiver cette propriété pour les objets que le moteur Roblox n'a pas besoin de prendre en compte pour les opérations de requête spatiales.Lorsque vous décidez où désactiver cette propriété, réfléchissez à l'impact que chaque ressource a sur le partie.Par exemple, l'environnement de balise laser final conserve cette propriété activée pour chaque mur du bâtiment car le moteur doit tenir compte de ces surfaces lorsque les utilisateurs tirent des lasers de leur arme de balise laser.Si le moteur ne tient pas compte de ces ressources, le laser tirerait directement à travers le bâtiment comme s'il n'était pas du tout là.
Ombre de lancement
La propriété BasePart.CastShadow détermine si l'objet projette une ombre.Lorsque vous activez cette propriété pour un Part ou MeshPart , le moteur Roblox calcule chaque emplacement de vertex de l'objet au moment de l'temps d'exécution, puis dessine un raycast du soleil vers l'un de ses objets voisins jusqu'à ce qu'il se heurte à un autre objet pour créer l'ombre.
Ces calculs peuvent avoir un coût de performance, notamment lorsque vous avez de nombreux objets de complexité géométrique.C'est parce que les objets avec une complexité géométrique ont plus de polygones que les objets qui sont géométriquement simples, ce qui signifie qu'ils ont plus de sommets que l'engine doit calculer pour l'ombre de l'objet.Plus il y a moins de polygones dans un objet, plus l'opération est rapide et moins chère son ombre.

Les ombres peuvent fournir un excellent sens du réalisme aux objets avec une profondeur géométrique 3D, donc lorsque vous décidez où désactiver cette propriété, envisagez où les objets fournissent une amélioration visuelle significative de l'environnement et où les utilisateurs remarqueront l'absence de ombres.Par exemple, les ombres complexes du feuillage peuvent fournir un grand sentiment d'immersion dans l'espace extérieur où les utilisateurs sont susceptibles de les voir, mais cette même immersion n'est pas nécessaire pour le feuillage qui pointe à travers le plafond avec lequel les utilisateurs ne vont jamais interagir.


Double face
La propriété MeshPart.DoubleSided détermine si rendre les deux faces ou les polygones dans le maillage.Lorsque vous activez cette propriété pour un planaire MeshPart , comme les feuilles, les cheveux ou les cartes de tissu, le moteur Roblox rend les deux faces ou les polygones dans le maillage pour permettre aux utilisateurs de voir la plénitude de l'objet, peu importe l'angle sous lequel ils regardent l'objet.Par exemple, les feuilles suivantes de l'arbre sont des mailles planes unilatérales, et lorsque vous activez cette propriété, toutes les feuilles qui se trouvent loin de la caméra deviennent visibles pour l'utilisateur.


Cette propriété est utile pour ajouter du réalisme à votre environnement, mais elle a un coût en performance car le moteur doit rendre les polygones de l'objet deux fois : une fois pour la direction qui fait face à la caméra de l'utilisateur, et à nouveau pour tous les mailles qui sont loin de la caméra de l'utilisateur.Pour atténuer une partie de cet impact sur les performances, l'environnement de balise laser final ne permet cette propriété que pour le feuillage car il a un impact visuel fort pour le réalisme dans l'espace 3D.
Fidélité à la collision
La propriété MeshPart.CollisionFidelity détermine à quel point la hitbox physique d'un maillage ou d'une union correspond à sa représentation visuelle.Par défaut, ce paramètre rend une hitbox qui est environ la même que la forme polygonale du maillage, ce qui signifie que l'endroit où les utilisateurs se heurtent à l'objet est similaire à la géométrie réelle du maillage.Par exemple, le maillage du château dans les images suivantes a une hitbox par défaut qui se rapproche presque de la forme de sa géométrie.


Vous pouvez définir cette propriété sur une valeur différente pour réduire la précision de la hitbox d'un maillage.Par exemple, lorsque vous définissez cette propriété à Hull , le moteur Roblox réduit significativement les sommets de la hitbox du maillage, et lorsque vous définissez cette propriété à Boîte , le moteur réduit la hitbox du maillage à un cube qui entoure le maillage.En outre, si vous voulez augmenter la précision de la hitbox d'un maillage, vous pouvez définir cette propriété à précision convexe de décomposition pour augmenter le nombre de sommets dans la hitbox.



Semblable à BasePart.CastShadow, plus il y a de vertex que le moteur Roblox doit rendu, plus le coût de performance est élevé.Pour cette raison, il est important de déterminer comment vous souhaitez que les utilisateurs interagissent avec chaque maillage pour voir si vous pouvez réduire le nombre de vertex dont l'engine a besoin pour rendre la hitbox du maillage.Dans les cas où il n'est pas nécessaire qu'une hitbox soit précise, définissez cette propriété sur Boîte ou Hull .
Pour démontrer ce concept, référez-vous aux images suivantes qui affichent la hitbox de chaque maillage du modèle de mur qui fournit une augmentation d'élévation entre le premier et le deuxième étage du tag laser final de l'environnement d'échantillon.La hitbox par défaut pour le mur principal a beaucoup de géométrie inutile lorsqu'il ne doit fournir qu'une surface pour empêcher l'utilisateur de se déplacer dans cette direction.Si vous définissez la propriété à Boîte pour ce maillage, vous pouvez supprimer cette géométrie redondante tout en conservant le but de la hitbox intacte.



Lorsque vous prenez ces décisions, il est important de tenir compte de la manière dont le changement de la valeur par défaut peut affecter négativement les utilisateurs lorsqu'ils naviguent dans votre environnement.Par exemple, si vous définissez la propriété à boîte pour les mailles de bords du modèlisationde mur, les utilisateurs s'affronteraient avec la hitbox s'ils tentent de sauter près du mur.Au lieu de cela, définissez ces mailles sur Hull afin de réduire le nombre de vertex tout en gardant la hitbox plus proche de la géométrie du maillage.


Notez que il peut être important d'avoir une hitbox qui correspond précisément à la forme de votre maillage, notamment lorsque vous devez contrôler exactement la façon dont les utilisateurs se heurtent à sa forme.Par exemple, dans l'environnement de balise laser final du dernier échantillon, il est important que les utilisateurs ne se heurtent qu'aux bords de l'entrée et non à l'entrée elle-même, sinon ils ne pourraient jamais entrer ou sortir d'une poche de combat.

Rendu de la fidélité
La propriété MeshPart.RenderFidelity détermine le niveau de détail du maillage qui s'affiche à l'utilisateur.Lorsque vous définissez cette propriété à Enum.RenderFidelity.Automatic , le moteur Roblox réduit la fidélité du maillage plus l'utilisateur est éloigné du maillage, et lorsque vous définissez cette propriété à Enum.RenderFidelity.Precise , chaque vertex de votre maillage s'affiche exactement comme vous le souhaitez, peu importe la distance entre eux.
Plus il y a d'objets que le moteur doit rendre précisément à l'utilisateur à partir de n'importe quelle distance, notamment s'ils ont un nombre de vertex élevé, plus le coût de performance est élevé.Pour atténuer une partie de cet impact sur les performances, définissez cette propriété à Enum.RenderFidelity.Performance pour les objets complexes géométriquement, tels que les feuilles dans la bibliothèque de ressources d'échantillon, car ils n'ont pas besoin d'être affichés dans leur intégralité à partir d'une distance pour toute exigence de jeu.Cela réduit le nombre de polygones de votre expérience sans sacrifier la qualité visuelle globale.
Convertir les ressources en packages
Maintenant que toutes vos ressources modulaires sont dans Studio avec des paramètres de rendu configurés pour conserver leur qualité visuelle élevée pour tous les utilisateurs, il est temps de les convertir en packages.Il est important de convertir vos ressources en packages car cela vous permet de les réutiliser à plusieurs reprises tout au long de votre expérience actuelle et d'autres projets.En outre, vous pouvez facilement faire des modifications à un paquet qui se remplit instantanément à toutes ses instances, ce qui vous fait gagner beaucoup de temps dans le processus d'itération.
Parce que vos objets SurfaceAppearance sont déjà des packages, lorsque vous convertissez vos objets Model en packages, ils deviennent des packages imbriqués.Les packages imbriqués vous permettent de maintenir des hiérarchies complexes d'objets enfants que vous pouvez modifier indépendamment du paquet d'objets Model.Cela vous permet un plus grand contrôle sur les composants individuels de vos ressources.

Pour convertir vos ressources modulaires et vos props en packages :
Dans la fenêtre Explorateur , faites un clic droit sur une ressource modulaire ou un pièce de décoration, puis sélectionnez Convertir en paquet dans le menu contextuel.La convertir en paquet boîte de dialogue s'affiche.
Remplissez les champs titre et description , définissez la propriété à vous-même ou à un groupe, puis cliquez sur le bouton soumettre .Une fois terminé, un symbole de lien de chaîne s'affiche sur l'icône du modèlisationpour l'identifier comme un paquet.
Répétez ce processus pour chaque ressource modulaire et pièce de décoration.
Une fois que vous êtes satisfait de la disposition globale de votre bibliothèque de ressources, vous pouvez passer à la décoration de l'environnement avec vos ressources nouvellement polies et configurer des éléments supplémentaires de l'espace 3D pour apporter votre monde à la vie.