Labs Growth SOP : systèmes de croissance organique

Bounds objects, points d'attraction et thigmotropisme

Introduction

Le nœud Labs Growth (de SideFX Labs) simule des systèmes de croissance organique - mycélium, corail, réseaux vasculaires, cristaux, lierre - à travers trois mécanismes complémentaires : un volume de confinement (le Bounds Object), des points d'attraction qui guident la direction de croissance, et le thigmotropisme, qui gère l'interaction physique avec les surfaces. Combiner ces trois paramètres reproduit des comportements biologiques très convaincants.

Architecture des entrées

Le Labs Growth SOP a trois entrées distinctes. Comprendre leur rôle est essentiel avant de construire le réseau.

EntréeContenuRôle
Input 1Géométrie sourcePoints de départ de la croissance (seeds)
Input 2Bounds ObjectVolume de confinement - la croissance y reste confinée
Input 3Attraction PointsPoints dispersés qui attirent et orientent la croissance

Growth Bounds Object

Le Bounds Object est un volume fermé qui agit comme un conteneur pour la simulation. La croissance ne peut pas s'en échapper. Pensez-y comme à un aquarium dans lequel on ferait pousser du corail : la géométrie de l'aquarium définit les limites physiques de la colonisation.

En pratique, n'importe quel maillage fermé fonctionne : une sphère, un crâne, un tronc d'arbre creux, un organe, un rocher. Plus la géométrie est complexe et sinueuse, plus les comportements de croissance sont intéressants à mesure qu'elle navigue à l'intérieur.

Astuce : activez Convert to VDB dans les paramètres du Bounds Object si votre maillage n'est pas parfaitement fermé. Le volume VDB est plus robuste pour la détection de collision que le raycasting contre des polygones.

Points d'attraction

Les Attraction Points sont des points dispersés dans ou sur l'espace de simulation qui attirent la croissance vers eux. Plus il y a de points dans une zone, plus la croissance y est dense. Chaque branche en croissance recherche constamment des attracteurs dans son rayon d'influence et s'oriente vers le plus proche.

L'idée centrale : les Attraction Points définissent où a lieu la croissance, le tropisme définit la direction générale, et le thigmotropisme gère la relation physique aux surfaces.

Varier la densité par texture

La densité peut être pilotée depuis une texture plutôt que d'être uniforme - disperser des points, puis utiliser un nœud Attribute from Map lisant un bruit ou une carte noir et blanc peinte dans un attribut density. Les zones denses produisent une forte attraction, les zones vides laissent la croissance se développer plus librement.

Paramètres clés

ParamètreValeurEffet
Attraction Radius0.5 - 3.0Rayon d'influence de chaque point attracteur
Kill Distance0.1 - 0.5Distance à laquelle un point est « consommé » et supprimé
Segment Length0.05 - 0.5Longueur de chaque segment entre deux étapes de croissance
Iterations50 - 500Nombre de cycles de simulation (plus = plus dense)
Astuce : un Kill Distance trop grand produit des branches qui ne convergent jamais. Trop petit, et toutes les branches convergent sur le même point. Commencer à 20-30% de l'Attraction Radius.

Thigmotropisme

Origine biologique

Le thigmotropisme (du grec thigma, toucher) est la réponse d'une plante au contact physique. C'est le mécanisme qui fait pousser le lierre autour d'un mur plutôt qu'à travers, qui fait s'enrouler les vrilles d'une vigne autour d'un tuteur, et qui fait dévier les racines autour d'un caillou. Le système nerveux de la plante détecte la résistance physique et recalibre sa direction de croissance en conséquence.

Dans Labs Growth

Le paramètre Thigmotropism utilise la géométrie du Bounds Object (ou un objet dédié sur l'Input 2) comme surface de réaction. La branche en croissance détecte la proximité du maillage et réagit en s'en éloignant ou en s'y accrochant, selon le signe de la valeur.

ParamètreValeurEffet
Thigmotropism Weight+0.5 à +1.0Évitement - la branche pousse autour de l'objet
Thigmotropism Weight-0.5 à -1.0Enveloppement - la branche s'accroche à la surface
Thigmotropism Offset0.05 - 0.5Distance de détection - à quelle distance la branche commence à réagir

Cas d'usage

  • Évitement (valeur positive) - racines poussant autour de rochers, mycélium colonisant autour d'une structure rigide, cristaux poussant dans les interstices d'un maillage complexe. Le Bounds Object agit comme un obstacle.
  • Enveloppement (valeur négative) - lierre sur une façade, vigne sur un treillis, corail enveloppant un récif, lichen suivant le relief d'une pierre. La surface devient un guide plutôt qu'un obstacle.

Configuration pratique : envelopper une surface

Le workflow complet pour faire pousser de la végétation le long d'un maillage de façade ou d'un rocher :

// Étape 1 - Préparer la surface cible
[Maillage de façade]
     ├─ Scatter SOP (sur la surface)   → Input 3 (points d'attraction)
     └─ Sortie directe                 → Input 2 (objet thigmo)

// Étape 2 - Seeds de départ
[Points au niveau du sol / base] ──────► Input 1

// Étape 3 - Labs Growth SOP
Thigmotropism Weight : -0.8
Thigmotropism Offset : 0.1
Attraction Radius    : 0.3    (proche de la surface)
Segment Length        : 0.05   (segments courts = courbure précise)
Iterations            : 300

Résultat attendu : la croissance est attirée vers les points dispersés sur la surface ET physiquement retenue par le maillage - elle suit et enveloppe la géométrie de façon organique, sans jamais s'en éloigner.

L'enveloppement ne suit pas la surface ? Le Thigmotropism Offset est trop grand - commencer à 0.05. Le Segment Length doit aussi être court (< 0.1).

Combiner tropisme et thigmotropisme

Le tropisme (phototropisme, gravitropisme) et le thigmotropisme peuvent se combiner pour créer un comportement bien plus nuancé. Ils ne s'annulent pas l'un l'autre - ils créent une tension entre deux forces qui produit des trajectoires bien plus organiques que l'un ou l'autre utilisé seul.

ParamètreValeurEffet
Tropism Direction{0, 1, 0}Force globale vers le haut (phototropisme)
Tropism Weight0.2 - 0.6Influence légère de la lumière - ne domine pas le thigmotropisme
Thigmotropism Weight-0.7Enveloppement dominant - la surface reste le guide principal

Exemple concret : du lierre sur un mur exposé au sud. Le tropisme positif tire légèrement vers la lumière (vers le haut), le thigmotropisme négatif maintient les branches collées à la maçonnerie. Le résultat est une croissance globalement ascendante tout en suivant fidèlement le relief du mur.

Astuces et dépannage

  • La croissance s'échappe du Bounds Object - vérifier que le maillage est fermé (Merge + Fuse + Check Edges). Activer Convert to VDB pour plus de robustesse.
  • Les branches ne convergent pas - le Kill Distance est trop grand. Le réduire à 15-20% de l'Attraction Radius.
  • Croissance trop uniforme, pas organique - varier la densité des Attraction Points avec un Attribute from Map piloté par du bruit de Perlin.
  • L'enveloppement ne suit pas la surface - Thigmotropism Offset trop grand. Commencer à 0.05, et garder le Segment Length court (< 0.1).
  • Simulation lente sur un maillage complexe - réduire les Iterations pour les tests, ne les augmenter que pour le rendu final.
  • Résultat trop géométrique, pas assez souple - activer Post-Smooth dans les paramètres de sortie, ou ajouter un Smooth SOP en post-traitement.