Un canal UV est un ensemble de données au sein d'un maillage statique qui permet de faire correspondre chacun des vertex du maillage sur des coordonnées dans l'espace 2D. Ces texturages définissent la manière dont les textures 2D s'enveloppent autour de la géométrie 3D lors du rendu du maillage.
Vous créez et gérez généralement vos texturages UV dans un outil de modélisation dédié, c'est-à-dire l'outil que vous utilisez pour créer la géométrie de votre maillage statique. Cependant, l'Unreal Editor offre diverses possibilités pour utiliser les canaux UV de vos modèles, que nous vous décrivons dans cette page.
Les canaux UV ont deux objectifs principaux dans l'Unreal Engine :
-
Coordonnées de texture dans les matériaux : lorsque vous créez un matériau qui échantillonne une texture et l'applique à la surface d'un maillage statique, vous pouvez utiliser un nœud de coordonnées de texture (ou Texcoord) pour spécifier un canal UV. Le matériau utilise le texturage entre les coordonnées 2D et les positions de vertex 3D contenues dans le canal UV sélectionné pour déterminer les zones de la texture devant être utilisées pour ombrer des triangles spécifiques dans le modèle 3D.
Par exemple, le canal UV 0 dans ce maillage statique de plan simple (illustré en haut à droite de l'image suivante) montre la manière la plus simple de faire correspondre les deux triangles du maillage (A et B) dans l'espace de texture. Lorsque vous utilisez ce canal UV (défini par la propriété Index de coordonnées du nœud TexCoord), le matériau applique la largeur et la hauteur complètes d'une texture au plan.
Cliquez sur l'image pour l'afficher à taille réelle.
D'autre part, l'image ci-dessous illustre le canal UV 1, qui fait pivoter et incline le texturage entre les triangles et l'espace de texture UV. Lorsque la même texture d'image est appliquée au maillage statique, elle modifie les parties de la texture appliquées aux parties spécifiques du maillage statique.
Cliquez sur l'image pour l'afficher à taille réelle.
Les triangles dans le texturage d'UV peuvent se chevaucher. Un chevauchement signifie simplement que la même partie de la texture est appliquée à plusieurs parties de la géométrie du maillage statique 3D.
Le U dans « canal UV » désigne l'axe horizontal de la texture et le V désigne l'axe vertical. Les coordonnées de texture sont généralement définies entre 0 et 1, où (0,0) représente le coin inférieur gauche de la texture et (1,1) le coin supérieur droit, bien qu'il existe des exceptions à cette règle. Par défaut, lorsqu'une valeur U ou V dépasse 1 ou est inférieure à 0, le matériau est « enveloppé » autour du côté opposé de la texture. Par exemple, une valeur V de 1,25 est généralement traitée comme une valeur 0,25. Cependant, vous pouvez choisir de limiter ces valeurs dans votre matériau en définissant une valeur minimale de 0 et une valeur maximale de 1.
-
Textures de lumière : les canaux UV servent également à stocker et à appliquer des textures de lumière. Une texture de lumière est un type spécial de texture qui stocke des informations d'éclairage précalculées pour les maillages statiques. Lorsque votre niveau comporte des lumières dont le paramètre de mobilité est défini sur Fixe ou Statique, et que vous créez l'éclairage de votre niveau, l'outil Lightmass enregistre l'éclairage indirect (et l'éclairage direct pour les lumières statiques) dans des textures de lumière, en utilisant un canal UV pour déterminer le texturage entre la géométrie 3D du maillage statique et l'espace de texture 2D.
Les canaux UV utilisés pour les textures de lumière doivent obéir à certaines règles spéciales. Étant donné que chaque partie d'un objet reçoit généralement des quantités d'éclairage différentes, aucun triangle du maillage ne peut se chevaucher dans l'espace de texture 2D. Chaque triangle doit couvrir sa propre zone dans la texture. Par ailleurs, toutes les valeurs de coordonnées UV doivent être comprises entre 0 et 1. Les textures de lumière ne peuvent pas « s'envelopper » de la même manière que les textures classiques. Pour ces raisons, les UV de texture de lumière sont généralement générés (ou empaquetés) à partir de texturages d'UV plus simples.
Par exemple, le canal UV de texturage de ce pilier fait correspondre la géométrie de chacun des quatre côtés aux mêmes zones de chevauchement de la texture. Lorsque vous utilisez ce canal UV pour appliquer une texture à la géométrie, chacun des côtés utilise les mêmes parties de la texture.
Cliquez sur l'image pour l'afficher à taille réelle.
Cependant, dans l'UV de texture de lumière de l'objet, chaque côté doit couvrir sa propre zone unique d'espace 2D :
Cliquez sur l'image pour l'afficher à taille réelle.
Pour en savoir plus sur les UV de texture de lumière et comment les générer, consultez les rubriques Comprendre le texturage de lumière dans l'Unreal Engine et Générer des UV de texture de lumière.
Chaque maillage statique de l'Unreal Engine peut avoir jusqu'à sept canaux UV différents, ce qui vous permet de configurer diverses méthodes pour envelopper des textures en fonction des matériaux (ou en fonction des nœuds d'échantillonnage de texture au sein d'un matériau unique).
Canaux UV dans l'éditeur de maillage statique
Dans l'interface utilisateur de l'éditeur de maillage statique, vous pouvez répertorier, visualiser et supprimer les canaux UV.
Répertorier les canaux UV
Si vous avez ouvert une ressource de maillage statique dans l'éditeur de maillage statique, vous pouvez utiliser le bouton UV de la barre d'outils pour répertorier tous les canaux UV utilisés par le maillage statique actuel.
Cliquez sur l'image pour l'afficher à taille réelle.
Visualiser un canal UV
Sélectionnez n'importe quel canal UV dans la liste pour visualiser le texturage des triangles du maillage dans l'espace de texture 2D de manière superposée dans le hublot :
Cliquez sur l'image pour l'afficher à taille réelle.
Sélectionnez Aucun en haut de la liste pour masquer la superposition d'UV.
Supprimer un canal UV
Après avoir sélectionné un canal dans la liste, vous pouvez le supprimer. Étant donné que chaque canal UV stocke les coordonnées de texture de chaque vertex dans le cadre du maillage statique, vous pouvez économiser de la mémoire lors de l'exécution en supprimant tous les texturages que vous n'utilisez pas.
Cliquez sur l'image pour l'afficher à taille réelle.
Cliquez sur l'image pour l'afficher à taille réelle.
Tous les autres canaux UV présents dans la liste après la suppression du canal sont déplacés d'une position vers le haut pour remplir l'espace vide laissé par la suppression du canal.
Cliquez sur l'image pour l'afficher à taille réelle.
Vous ne pouvez pas supprimer un canal UV si votre ressource de maillage statique est configurée pour générer des UV de texture de lumière et que le canal UV que vous avez sélectionné est déjà utilisé comme canal source ou de destination pour les UV de texture de lumière. Désactivez l'option Paramètres de génération > Générer les UV de la texture de lumière ou modifiez les paramètres Paramètres de génération > Index de la texture de lumière source et Paramètres de génération > Index de la texture de lumière de destination pour pointer vers différents canaux UV.
Créer des texturages d'UV
Lorsqu'un matériau utilise des textures comme données sources pour ses canaux (comme sa couleur de base, sa texture de normale, sa rugosité, etc.), il fait généralement appel au texturage des UV du modèle pour déterminer quelles parties de ces textures s'enroulent autour de quelles parties de la géométrie. Par conséquent, lorsqu'un modèle ne possède pas de texturage des UV ou que ses texturages des UV sont incorrectement disposés, des problèmes visibles apparaissent fréquemment si vous tentez d'utiliser un matériau texturé. Par exemple, si le texturage des UV comporte de nombreuses jointures (emplacements où les triangles adjacents sur la géométrie du maillage ne sont pas adjacents dans le texturage des UV), la texture présente un joint visible au niveau de ces jointures. Par ailleurs, si votre texturage des UV attribue des zones de l'espace UV de manière inégale aux triangles du maillage (de sorte que les grands triangles du maillage sont mappés sur de petites zones de la texture ou vice-versa), la texture semble étirée ou déformée sur différentes parties du maillage.
Pour obtenir de meilleurs résultats artistiques, vous devez essayer de créer les texturages d'UV pour vos objets 3D dans un outil de modélisation dédié. Cependant, cela n'est pas toujours possible. Par exemple, lorsque vous importez des données à partir de certains types d'applications de modélisation de CAO dans l'Unreal Engine, il est probable que vous ne puissiez pas créer un texturage des UV de haute qualité dans votre application source. Dans ces cas, vous pouvez créer des texturages des UV dans l'Unreal Editor.
L'Unreal Editor propose deux manières de créer des texturages des UV pour un maillage statique :
Configuration du projet : Pour utiliser l'une des méthodes de génération de canaux UV décrites ci-dessous, vous devez installer le plug-in UV Editor pour votre projet Unreal Engine.
Cliquez sur l'image pour l'afficher à taille réelle.
Option 1 : Déballer la géométrie du maillage
Dans cette approche, les triangles qui composent la géométrie de votre maillage statique sont automatiquement dépliés et aplanis. La surface des triangles est automatiquement ajustée pour préserver la contiguïté des triangles voisins, et des jointures sont introduites partout où l'angle entre les surfaces adjacentes dépasse un seuil que vous définissez.
Pour déballer un maillage statique dans un nouveau texturage des UV :
-
Choisissez le maillage statique que vous souhaitez déballer et effectuez l'une des opérations suivantes :
-
Faites un clic droit sur votre maillage statique dans le navigateur de contenu et sélectionnez Déballer les UV dans le menu contextuel.
Cliquez sur l'image pour l'afficher à taille réelle.
-
Ouvrez le maillage statique que vous souhaitez générer dans l'éditeur de maillage statique. Ensuite, dans la barre d'outils de l'éditeur de maillage statique, sélectionnez UV > Déballer les UV.
Cliquez sur l'image pour l'afficher à taille réelle.
Si aucune des options de menu n'apparaît, assurez-vous d'avoir activé le plug-in Polygon Editing pour votre projet.
-
-
Définissez les paramètres pour contrôler les résultats du déballage :
Cliquez sur l'image pour l'afficher à taille réelle.
Paramètre Description Sélection du canal Détermine la façon dont le processus de déballage choisit le canal dans lequel enregistrer le nouveau texturage des UV.
- Configuration automatique de la texture de lumière : enregistre le texturage des UV déballé dans le canal défini pour ce maillage statique comme source des UV de texture de lumière, puis génère de nouveaux UV de texture de lumière à partir du nouveau texturage des UV.
- Premier canal vide : enregistre le texturage des UV déballé dans le premier canal UV vide du maillage statique.
- Spécifier le canal : choisissez cette option pour spécifier un index de canal dans le paramètre UVChannel.
Canal UV Lorsque l'option Sélection du canal est définie sur Spécifier le canal, utilisez ce paramètre pour déterminer l'index du canal UV dans lequel l'UV déballé est enregistré. Seuil d'angle Détermine l'angle maximal entre deux faces adjacentes pour que ces faces restent connectées après le déballage. L'augmentation de cette valeur minimise le nombre d'« îles » UV séparées, en conservant davantage de triangles connectés à leurs voisins et en réduisant le nombre de jointures susceptibles de provoquer des ruptures dans le texturage. Cependant, cela peut également introduire davantage de distorsion dans les textures enveloppées, car il est possible que les triangles doivent être redimensionnés de manière plus agressive dans l'espace 2D afin de rester connectés à leurs voisins. -
Cliquez sur Continuer.
Option 2 : Projeter la géométrie du maillage dans un canal UV
Vous pouvez projeter la géométrie 3D de votre maillage statique dans un espace de texture 2D à l'aide d'un volume de projection, à savoir un plan, une boîte ou une sphère. Dans cette approche, chaque face de votre maillage statique est projetée vers l'extérieur sur les faces du volume de projection, puis le volume de projection est déballé dans l'espace de texture 2D.
-
Ouvrez le maillage statique que vous souhaitez générer dans l'éditeur de maillage statique.
Par exemple, double-cliquez sur la ressource de maillage statique dans le navigateur de contenu.
-
Dans la barre d'outils de l'éditeur de maillage statique, sélectionnez UV > Générer les UV.
Si cette option de menu n'est pas disponible, assurez-vous d'activer le plug-in Polygon Editing pour votre projet.
-
Le panneau Générer les UV s'affiche, offrant un ensemble de commandes qui vous aident à contrôler les résultats de la projection UV.
Cliquez sur l'image pour l'afficher à taille réelle.
Par ailleurs, un volume vert apparaît autour de votre maillage statique dans le hublot, avec un gadget de manipulateur standard d'Unreal Editor.
Si le volume et le manipulateur n'apparaissent pas au début, activez le bouton Afficher le gadget en bas du panneau Générer les UV.
-
Dans le paramètre Type de projection, choisissez le volume qui correspond le mieux aux dimensions de votre maillage statique.
-
Ajustez la taille, la position et la rotation du volume pour qu'elles correspondent à l'étendue de votre maillage statique.
Pour ce faire, vous pouvez utiliser le manipulateur dans le hublot ou les champs de texte dans le panneau Générer les UV. Vous pouvez en outre utiliser le bouton Ajuster pour que le volume s'adapte automatiquement aux longueurs de la géométrie du maillage statique.
-
Dans le paramètre Canal cible, définissez l'index du canal dans lequel vous souhaitez enregistrer le texturage des UV projeté.
La plupart des matériaux obtiennent des coordonnées de texture auprès du canal 0. Si vous générez un texturage des UV pour améliorer le mode de texturage autour de votre géométrie de maillage statique, vous devez généralement définir
0dans ce champ. -
Cliquez sur Appliquer pour générer le texturage des UV et l'enregistrer dans le canal cible dans le maillage statique.
Dans le tableau suivant, nous vous présentons tous les paramètres du panneau Générer les UV :
| Paramètre | Description |
|---|---|
| Type de projection | Volume sur lequel la géométrie du maillage statique est projetée. |
| Taille | Dimensions du volume de projection. |
| Position | Position du volume de projection par rapport au point de pivot du maillage statique. |
| Rotation | Rotation du volume de projection par rapport au point de pivot du maillage statique. |
| Échelle de répétition des UV | Échelle de la projection dans l'espace UV. Des valeurs supérieures augmentent la projection dans l'espace de texture, ce qui produit des détails de texture plus petits lorsqu'ils s'enroulent autour de la surface du maillage. |
| Décalage UV | Contrôle le placement de la projection dans l'espace de texture 2D. Des valeurs inférieures sur l'axe X déplacent la projection vers la gauche dans le texturage des UV ; des valeurs supérieures déplacent la projection vers la droite. Des valeurs inférieures sur l'axe Y déplacent la projection vers le haut dans le texturage des UV ; des valeurs supérieures déplacent la projection vers le bas. |
| Canal cible | Index du canal UV où la projection est enregistrée. Il peut s'agir du même canal que celui utilisé par l'éditeur de maillage statique pour stocker les UV de texture de lumière générés. Si le canal cible contient déjà des données, l'Unreal Editor demande une confirmation avant de continuer. |
| Afficher le gadget | Active/désactive le rendu du volume de projection et du gadget du manipulateur dans le hublot. |
| Appliquer | Génère la projection des UV selon les paramètres ci-dessus et enregistre le résultat dans le canal cible. |
| Ajuster | Adapte la taille du volume de projection de sorte à englober la totalité de la géométrie du maillage statique. |
Canaux UV dans le plug-in Editor Scripting
Vous pouvez également utiliser les canaux UV dans les scripts Blueprint et Python que vous exécutez dans l'Unreal Editor. Vous pouvez non seulement utiliser toutes les fonctionnalités de l'éditeur de maillage statique, mais pouvez également ajouter de nouveaux canaux et générer de nouveaux texturages des UV.
Condition préalable : si cela n'est pas déjà fait, installez le plug-in Editor Scripting Utilities. Pour en savoir plus, consultez la page Rédaction de scripts et automatisation de l'éditeur.
Les nœuds dont vous avez besoin pour gérer les canaux UV se trouvent dans la catégorie Editor Scripting > Maillage statique.
Pour utiliser ces nœuds, votre classe de blueprint doit être dérivée d'une classe exclusive à l'éditeur, telle que la classe PlacedEditorUtilityBase. Pour en savoir plus, consultez la page Rédaction de scripts de l'éditeur à l'aide de Blueprints.
Toutes ces fonctions sont disponibles avec une ressource de maillage statique, que vous devrez généralement charger en appelant le nœud Editor Scripting > Bibliothèque de ressources > Load Asset.
La modification des canaux UV modifie la ressource. En supposant que vous souhaitiez conserver les modifications que vous apportez, vous devez également utiliser un nœud tel que Editor Scripting > Bibliothèque de ressources > Save Asset ou Save Loaded Asset par la suite. Consultez les exemples ci-dessous.
Dresser la liste des canaux UV
Vous pouvez utiliser le nœud Get Num UV Channels pour déterminer le nombre de canaux UV qui existent actuellement dans une ressource de maillage statique donnée.
Par exemple :
Cliquez sur l'image pour l'afficher à taille réelle.
Supprimer un canal UV
Étant donné que chaque canal UV stocke les coordonnées de texture de chaque vertex dans le cadre du maillage statique, vous pouvez économiser de la mémoire lors de l'exécution en supprimant tous les texturages que vous n'utilisez pas.
Pour supprimer un canal UV, appelez le nœud Remove UV Channel. Transmettez-lui la ressource de maillage statique et l'index du canal UV que vous souhaitez supprimer.
Par exemple :
Cliquez sur l'image pour l'afficher à taille réelle.
Tous les autres canaux UV déjà présents dans la liste après l'index spécifié sont déplacés d'une position vers le haut pour remplir l'espace vide laissé par l'entrée supprimée.
Vous ne pouvez pas supprimer un canal UV si votre ressource de maillage statique est configurée pour générer des UV de texture de lumière et que le canal UV que vous avez sélectionné est déjà utilisé comme canal source ou de destination pour les UV de texture de lumière. Désactivez l'option Paramètres de génération > Générer les UV de texture de lumière ou modifiez les paramètres Paramètres de génération > Index de la texture de lumière source et Paramètres de génération > Index de la texture de lumière de destination pour pointer vers différents canaux UV.
Ajouter un nouveau canal UV
Vous pouvez ajouter un nouveau canal UV à votre ressource de maillage statique en appelant l'un des nœuds suivants :
- Add UV Channel - Ajoute le nouveau canal à la fin de la liste de canaux existante.
- Insert UV Channel - Ajoute le nouveau canal à l'index que vous spécifiez, en déplaçant chaque autre canal UV d'un numéro vers le bas dans la liste. Notez que la matrice des canaux UV ne peut pas être disséminée : vous ne pouvez insérer un nouveau canal qu'à une position dans la liste qui se trouve à la suite d'un autre canal existant. Par exemple, si la liste comporte trois canaux UV (index 0, 1 et 2), vous pouvez en ajouter un nouveau avec l'index 3, mais pas avec l'index 4.
Cliquez sur l'image pour l'afficher à taille réelle.
Le nouveau texturage est vide. Vous souhaitez le remplir d'une manière ou d'une autre avant de l'utiliser, soit en projetant la géométrie du maillage (voir ci-dessous), soit en l'utilisant comme destination pour la génération de textures de lumière.
Déballer la géométrie du maillage dans un canal UV
Vous pouvez créer de nouveaux texturages des UV en laissant l'éditeur de maillage statique déplier et aplanir automatiquement les triangles qui composent votre géométrie de maillage statique. La surface des triangles est automatiquement ajustée pour préserver la contiguïté des triangles voisins, et des jointures sont introduites partout où l'angle entre les surfaces adjacentes dépasse un seuil que vous définissez.
Configuration du projet : Pour utiliser la méthode de génération de canaux UV décrite ci-dessous, vous devez installer le plug-in Polygon Editing pour votre projet Unreal Engine.
Utilisez le nœud Generate Unwrapped UVs. Vous devez attribuer à ce nœud :
- une référence à la ressource de maillage statique que vous souhaitez modifier ;
- l'index du canal UV où vous souhaitez que l'UV déballé soit enregistré (si ce canal n'existe pas encore, le processus de déballage le crée) ;
- l'angle maximal entre deux faces adjacentes pour que ces faces restent connectées après le déballage. L'augmentation de cette valeur minimise le nombre d'« îles » UV séparées, en conservant davantage de triangles connectés à leurs voisins et en réduisant le nombre de jointures susceptibles de provoquer des ruptures dans le texturage. Cependant, cela peut également introduire davantage de distorsion dans les textures enveloppées, car il est possible que les triangles doivent être redimensionnés de manière plus agressive dans l'espace 2D afin de rester connectés à leurs voisins.
Par exemple :
Cliquez sur l'image pour l'afficher à taille réelle.
Projeter la géométrie du maillage dans un canal UV
Vous pouvez créer de nouveaux texturages des UV en projetant les triangles du maillage statique sur un plan 2D ou un simple volume 3D.
Chacun des nœuds décrits ci-dessous enregistre le texturage des UV qu'il crée dans un canal UV que vous spécifiez. Ce canal UV doit déjà exister ; s'il n'existe pas, la fonction ne le crée pas.
Projection planaire
Utilisez le nœud Generate Planar UV Channel pour projeter votre géométrie de maillage statique sur un plan. Utilisez ce type de projection si un seul côté de votre maillage statique doit être entouré de textures.
Par exemple :
Cliquez sur l'image pour l'afficher à taille réelle.
Projection cylindrique
Utilisez le nœud Generate Cylindrical UV Channel pour projeter votre géométrie de maillage statique sur les côtés, le haut et le bas d'un cylindre.
Par exemple :
Cliquez sur l'image pour l'afficher à taille réelle.
Projection de boîte
Utilisez le nœud Generate Box UV Channel pour projeter votre géométrie de maillage statique sur les faces d'un cube.
Par exemple, le script suivant crée une boîte de la même taille approximative que le maillage statique, puis crée un nouveau texturage des UV en projetant la géométrie du maillage statique sur les côtés de cette boîte :
Cliquez sur l'image pour l'afficher à taille réelle.
Les fonctions de gestion de LOD se trouvent dans la classe unreal.EditorStaticMeshLibrary.
Toutes ces fonctions sont disponibles avec une ressource de maillage statique, que vous devez généralement charger en appelant une fonction comme unreal.EditorAssetLibrary.load_asset.
La modification des canaux UV modifie la ressource. En supposant que vous souhaitiez conserver les modifications que vous apportez, vous devez également utiliser une fonction comme unreal.EditorAssetLibrary.save_asset ou unreal.EditorAssetLibrary.save_loaded_asset par la suite.
Dresser la liste des canaux UV
Vous pouvez utiliser la fonction unreal.EditorStaticMeshLibrary.get_num_uv_channels pour déterminer le nombre de canaux UV qui existent actuellement dans une ressource de maillage statique donnée.
Par exemple :
import unreal
asset_name = '/Game/Path/MyStaticMeshAsset'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Obtenir le nombre de canaux UV enregistrés dans la ressource.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
print("Number of UV channels: " + str(num_uv_channels))
Supprimer un canal UV
Étant donné que chaque canal UV stocke les coordonnées de texture de chaque vertex dans le cadre du maillage statique, vous pouvez économiser de la mémoire lors de l'exécution en supprimant tous les texturages que vous n'utilisez pas.
Pour supprimer un canal UV, appelez la fonction unreal.EditorStaticMeshLibrary.remove_uv_channel. Transmettez-lui la ressource de maillage statique et l'index du canal UV que vous souhaitez supprimer.
Par exemple :
import unreal
asset_name = '/Game/Path/MyStaticMeshAsset'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Obtenir le nombre de canaux UV enregistrés dans la ressource.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
# Supprimez le dernier de la liste.
channel_to_remove = num_uv_channels - 1
unreal.EditorStaticMeshLibrary.remove_uv_channel(asset_name, channel_to_remove)
# Enregistrez la ressource modifiée.
unreal.EditorAssetLibrary.save_asset(asset_name)
Tous les autres canaux UV déjà présents dans la liste après l'index spécifié sont déplacés d'une position vers le haut pour remplir l'espace vide laissé par l'entrée supprimée.
Vous ne pouvez pas supprimer un canal UV si votre ressource de maillage statique est configurée pour générer des UV de texture de lumière et que le canal UV que vous avez sélectionné est déjà utilisé comme canal source ou de destination pour les UV de texture de lumière. Désactivez l'option **Paramètres de génération > **Générer les UV de la texture de lumière ou modifiez les paramètres Paramètres de génération > Index de la texture de lumière source et Paramètres de génération > Index de la texture de lumière de destination pour pointer vers différents canaux UV.
Ajouter un nouveau canal UV
Vous pouvez ajouter un nouveau canal UV à votre ressource de maillage statique en appelant l'une des fonctions suivantes :
unreal.EditorStaticMeshLibrary.add_uv_channel- Ajoute le nouveau canal à la fin de la liste de canaux existante.unreal.EditorStaticMeshLibrary.insert_uv_channel- Ajoute le nouveau canal à l'index que vous spécifiez, en déplaçant chaque autre canal UV d'un numéro vers le bas dans la liste. Notez que la matrice des canaux UV ne peut pas être disséminée : vous ne pouvez insérer un nouveau canal qu'à une position dans la liste qui se trouve à la suite d'un autre canal existant. Par exemple, si la liste comporte trois canaux UV (index 0, 1 et 2), vous pouvez en ajouter un nouveau avec l'index 3, mais pas avec l'index 4.
Par exemple :
import unreal
asset_name = '/Game/Path/MyStaticMeshAsset'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Obtenir le nombre de canaux UV enregistrés dans la ressource.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
print("Number of UV channels before: " + str(num_uv_channels))
# Ajoutez-en un à la fin de la liste.
unreal.EditorStaticMeshLibrary.add_uv_channel(asset_name)
# Ajoutez-en un au début de la liste.
unreal.EditorStaticMeshLibrary.insert_uv_channel(asset_name, 0)
# Obtenez le nouveau nombre de canaux UV enregistrés dans la ressource.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
print("Number of UV channels after: " + str(num_uv_channels))
# Enregistrez la ressource modifiée.
unreal.EditorAssetLibrary.save_asset(asset_name)
Le nouveau texturage est vide. Vous souhaitez le remplir d'une manière ou d'une autre avant de l'utiliser, soit en projetant la géométrie du maillage (voir ci-dessous), soit en l'utilisant comme destination pour la génération de textures de lumière.
Déballer la géométrie du maillage dans un canal UV
Vous pouvez créer de nouveaux texturages des UV en laissant l'éditeur de maillage statique déplier et aplanir automatiquement les triangles qui composent votre géométrie de maillage statique. La surface des triangles est automatiquement ajustée pour préserver la contiguïté des triangles voisins, et des jointures sont introduites partout où l'angle entre les surfaces adjacentes dépasse un seuil que vous définissez.
Configuration du projet : Pour utiliser la méthode de génération de canaux UV décrite ci-dessous, vous devez installer le plug-in Polygon Editing pour votre projet Unreal Engine.
Utilisez la fonction unreal.UVGenerationFlattenMapping.generate_flatten_mapping_u_vs() . Transmettez-lui :
- une référence à la ressource de maillage statique que vous souhaitez modifier ;
- l'index du canal UV où vous souhaitez que l'UV déballé soit enregistré (si ce canal n'existe pas encore, le processus de déballage le crée) ;
- l'angle maximal, en degrés, entre deux faces adjacentes pour que ces faces restent connectées après le déballage. L'augmentation de cette valeur minimise le nombre d'« îles » UV séparées, en conservant davantage de triangles connectés à leurs voisins et en réduisant le nombre de jointures susceptibles de provoquer des ruptures dans le texturage. Cependant, cela peut également introduire davantage de distorsion dans les textures enveloppées, car il est possible que les triangles doivent être redimensionnés de manière plus agressive dans l'espace 2D afin de rester connectés à leurs voisins.
Par exemple :
import unreal
asset_name = '/Game/Meshes/StaticMesh'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Spécifiez le canal UV dans lequel enregistrer.
channel_index = 2
# Définissez le seuil d'angle.
angle_threshold = 55
# Déballez le maillage dans le canal UV.
unreal.UVGenerationFlattenMapping.generate_flatten_mapping_u_vs(loaded_asset, channel_index, angle_threshold)
# Enregistrez la ressource modifiée.
unreal.EditorAssetLibrary.save_asset(asset_name)
Projeter la géométrie du maillage dans un canal UV
Vous pouvez créer de nouveaux texturages des UV en projetant les triangles du maillage statique sur un plan 2D ou un simple volume 3D.
Ces éléments ne sont actuellement exposés que dans les API de script de l'Unreal Editor et non dans l'interface utilisateur de l'éditeur de maillage statique. Cependant, le processus et les paramètres requis par l'API sont plus faciles à comprendre si vous êtes familiarisé avec les outils visuels de projection de maillage, tels que ceux disponibles dans 3ds Max. Consultez la page Modificateur Texture UVW dans l'aide de 3ds Max pour en savoir plus.
Chacune des fonctions décrites ci-dessous enregistre le texturage des UV qu'elle crée dans un canal UV que vous spécifiez. Ce canal UV doit déjà exister ; s'il n'existe pas, la fonction ne le crée pas.
Projection planaire
Utilisez la fonction unreal.EditorStaticMeshLibrary.generate_planar_uv_channel pour projeter votre géométrie de maillage statique sur un plan. Utilisez ce type de projection si un seul côté de votre maillage statique doit être entouré de textures.
Par exemple :
import unreal
asset_name = '/Game/Path/MyStaticMeshAsset'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Spécifiez le LOD à projeter.
lod_index = 0
# Ajoutez un nouveau canal UV pour votre projection.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
unreal.EditorStaticMeshLibrary.add_uv_channel(asset_name)
channel_index = num_uv_channels
# Configurez le plan de projection, ou « gadget ».
bbox = loaded_asset.get_bounding_box()
gizmo_pos = ((bbox.min + bbox.max) * 0.5) # Recherchez le centre de la boîte englobante de l'objet.
# Définissez les angles de rotation, en degrés.
tangage = 0 # Autour de l'axe X
lacet = 0 # Autour de l'axe Y
roulis = 0 # Autour de l'axe Z
gizmo_orientation = unreal.Rotator(pitch, yaw, roll)
# Augmentez ou diminuez les valeurs pour agrandir ou réduire la projection.
tiling = unreal.Vector2D(1, 1)
# Projetez la géométrie du maillage statique dans le canal UV.
unreal.EditorStaticMeshLibrary.generate_planar_uv_channel(loaded_asset, lod_index, channel_index, gizmo_pos, gizmo_orientation, tiling)
# Enregistrez la ressource modifiée.
unreal.EditorAssetLibrary.save_asset(asset_name)
Projection cylindrique
Utilisez la fonction unreal.EditorStaticMeshLibrary.generate_cylindrical_uv_channel pour projeter votre géométrie de maillage statique sur les côtés, le haut et le bas d'un cylindre.
Par exemple :
import unreal
asset_name = '/Game/Path/MyStaticMeshAsset'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Spécifiez le LOD à projeter.
lod_index = 0
# Ajoutez un nouveau canal UV pour votre projection.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
unreal.EditorStaticMeshLibrary.add_uv_channel(asset_name)
channel_index = num_uv_channels
# Configurez le cylindre de projection, ou « gadget ».
bbox = loaded_asset.get_bounding_box()
gizmo_pos = ((bbox.min + bbox.max) * 0.5) # Recherchez le centre de la boîte englobante de l'objet.
# Définissez les angles de rotation, en degrés.
tangage = 0 # Autour de l'axe X
lacet = 0 # Autour de l'axe Y
roulis = 0 # Autour de l'axe Z
gizmo_orientation = unreal.Rotator(pitch, yaw, roll)
# Augmentez ou diminuez les valeurs pour agrandir ou réduire la projection.
tiling = unreal.Vector2D(1, 1)
# Projetez la géométrie du maillage statique dans le canal UV.
unreal.EditorStaticMeshLibrary.generate_cylindrical_uv_channel(teapot, lod_index, channel_index, gizmo_pos, gizmo_orientation, tiling)
# Enregistrez la ressource modifiée.
unreal.EditorAssetLibrary.save_asset(asset_name)
Projection de boîte
Utilisez la fonction unreal.EditorStaticMeshLibrary.generate_box_uv_channel pour projeter votre géométrie de maillage statique sur les faces d'un cube.
Par exemple, le script suivant crée une boîte de la même taille approximative que le maillage statique, puis crée un nouveau texturage des UV en projetant la géométrie du maillage statique sur les côtés de cette boîte :
import unreal
asset_name = '/Game/Path/MyStaticMeshAsset'
# Chargez la ressource de maillage statique.
loaded_asset = unreal.EditorAssetLibrary.load_asset(asset_name)
# Spécifiez le LOD à projeter.
lod_index = 0
# Ajoutez un nouveau canal UV pour votre projection.
num_uv_channels = unreal.EditorStaticMeshLibrary.get_num_uv_channels(asset_name)
unreal.EditorStaticMeshLibrary.add_uv_channel(asset_name)
channel_index = num_uv_channels
# Configurez le volume de projection, ou « gadget ».
bbox = loaded_asset.get_bounding_box()
gizmo_pos = ((bbox.min + bbox.max) * 0.5) # Recherchez le centre de la boîte englobante de l'objet.
# Définissez les angles de rotation, en degrés.
tangage = 0 # Autour de l'axe X
lacet = 0 # Autour de l'axe Y
roulis = 0 # Autour de l'axe Z
gizmo_orientation = unreal.Rotator(pitch, yaw, roll)
# Obtenez la taille de la boîte.
gizmo_size = bbox.max - bbox.min
# Projetez la géométrie du maillage statique dans le canal UV.
unreal.EditorStaticMeshLibrary.generate_box_uv_channel(box, channel_index, lod_index, gizmo_pos, gizmo_orientation, gizmo_size)
# Enregistrez la ressource modifiée.
unreal.EditorAssetLibrary.save_asset(asset_name)