Pointer les rayons, promouvoir les paramètres

 

Pointer les rayons, promouvoir les paramètres

Rayons et promouvons param.gif

Scène Houdini : Fichier : point_sop_rays.hipnc

Là encore, des exemples point sop et point vop sont fournis.

De manière générale, les langages compilés sont plus rapides que les langages interprétés. C++ et vex sont compilés, python et mel sont interprétés. La pénalité pour la vitesse du code compilé est le temps qu'il faut pour compiler ; Si vous avez déjà souffert en regardant la compilation d'UE4 à partir de la source ou d'autres outils, vous saurez combien de temps cela peut prendre.

Vops est une interface de nœud sur vex comme mentionné précédemment. Chaque fois que vous modifiez un nœud vop, vous modifiez le code, donc le code doit être recompilé. Houdini le fait automatiquement à la demande, et est en fait assez rapide en ce qui concerne les compilateurs ; modifier un seul nœud, vous voyez généralement le résultat mis à jour en une fraction de seconde.

Cela dit, cela peut s'additionner. Et si vous utilisez des nœuds complexes, le temps de compilation peut atteindre 0,5 à 1 seconde. Cela ne semble pas beaucoup, mais si vous ne faites que déplacer un curseur, cela peut rapidement devenir ennuyeux.

Mais pensez à cela; la plupart des programmes que vous utilisez au jour le jour sont compilés, mais peuvent gérer les entrées changeantes sans avoir besoin d'être recompilés. Un programme comme Photoshop aura des entrées dans le code prédéfinies pour des choses comme le curseur de taille de pinceau, le programme est compilé, maintenant vous pouvez changer la taille du pinceau en temps réel via ledit curseur.

Vous pouvez faire la même chose avec les vops. Vous pouvez définir certains paramètres comme entrées dans votre code "compilé". Dans Houdini, ce processus est appelé paramètres de promotion . Une fois cela fait, ce curseur ou cette valeur ne vit pas "à l'intérieur" du code vop, mais à l'extérieur en haut des paramètres vop. Maintenant, lorsque vous modifiez cette valeur, le code ne se recompile pas, vous obtenez des performances beaucoup plus rapides.

Dans le gif animé ci-dessus, vous pouvez voir le décalage lorsque je modifie la constante. Voici une ventilation de ce qui se passe dans ce gif:

  1. Faire glisser la valeur constante est un peu décalé. Boiteux.
  2. Déconnecter la constante
  3. Cliquez avec le bouton central sur l'entrée d'attribut, choisissez « paramètre de promotion ». Fait un petit nœud de bout.
  4. Faites un clic droit sur le nœud stub (il faut généralement zoomer un peu, petite zone touchée !), choisissez "exposer l'entrée" pour voir le nœud
  5. Donnez-lui un joli nom, par exemple 'Num rayons'.
  6. 'u' pour monter et sortir du réseau vop
  7. Le vopsop a maintenant un nouveau paramètre, 'Numrays'. Faites-le glisser, les performances sont bien meilleures.


Ce qui s'est passé? Le réseau vop a été recompilé, mais cette fois il prend maintenant un argument, 'num rayons'. L'argument est externe au vopsop, il n'a donc pas besoin d'être recompilé lorsque l'argument change. Cela équivaut à de bien meilleures performances. Vous pouvez (et devriez !) exposer autant d'arguments que nécessaire, et vous n'êtes pas limité aux valeurs flottantes ; il y a des interfaces utilisateur de rampe pratiques, des listes déroulantes, des bascules, tout ce dont vous avez besoin.

Utilisation du point pour déplacer les bords

Scène : Fichier : Déplacer les bords.hip

Déplacer les bords.gif

Bit flakey, mais c'est la même chose que l' exemple SOuP que j'ai fait . Un ennui avec le houdini (et la soupe) est que les bords ne sont pas des citoyens de première classe, vous devez donc toujours penser en termes de points. Ce n'est pas un dealbreaker, mais de temps en temps, vous vous retrouvez avec un problème basé sur les bords et vous pensez "merde... j'aimerais pouvoir accéder aux bords...". Vous pourriez probablement créer un groupe et travailler de cette façon, mais c'est toujours une solution de contournement.

Un intérêt mineur ici était de supprimer chaque 2e ligne de la grille, mais d'une manière qui rendrait mes expressions heureuses. Double modulo à la rescousse ! Si la grille est de 20 polys, je module l'identifiant du visage (identifiant primitif ou $PR en tant que variable locale) par 19, puis à nouveau par 2 pour obtenir une ligne sur deux. L'expression de suppression ressemble à ceci :

( $RP % 19 ) % 2


Pour que cela fonctionne toujours quelle que soit la taille de la grille que vous utilisez, j'utilise une référence de canal aux lignes de la grille (et pilote les colonnes de la grille par la même chose, donc tout reste aligné)

( $PR % ( ch ( "../grille1/lignes" ) - 1 )) % 2


En a également fait un basé sur vop, comme les exemples précédents, il évolue beaucoup mieux plus vous lui donnez de points.

0 Commentaires