Ici on parlera de simulation des foules
pour recupperer les info de foot locking/planted
string footL [] = s[]@agentrig_footchannels;
i@fLock;
foreach (int i;string n;footL){
if (match(s@name+"_planted",n)==1){
i@fLock = i[]@agentfoot_locked[i];
}
}
if (i@fLock == 0){removepoint(0,@ptnum,1);}
Utile pour faire en sorte que les agents de la foule regardent tout dans la bonne direction.
vector target = point(1,"P",0);
vector myUp = set (0,1,0);
v@dir = normalize(target-@P)*set(1,0,1);
float myDot = dot(normalize(@dir),normalize(v@heading));
f@angle = degrees(acos (myDot));
v@headingPerp = cross (v@heading,@up);
f@checkWhichSideToTurn = dot (normalize(@dir),normalize(v@headingPerp));
//@angle += fit01(@noise, -30,30);
if (@checkWhichSideToTurn>0)@angle*=-1;
// Rotation
r.x += @angle/2;
J'avais un problème d'opacité sur les cheuveux de ma crowd qui cassait mes passes de Z et de Positions.
utile pour créer des set de cryptomatte comme on l'entend. Ici on va le faire par shape.
s@crypto_agentId = s@name;
s@crypto_shop = s@shop;
s@crypto_agentType = s@agentname;
s@crypto_shape;
s@crypto_paquet = s@paquet;
s@crypto_eye = "crypto_eye";
s@crypto_body="crypto_body";
s@crypto_head="crypto_head";
s@crypto_cloth_F="crypto_cloth_F";
s@crypto_cloth_M="crypto_cloth_M";
s@crypto_cheveux="crypto_cheveux";