Héritage dans les graphes Substance
Cette page décrit l’application de l’héritage dans les graphes de Substance dans Substance 3D Designer et son impact sur la sortie du graphe.
Vue d’ensemble
Tous les nœuds d’un graphe de Substance peuvent hériter de la valeur de certains paramètres d’une source. Héritage signifie que la modification de la valeur dans la source effectuera cette modification sur tous les nœuds qui en héritent. C’est l’un des concepts fondamentaux qui sous-tendent la capacité de Substance 3D Designer à générer des ressources paramétriques.
méthodes d’Héritage
Les méthodes d’Héritage sont appliquées pour les paramètres de base d’un nœud, qui sont l’ensemble de paramètres communs à tous les nœuds qui contrôlent les aspects fondamentaux de leur comportement. Ces paramètres sont les suivants :
- Taille de sortie
- Format de sortie (c’est-à-dire, profondeur de bits)
- Taille De Pixel
- Rapport Pixel
- Mode de répétition
- Générateur aléatoire
Cela devrait vous permettre d’évaluer l’impact que les modifications apportées au nœud one peuvent avoir sur la résolution, la précision et le comportement de répétition de tous les nœuds en aval de celui-ci.
Par exemple, deux nœuds de bruit Perlin dans un même graphe sont des représentations d'un graphe source identique (
perlin_noise dans noise_perlin_noise.sbs) avec leurs propres ensembles de valeurs de paramètre.
Valeur de départ aléatoire : utilisez le bouton
Apporter des modifications
Modification des méthodes d’héritage
Dans le panneau Propriétés, tous les paramètres répertoriés dans la section Paramètres de base des propriétés d’un nœud disposent d’un bouton déroulant Définir la méthode d’héritage (icône) en regard de leur libellé.
Ce bouton permet de sélectionner la méthode d’héritage à utiliser pour un paramètre.
Dans la plupart des cas, les paramètres de base d’un nœud sont définis sur Relatif à l’entrée, pour tirer parti du comportement procédural de l’enchaînement des nœuds, tandis que les paramètres de base d’un graphe sont définis sur Relatif au parent, de sorte que les paramètres globaux peuvent s’adapter au contexte dans lequel le graphe est utilisé.
MODIFICATION DES VALEURS HÉRITÉES
Certains paramètres de base, tels que Taille de sortie, Taille de pixel ou Générateur aléatoire, peuvent être modifiés par rapport à la valeur héritée.
Par exemple, lorsque le paramètre Taille de sortie utilise une méthode d’héritage Relative à…, une valeur ou (1, -1) signifie une puissance de deux résolutions au-dessus de la valeur héritée pour X et une puissance de deux résolutions au-dessous de la valeur héritée pour Y, par exemple :
- Valeur héritée :
(9, 9)qui est2^9, 2^9 = 512, 512 - Valeur relative :
(1, -1)qui est2^(9+1), 2^(9-1) = 256, 1024
Si une fonction est appliquée à un paramètre Base, le résultat de la fonction sera également interprété à l’aide de la méthode d’héritage du paramètre.
En gardant à l’esprit l’exemple Taille de sortie, une fonction visant à augmenter de deux fois la résolution héritée en X et Y doit générer la valeur (2, 2) Entier 2.
Parenté des nœuds et des graphes
Lors de l’utilisation de la méthode de l’héritage Relatif au parent, il est important de bien comprendre ce qu’est exactement ce parent dans un contexte spécifique.
Le parent d’un nœud est le graphe dans lequel il existe.
Le parent d’un graphe est le contexte dans lequel il existe :
- Si ce graphe est un sous-graphe instancié dans un autre graphe hôte en tant qu’instancier, le parent du sous-graphe est l’instancier. Le parent de cet instancier est le graphe hôte.
- Si ce graphe est un graphe racine, le parent est l’application elle-même et toute valeur définie par l’application pour un paramètre donné. Par exemple, les graphes hériteront du paramètre Taille du parent défini dans la barre d’outils de la Vue du graphe.
Bien que cela soit souhaitable pour les nœuds Bitmap ou à des fins d'optimisation, par exemple, nous vous recommandons vivement d'utiliser des méthodes d'héritage relatives à… lorsque vous travaillez dans des graphes de Substance, à moins qu'il n'y ait un objectif clair et délibéré à faire autrement.
MODIFICATION CONTEXTUELLE
Lorsque vous utilisez la modification contextuelle sur un nœud d’instance de graphe, le parent du graphe est l’instancier. Dans ce cas, le paramètre Taille du parent dans la barre d’outils de la Vue du graphe est désactivé, car le graphe hérite de ses paramètres de base de l’instancier.
Cette caractéristique est le point de l’édition contextuelle et doit être prise en compte lors de la définition de la méthode d’héritage et de l’évaluation des valeurs actuelles des paramètres de base de n’importe quel nœud.
Héritage à entrées multiples
Lorsqu’un graphe a plusieurs entrées, chaque entrée peut hériter de ses données d’entrée discrètes ou du graphe, selon sa méthode d’héritage:
Entrée principale
Lorsque le graphe est instancié dans un autre graphe en tant qu’instancier, tous les paramètres de base de l’instancier définis sur Relative à l’entrée héritent des données connectées à cette entrée. L’entrée primaire d’un instancier peut être identifiée par le petit point sombre dans son connecteur.
Les autres entrées qui sont définies sur Relatif au parent hériteront des mêmes valeurs de paramètres de base, car elles héritent du graphe qui hérite de l’instancier*, qui hérite de l’entrée Primary.
*: c’est vrai que le graphe utilise la méthode d’héritage* Relatif au parent*.
Exemples
Voici quelques exemples couvrant différents cas d’héritage, et l’interaction des méthodes d’héritage définies dans les acteurs suivants, de haut en bas :
- Application
- Graphe d’hôte
- Instancier dans le graphe hôte
- Sous-graphe, c’est-à-dire le graphe référencé par l’instancier
- Nœuds dans le sous-graphe
La méthode d’héritage définie pour un acteur s’affiche en orange juste au-dessus. Le flux d’héritage vers sa source s’affiche avec des lignes orange.
Les lettres représentent des ensembles distincts de paramètres de base et devraient permettre de suivre les données héritées par chaque acteur.
Résolution des problèmes d’héritage
Au fur et à mesure que vous construisez votre graphe et que vous augmentez sa complexité, vous risquez de rencontrer des problèmes inattendus causés par l’héritage. Si la sortie d’un nœud a une résolution ou une précision incorrecte (c’est-à-dire, la profondeur de bit), vous devez remonter la chaîne d’héritage pour localiser l’origine de ces valeurs.
Un bon point de départ consiste à vérifier les données affichées juste en dessous d’un nœud : il s’agit de la résolution, du format de couleur et de la précision de l’image en sortie par la première sortie du nœud. Bien que la compréhension de la résolution soit simple, le deuxième élément de données vaut la peine d’être détaillé :
-
Le préfixe de lettre fait référence au format de couleur de l’image :
- L : Luminance (c’est-à-dire en niveaux de gris)
- C : Couleur
-
Le nombre fait référence à la profondeur de bits de l’image, de la plus faible à la plus haute précision :
- 8 : entier 8 bits (256 étapes en 0-1)
- 16 : entier 16 bits (65 536 étapes en 0-1)
- 16F : virgule flottante 16 bits (valeurs de faible précision au-delà de 0-1, y compris les négatifs)
- 32F : 32 bits en virgule flottante (valeurs de haute précision supérieures à 0-1, y compris les négatifs)
Si le nœud a plusieurs sorties, vous pouvez vérifier leur résolution et leur précision de deux manières simples :
- Double-cliquez sur LMB sur le connecteur de sortie pour afficher l’image dans la Vue 2D et vérifiez les informations affichées dans le coin inférieur gauche du viewport de la Vue 2D
- Créez un nœud Levels ou Transformation 2D et connectez son entrée à la sortie que vous souhaitez vérifier. Le nœud héritera de la sortie par défaut, et vous pouvez ensuite vérifier les valeurs sous le nœud.
Vous pouvez maintenant remonter la chaîne des nœuds dans le graphe et rechercher le premier nœud où les valeurs inattendues apparaissent. Vérifiez la méthode d’héritage de ses paramètres de base.
Si rien ne cloche et que le nœud est un instancier, vous devez aller plus loin et ouvrir le graphe référencé par cet instancier. Répétez le processus en commençant par les nœuds de sortie du graphe et en remontant.
UN EXEMPLE COURANT
En particulier, le concept d’entrée principale est facilement négligé et peut entraîner des problèmes d’héritage.
Le nœud Fusion est très sensible à cela, car il est utilisé très fréquemment. Son entrée Arrière-plan est son entrée principale.
Vous devez veiller à l’ordre dans lequel vous fusionnez les deux entrées : l’entrée dont vous souhaitez conserver la résolution et la précision au bas du graphe doit être connectée à l’entrée Arrière-plan, si le mode de fusion dont vous avez besoin le permet. Si ce n’est pas le cas, vous devrez peut-être modifier les paramètres de base du nœud de Fusion et leur méthode d’héritage pour compenser.