Faites glisser les points le long des bords

 

Faites glisser les points le long des bords

Scène Houdini : Fichier : slide_points_along_edges.hipnc

Faites glisser les points le long des bords sm.gif

Donc, même si j'ai dit plus tôt que les sops de solveur sont bonnes, le sentiment de suffisance que vous ressentez en faisant bouger les choses sans elles est génial. Cet exemple est totalement procédural ; pas de dépendance aux trames précédentes, pas de mise en cache. Soigné.

Le but ici est donné à n'importe quel géo, peut-on faire glisser des points le long de ses bords comme des fourmis ? Ils le peuvent certainement.

  1. Créez une grille, réglez son mode sur "lignes" pour en faire des fils (c'est-à-dire que les arêtes poly qui n'ont pas de faces .. peuvent également les considérer comme des courbes de degré 1, constituées de polys)
  2. Augmenter le nombre de points avec un rééchantillonnage
  3. Remuez-le avec un sop de montagne (j'ai inséré un nœud de jitter, une montagne n'aura aucun effet à moins que les lignes de la grille ne soient légèrement jittered)
  4. Créez un attribut u-coord sur la longueur de chaque fil avec un point vop et un extrait vex (connectez ptnum et numvtx) : u = vertexprimindex(0, ptnum) / float(numvtx);
  5. Colorie-le avec une rampe basée sur toi, parce que ça a l'air sympa
  6. Dispersez quelques points sur les lignes, ils hériteront du u-coord des lignes, ainsi que de l'ID de la ligne sur laquelle ils se trouvent (appelé sourceprim)
  7. Ajouter un nouvel attribut aléatoire, 'delta', entre -1 et 1, pour tous les points
  8. Point vop pour faire glisser les points le long des lignes.


Ce point vop est l'endroit où toutes les choses intéressantes se produisent :

  1. Prenez du temps, multipliez-le par delta. Cela signifie par point si la valeur delta est 1, ils se déplacent à pleine vitesse, si delta est -1, ils se déplacent en sens inverse à pleine vitesse, les valeurs intermédiaires sont plus lentes.
  2. Prenez le u-coord, ajoutez-y du temps, puis modulo par 1. Cela signifie que le u-coord changera en douceur, mais s'il atteint 0 ou 1 (c'est-à-dire le début ou la fin de la ligne), il se déformera instantanément à l'autre bout de la ligne.
  3. Alimentez le sourceprim, la coord-u mise à jour et la géométrie de la ligne d'origine dans un vop "attribut primitif". Ce nœud renverra l'attribut de votre choix à la coordonnée uv que vous demandez, sur la primitive que vous demandez. Ici, nous lui demanderons de renvoyer P, la position sur la ligne à notre u-coord.
  4. Définissez cette position P comme position du point


Dans la scène d'exemple, j'alimente cette configuration à un instanciateur de points rapides, pour instancier des cubes sur les points. J'ai également quelques autres éléments de configuration géographique derrière un nœud de commutation pour montrer que cela fonctionne pour une variété de formes.

Voici une autre variante basée sur this post , déplaçant des éléments le long de plusieurs chemins dans une direction.

Flèches courbes.gif

Télécharger la scène : File:arrows_on_paths.hipnc

Les principales différences ici sont

  • Le delta aléatoire est centré autour de 1 plutôt que de 0, donc tout se déplace dans la même direction
  • À la toute fin, il utilise un trail sop pour calculer v, qui est l'attribut Houdini standard pour la vitesse. Ceci est récupéré par les nœuds de copie et d'instance, qui orienteront les copies dans la direction du mouvement.


Voici encore une autre version :

Trafic.gif

Télécharger la scène : File:paths_attrib_interpolate.hipnc

Toujours agréable de trouver une manière plus élégante d'obtenir un effet. L'attribut interpolate sop est destiné à vous aider à coller des points dispersés sur une géométrie déformée. Le scatter sop a des options pour stocker la primitive sur laquelle chaque point a été dispersé, et l'uv de cet emplacement. L'attribut interpolate les utilise pour coller le point à l'emplacement correspondant sur la géométrie que vous lui donnez.

Ici, je l'utilise dans un but différent; plutôt que d'avoir des uv statiques et des géodéformations, j'ai des géo statiques et des uv changeants. En définissant chaque point uv pour qu'il tourne en boucle entre 0 et 1, et qu'il soit dispersé sur des courbes fermées, il contourne les courbes. Ajoutez quelques bâtiments, une forme de voiture simple, c'est une simulation de foule de voitures à peine passable. Amusant!

0 Commentaires