attache une propriété
Principle
Toute commande multiple com1(p1) obj(id) com2(p2) ... comn(pn)
peut être encapsulée dans l´objet id par:
attach(0)com1(p1) obj(id) com2(p2) ... comn(pn)
Cette commande sera alors exécutée automatiquement à
chaque image d´une animation.
Remarques:
1) Les paramètres pi sont évalués lors de l´encapsulation
et ne pourront donc pas varier.
2) Pour les faire varier exécuter com1(p1) obj(id) com2(p2) ... comn(pn)
dans un callback ou la référencer
dans une fonction local de l´objet id
3) Une telle instruction est exécutée lors de l´affichage et est
caractérisée par un flag:
attach: retourne ce flag (1: en cours d´exécution, 0:
exécution terminée).
attach(f): permet de forcer ce flag.
yes attach doit être actif.
Syntaxe
attach(0)com1(p1)...obj(id)...
Ajoute la propriété attach com1(p1)...obj(id)... au bloc attach de
l´objet id de type obj.
Options:
abs: si la même propriété a déjà été
créée, elle est seulement updatée, sinon elle est ajoutée.
back: exécute attach aprè le calcul des matrices (par défaut).
front: exécute attach avant le calcul des matrices.
Remarques:
1) Préciser cette option si l´on veut ajouter des propriétés ne différant que par leurs paramètres,
comme par exemple:
attach(0)vertex(1,2,3)vol(1)vertex(1,2,3)vol(2);
attach(0)vertex(4,5,6)vol(1)vertex(1,2,3)vol(3)abs;
2) Par contre il ne faut pas la préciser si l´on veut modifier les paramètres d´une
propriété existante, comme par exemple:
attach(0)vertex(1,2,3)vol(1)vertex(1,2,3)vol(2);
à l´image suivante on veut déplacer ces sommets sur les sommets (4,5,6) du volume 2:
attach(0)vertex(1,2,3)vol(1)vertex(4,5,6)vol(2);
3) attach(0)interpol secx(x1,x2)vol(id) est exécuté avant l´affichage,
ce qui permet de traiter d´autres propriétés comme envelope vertex.
attach(num)vol(id)
Retourne la propriété numéro num du bloc attach du volume id.
Remarque: il s´agit d´une string de caractères, valable seulement pour consultation, et ne
pouvant pas être utilisée comme propriété.
attach(num)com1...vol(id)...
Modifiee cette propriété.
Exemples
Display vertex
attach(0)displ vertex(0)vol(id);
affiche les sommets s du volume id
(tous si s=0 ou est absent).
Extension sur un volume déformable
Si un volmue id est muni d´une extension et que la
géométrie de ses points de contrôle est modifiée faire:
attach(0)generate ext vol(id);
Remarques:
1) Même chose pour un fractal.
2) il faut activer yes attach,
yes ext
ou yes frac.
Paramètres variables d´un volume
Les variations de certains paramètres d´un volume (ou de sommets de ce volume) peuvent dépendre
des variations d´autres paramètres d´un autre volume
(voir transformations associées:
attach(0)vertex(s1)T1(p11,p12)vol(id1)T2(p21,p22)vol(id2);
En animation les paramètres T1 des sommets s1 du volume id1 varieront entre
p11 et p12 lorsque les paramètres T2 du volume id2 varieront entre p21 et p22.
attach(0)exec("liste d´instructions")vol(id);
permet d´exécuter
liste d´instructions à chaque image.
Vue adaptative
attach aim poi(x,y,z)spring(.1,-.1)dist(200)view(1);
définit une vue adaptative dynamique par un ressort tendant à amener la fuite sur le point (x,y,z).
attach aim vol(1)spring(.1,-.1)dist(200)view(1);
définit une vue adaptative dynamique par un ressort tendant à amener la
fuite sur le CG du volume 1.
Autres exemples
Toute commande d´affichage impliquant un objet possiblement transformé par sa
matrix, comme displ axis vol, ne tient pas
compte de cette transformation, pour qu´elle en tienne compte encapsuler la propriété par
attach displ axis vol(id) qui sera exécutée lors de l´affichage du volume.
attach(0)dila(1,1,1, 2,1,3)vertex[6,12]ini vol(2)rota(0,PI)vol(2);
Les coordonnées des sommets [6,12] du volume 2 seront multipliées par
(x,y,z) (entre (1,1,1) et (2,1,3)) quand son angle varie dans (0,PI).
a=limit rota vol(humerus_g);attach(0)rotz(-PI,0)vol(radius_g)rota(a)vol(humerus_g)coe(2);
Tourne le volume radius_g en fonction de la rotation du volume humerus_g.
a=limit rota vol(humerus_g);attach(0)rotz(-PI,0)vol(radius_g)speed(-1,1)rota vol(humerus_g)coe(10);
Tourne le volume radius_g en fonction de la vitesse de rotation du volume humerus_g.
Voir aussi