Ici on parlera optimisation
les nodes inclus dans les compiles blocks sont considérés par houdini comme un seul node.
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.
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;
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