Closure

Le nœud Closure définit une zone qui encapsule une section réutilisable de nœuds se comportant comme une fonction. Il spécifie les entrées, les sorties et la logique interne qui peuvent être exécutées ailleurs dans l’arborescence des nœuds à l’aide d’un nœud Evaluate Closure.

Les Closures permettent aux utilisateurs de transmettre une logique procédurale personnalisée dans des groupes de nœuds, ce qui rend les outils plus modulaires et adaptables. Au lieu de dupliquer ou de modifier un groupe existant, une closure peut exposer un comportement défini par l’utilisateur tout en préservant la structure du système principal.

../../../_images/nodes_closure_zone.png

Une zone de closure vide.

Inputs

Les Closures définissent leurs propres entrées, qui agissent comme des paramètres pour la logique du nœud interne. Ces entrées peuvent être créées en faisant glisser la prise d’entrée vide dans une autre prise ou en ajoutant des prises manuellement dans les propriétés du nœud. Chaque entrée définit un paramètre que la fermeture peut recevoir lorsqu’elle est évaluée ailleurs.

Propriétés

Le nœud Closure n’a pas de propriétés fonctionnelles propres, mais son interface est configurable via l’onglet Node dans la barre latérale. Les entrées et les sorties peuvent être ajoutées, supprimées et renommées pour définir la signature de la closure.

Sync Sockets

Met à jour le nœud actuel pour qu’il corresponde à la signature de socket des nœuds connectés. À utiliser après avoir renommé, ajouté ou supprimé des sockets.

Define Signature

Marque la zone actuelle comme source d’une signature de closure à laquelle d’autres nœuds peuvent faire référence. Cela garantit des définitions d’entrée et de sortie cohérentes sur plusieurs instances de fermeture.

Éléments d’entrée

List of input sockets

Affiche une entrée par socket défini dans la closure. Double-cliquer sur une entrée pour la renommer.

Add Item

Ajouter un nouveau socket d’entrée à la closure.

Remove Item

Supprime le socket d’entrée sélectionné.

Type

Définit le type de données pour le socket sélectionné (par exemple, Float, Vector, Geometry, Object, Bundle). Pour les types de valeur, un contrôle de valeur par défaut apparaît et est utilisé lorsque le socket est dissocié.

Shape

Définit la structure de données prise en charge par le socket d’entrée, telle qu’une valeur Single, Field ou Grid. La forme détermine la manière dont les données sont évaluées et transmises via le réseau de nœuds. Voir Socket Shape pour plus d’informations.

Éléments de sortie

Disponible lorsque la zone de sortie de closure est sélectionnée.

List of output sockets

Affiche une entrée par socket défini dans la sortie de closure. Double-cliquer pour renommer.

Add Item

Ajouter un nouveau socket de sortie à la closure.

Remove Item

Supprime le socket de sortie sélectionné.

Type

Définit le type de données pour le socket sélectionné (par exemple, Float, Vector, Geometry, Object, Bundle). Pour les types de valeur, un contrôle de valeur par défaut apparaît et est utilisé lorsque le socket est dissocié.

Shape

Définit la structure de données prise en charge par le socket d’entrée, telle qu’une valeur Single, Field ou Grid. La forme détermine la manière dont les données sont évaluées et transmises via le réseau de nœuds. Voir Socket Shape pour plus d’informations.

Outputs

Les closures définissent des sorties qui renvoient des valeurs à l’arborescence de nœuds dans laquelle elles sont évaluées. Les sorties peuvent être créées en faisant glisser une prise de l’intérieur de la zone dans la prise vide sur la sortie de la closure ou en ajoutant des prises manuellement dans les propriétés du nœud.

Utilisation

Les Closures définissent une logique réutilisable qui peut être injectée dans une autre arborescence de nœuds. Elles sont couramment utilisées dans les systèmes procéduraux où une partie du comportement doit rester définie par l’utilisateur.

Les cas d’utilisation typiques incluent :

  • Définition d’une règle de diffusion personnalisée pour un générateur de terrain.

  • Décrire comment distribuer ou modifier des instances de manière procédurale.

  • Fournir des mappages ajustables, des évaluations de terrain ou une logique de transformation.

Utilisation de valeurs externes

Les Closures peuvent capturer des valeurs en dehors de leur zone. Une valeur capturée est stockée dans le cadre de la définition de la closure et reste disponible même lorsque la closure est évaluée dans un contexte différent.

Les valeurs capturées permettent de conserver des paramètres externes, tels que l’échelle, la densité ou la couleur, sans créer de sockets d’entrée explicites. Cela rend les closures plus propres et plus faciles à réutiliser dans différents arbres de nœuds.

../../../_images/nodes_closure_external_input.png

Capture d’une valeur d’entrée externe à l’intérieur d’une closure.

Exemple

  1. Dans un groupe de nœuds générateur de terrain, remplacer la logique de distribution de l’arborescence par un nœud Evaluate Closure.

  2. Exposer l’entrée de closure sur l’interface du groupe.

  3. Dans l’arborescence de nœuds principale, créer une Closure Zone et la connecter à cette entrée.

  4. À l’intérieur de la Closure Zone, définir la logique de placement de l’arbre souhaitée.

Lorsque le générateur évalue la closure, la distribution personnalisée définie dans la zone est exécutée à la place du comportement par défaut.

../../../_images/nodes_closure_example_scatter_functions.png

Une Closure Zone définissant un modèle de distribution personnalisé pour la diffusion des arbres.