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.

Méthodes d’Héritage {width="1400px"}

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.

NOTE
Un fichier de projet annoté démontrant l'héritage est disponible dans la section Exemples de graphes de Substance de cette documentation.

méthodes d’Héritage

Icône pour la méthode d'héritage 'Absolu' {width="128px"}

Absolu

Aucun héritage, la valeur est définie arbitrairement et localement pour le paramètre

Icône pour la méthode d’héritage « Relative à l’entrée » {width="128px"}

Relative à l’entrée

La valeur est héritée des données connectées à l’entrée principale du nœud

Icône pour la méthode d'héritage « Relatif au parent » {width="128px"}

Relatif au parent

La valeur est héritée du parent du nœud ou du graphe

démonstration des 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.

WARNING
Rappel important pour comprendre les concepts abordés dans cette page : un instancier est un nœud représentant un graphe dans un autre graphe, avec ses valeurs de paramètre distinctes, d'où le terme instance.
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.
NOTE
Taille de sortie : utilisez le bouton de verrouillage pour que la valeur Height corresponde à la valeur Largeur
Valeur de départ aléatoire : utilisez le bouton pour attribuer une nouvelle valeur aléatoire à la valeur de départ aléatoire.

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.

Modification de la méthode d'héritage {width="512px"}

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 est 2^9, 2^9 = 512, 512
  • Valeur relative : (1, -1) qui est 2^(9+1), 2^(9-1) = 256, 1024
NOTE
La page Taille de sortie approfondit ce paramètre de base critique et il est recommandé de la lire pour comprendre comment la résolution finale d'un nœud est calculée.

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.
WARNING
La parenté est appliquée telle quelle lors de la publication d’un pack dans des fichiers de ressources Substance 3D (SBSAR). Cela signifie que la définition de tout paramètre sur la méthode d'héritage Absolue verrouillera ce paramètre à sa valeur actuelle dans la ressource publiée.
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:

Icône pour la méthode d’héritage « Relative à l’entrée » {width="128px"}

Relative à l’entrée

L’entrée hérite de ses données d’entrée distinctes, quels que soient les paramètres de base du graphe. Cela est très utile pour contrôler les données par entrée.

Icône pour la méthode d'héritage « Relatif au parent » {width="128px"}

Relatif au parent

L’entrée hérite du graphe et les données qu’elle reçoit sont adaptées en conséquence.

Entrée principale

table 0-row-3 0-border-0 1-border-0 2-border-0 3-border-0 html-authored no-header
Couleur d'entrée principale/Niveaux de gris {width="48px"} Couleur d'entrée principale {width="48px"} Niveaux de gris d'entrée principaux {width="48px"}

L’une des entrées peut être définie comme entrée principale du graphe en cliquant sur RMB sur ce nœud Entrée et en sélectionnant l’option Définir comme entrée principale dans le menu contextuel.

Types de connecteurs d'entrée

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 :

  1. Application
  2. Graphe d’hôte
  3. Instancier dans le graphe hôte
  4. Sous-graphe, c’est-à-dire le graphe référencé par l’instancier
  5. 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.

Exemple A

Diagramme d'Héritage A {modal="regular"}

Exemple B

Diagramme d'Héritage B {modal="regular"}

Exemple C

Diagramme d'Héritage C {modal="regular"}

Exemple D

Diagramme d'Héritage D {modal="regular"}

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.

héritage de la taille de sortie {width="512px"}

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.

recommendation-more-help
substance-3d-designer-help-guide