Ici on parlera optimisation

Optimisation

Compile-block

les nodes inclus dans les compiles blocks sont considérés par houdini comme un seul node.

Savoir si un node est compilable

  • dans le nodegraph appuyer sur la touche d
  • dans context specific badges mettre non compilable SOP badge en Large
  • houdini affichera une roue barre a cote des nodes non-compilable

Multithreaded for-each loop

  • mettre une for-each loop entre deux compile block

Invoker des compile block

On peut utiliser les invoke pour prendre en reférence des compile block. Cela permet d'appeler plusieur fois un bout de network et de faire varier l'input. Cela evite de copier/coller des tas de node plein de fois. Cela evite de faire des hda.

  • faire une serie d'operation entre deux compile block
  • dans le node compile begin mettre un nom pour le parametre input name
  • mettre un node invoke lui renseigner un input name

invoke

Les instances

Instancier des objets static

on va aussi ajouter des poids sur les instance pour avoir plus de ceci que de cela.

  • apres un scatter de points on drop un node attribute randomize

  • configurer attribute name en instancepath, distribution en custom discrete et le type en string

  • copier/coller des chemin vers le disque dans les value et jouer avec les weight

  • dans un wrangle mettre les attributs pscale, orient ...

// par exemple
float angle = radians(rand(@ptnum+21)*360);
p@orient = quaternion(angle,{0,1,0});

float min = chf("min");
float max = chf("max");
float val = rand(@id);
val = fit01( pow( val, chi("pow")), min, max);
f@pscale = val;
  • mettre un node instance a la fin et le tour est joué.

instance01

Instancier des objets animé, faire des offsets dans l'anim

pour la mise en place, ce referer au post juste au dessus.

  • avant le node instance

  • dans un wrangle en point

    //chemin vers la sequence de bgeo.sc
    string cPath = s@instancepath;
    //genere offset aleatoire compris entre min et max
    int randNumber =int(fit01(rand(@ptnum+87),chi('min'),chi("max")))+int(@Frame);
    // rajoute le padding
    string sId = sprintf('%04d',randNumber);
    // la seq offsetter
    s@sId = sId;
    //ajouter l offset a la sequence d image
    s@instancepath = slice(cPath,0,-12)+sId + ".bgeo.sc";
    // pour generer une couleur par chemin sur disque
    s@instanceColor = slice(cPath,0,-12);
  • mettre un node color configurer en random from attribute avec instanceColor en attribute avant le node instance

instanceAnim

garder une scene legere

  • eviter les gros paint a la main sur les points privilegier des selection par proximité de curves ou autre
Houdini