trajectoire
Principe
Toutes les propriétés de tous les objets d´anyflo peuvent être animés par des trajectoires qui contiennent
les listes des variations de ces propriétés dans le temps, il s´agit là d´animation cinématique.
Une autre méthode d´animation, dite dynamique, consiste à définir ces propriétés dans le temps
au moyen des équations différentielles de la dynamique, mais, même dans ce cas, on peut définir des trajectoires de
type cinématiques sur certains paramètres de la dynamique
(masses,
forces,
couples,
ressorts, etc..).
Il y a 2 façons de définir des trajectoires sur un objet:
Trajectoires encapsulées
Syntaxe générale de création
Transformation d´objet:
traj(ni)transf(p)obj(id);
ni: est le nombre d´images.
transf: est une transformation
p: est une liste de paramètres clés de la transformation.
obj(id): est l´objet de type
obj et d´identificateur id.
Transformation de propriété d´objet:
traj(ni)propr(p)obj(id);
propr: est une propriété de l´objet id.
Remarques:
la propriété propr doit avoir avoit été initialisée pour l´objet obj(id).
si ni=ni1,ni2 ni = rand2(ni1,ni2).
Exemples
traj(6)tran(0,0,0, 200,100,0)vol(1);
edit(traj tran vol(1));
imprime:
0.0 0.0 0.0
40.0 20.0 0.0
80.0 40.0 0.0
120.0 60.0 0.0
160.0 80.0 0.0
200.0 100.0 0.0
traj(6)radius(6,8, 12,14)brush(1);
edit(traj radius brush(1));
imprime:
0.0 6.0 8.0
0.2 7.2 9.2
0.4 8.4 10.4
0.6 9.6 8.0
0.8 10.8 12.0
1.0 12.0 14.0
La 1ère colonne est le numéro de l´image (normalisé entre 0.0 et 1.0)
La 2ème et la 3ème colonne sont les rayons.
col vertex(2)vol(1)=1,.4,.2;
col vertex(2)vol(1);
imprime:
1.0 0.4 0.2
traj(6)tran(0,0,0,100,200,300)vertex(1)vol(1)abs(2)period(-1);
edit traj vertex vol(1);
imprime:
tran vertex(1)ni=6 cpt=0 period=-1
tran(1,6)
var tran(1,18)
edit traj vertex vol(1);
imprime:
tran vertex(1)ni=6 cpt=0 period=-1
tran(0,0,0,100,200,300)
var tran(0,0,0, 20,40,60, 40,80,120, 60,120,180, 80,160,240, 100,200,300);
L1=-200,-200,-200, 200,0,200;L2=-1000,-1000,-1000, 1000,500,200;
traj(6)limit(L1,L2)tran vol(1)abs;
edit(2)traj limit tran vol(1);
imprime:
-200,-200,-200,200,0,200
-360,-2160,-360,"60,100,200
-520,-4120,-520,520,200,200
-680,-6080,-680,680,300,200
-840,-8040,-840,840,400,200
-1000,-1000,-1000,1000,500,200
Syntaxe générale de consultation
Transformation d´objet:
traj transf obj(id);
Retourne la trajectoire de type transf (ou de proprié:té propr) de l´objet id.
Cas particuliers:
1) traj rota vol(id);
retourne une ligne 3D de la forme:
xi,ai,0 avec xi dans [0,1] et ai = angle (en degrés).
Pour imprimer cette trajectoire en radians, faire:
edit((1,PI/180,1)*(traj rota vol(id)));
.
2) traj quat vol(id);
retourne une ligne 4D (de quaternions) de la forme:
wi,xi,yi,zi.
Pour l´imprimer, faire:
edit(traj quat vol(id))format(4);
Transformation de propriété d´objet:
traj propr obj(id);
Retourne la trajectoire de proprié:té propr) de l´objet id.
Object trajectory
traj(id)T
Définit la trajectoire id de type T.
Exemple: traj func.
traj obj(id1)=id2
Attache la trajectoire id12 à l´objet obj(id1).
En tant qu´objet général d´anyflo les trajectoires peuvent être
animées.
traj(id)animate(ni)type1(p1) type2(p2) ... opt1(o1) opt2(o2) ...
Définit l´objet d´identificateur id et de type traj avec une durée
de ni à l´order 1.
traj(id)animate(ni,n)type1(p1) type2(p2) ... opt1(o1) opt2(o2) ...
Définit l´objet d´identificateur id, de type traj avec une durée
de ni images à l´order n: une telle trajectoire sera incrémentée
chaque fois qu´une trajectoire d´ordre n-1 se termine.
traj animate vol(id1)
retourne l´identificateur de la trajectoire associée au volume id1.
traj animate vol(id1)=id2
changes cet identificateur.
Remarque: la trajectoire id2doit être:
traj(id2)animate(ni,n)P(p1,p2,...)...;
Increment
Chaque fois que les trajectoires d´ordre n se terminent les trajectoires d´ordre
n+1 sont incrémentées.
Exemple:
Voir dans le ichier demo1_traj.func la fonction:
GEN_TRAJ_TRAJ()
{
#include "externes()"
ni=Ni[2];interaction screen(ni);
/* Property trajectories order 0 */
an=PI*rand2f(-1,1);r=.5*(1+cos(an));v=.5*(1+sin(an));b=.5*(r+v);
EXEC="traj(ni)col(r,v,b, v,b,r, b,r,v)vol(1)abs(2)period(1)law(Loi);\n";
EXEC,="traj(ni+1)rotz(-an,an)vol(1)abs(2)period(1)law(Loi);\n";
/* Object trajectory order 1 */
EXEC,="traj animate vol(1)=1;\n";
p=gen_p();
EXEC,="traj(1)animate(ni,1)tran(p)abs(2)period(1)ext(5,1);\n";
/* Object trajectory order 2 */
EXEC,="traj animate traj(1)=2;\n";
p=gen_p();
EXEC,="traj(2)animate(ni,2)tran(p)abs(2)ext(5,1)period(-1);\n";
EXEC=compile message(EXEC);
}
traj (id)dim
Retourne le nombre d´images de la trajectoire id.
traj (id)NP
Retourne le numéro de l´image courante de la trajectoire id.
traj(id)var
Retourne la liste 3D (x1,y1,z1, x2,y2,z2, ...,
xni, yni, zni)
des valeurs de la trajectoire id selon le type:
rota, rotx, roty, rotz, hom: xi dans [0.0,1.0], yi=valeur à l´image i, zi=0.
autres: liste des vecteurs aux images 1, 2, ...,ni.
var propr traj(id)
Retourne la liste 3D (x1,y1,z1, x2,y2,z2, ...,
xni, yni, zni) de la propriété propr de la trajectoire
id, propr est:
col ou transp pour une trajectoire de type name associée à une image.
Options:
propr(0): première référence de (default).
propr(1): seconde référence de propr.
traj obj(id2)=id1
Affecte la trajectoire id1 à léobjet
obj d´identificateur id2.
typei peut être une transformation géométrique et/ou une propriété.
opti(pi) est une option de paramètre pi.
obj est un objet standad d´anyflo.
Une transformation peut avoit des types secondaires, par exemple
rota(r) force(c).
Ces trajectoires id1 sont des propriétés d´objet permettant de modifier
dans le temps les matrices des objets id2 (en affectant les paramètres des transformations
linéaires: translation, dilatation, rotation) et donc d´animer ces objets:
traj(id1)animate((ni)T(p)
ni est la durée.
T est une transformation linéaire (tran,dila,dilx,dily,dilz,rota,rotx,roty,rotz,axis) ou
quat, p est la liste des vecreurs paramètres de cette transformation.
Examples:
traj(1)animate(100)tran(-200,0,0, 200,0,0);
traj(2)animate(50)rota(-PI,PI)vol(1)period(-1);
traj vol(1)=1,2;
Le volume 1 se déplacere le long du segment (-200,0,0, 200,0,0) pendant 100 images
et tournera pendant entre -PI et PI pendant 50 images.
Les trajectoires peuvent être définies sur certains sommets
ou d´autres propriétés d´un objet property.
Options permettent de définir une cinématique
(mouvement non linéaire),
de faire des trajectoires périodiques, des interruptions, etc..
Type de trajectoire
traj typei obj(id)
Retourne la liste des vecteurs de la trajectoire de type typei de l´objet id.
traj typei dim obj(id)
Retourne la durée de la trajectoire de type typei de l´objet id.
Trajectoires de propriété d´objet
Ce sont des propriétés d´objets permettant de modifier dans le temps certains paramètres
de ces objets et donc de les animer:
traj(ni)P(p)obj(id)
ni est la durée.
P est une propriété, p est la liste des vecteurs
paramètres de cette propriété.
id = identificateur de l´objet obj.
Certaines trajectoires ont un type multiple comme traj force rota, dans ce cas
les paramètres utilisés pour les construire sont accessibles par:
force traj force rota vol(id);
pour les coefficients de force.
rota traj force rota vol(id);
pour les angles de rotation.
aim
axis
col
col col
dila
dilx
dily
&nbs
p; dilz
force
force rota
func
hom
illum
interpol
mass
quat
quat_rota
rota
rotx
roty
rotz
texture
tran
transp
traj(ni)axis(x1,y1,z1, x2,y2,z2, ...)vol(id)
traj(ni)col(r1,v1,b1, r2,v2,b2, ...)vol(id)
Option:
matrix(n): nombre de composantes d´un vecteur (1 par défaut).
Exemple:
traj(ni)col(r11,v11,b11,r12,v12,b12, r21,v2&,b21,r2,v22,b22, ...)vol(id)matrix(2)
permet de faire varier (r1,g1,b1,r2,g2,b2).
traj(ni)col(r11,g11,b11, r12,g12,b12, ...)col(r21,g21,b21, r22,g22,b22, ...)vertex(v)brush(id)
Permet de faire varier (r1,g1,b1, r2,g2,b2) couleurs au centre et au bord du sommet v
du pinceau id.
traj(ni)illum(ref1,spe1,bri1, ref2,spe2,bri2,...)vol(id)
traj(ni)illum(ref1,spe1,bri1, ref2,spe2,bri2,...)vertex(v)vol(id)
traj(ni)tran(x1,y1,z1, x2,y2,z2,...)vol(id)
traj(ni)dila(x1,y1,z1, x2,y2,z2,...)vol(id)
traj(ni)dilx(c1,c2,...)vol(id)
traj(ni)dily(c1,c2,...)vol(id)
traj(ni)dilz(c1,c2,...)vol(id)
foc
traj(ni)fog(r,g,b)zbuf(z11,z12, z21,z22, ...)
Construit une trajectoire de brouillard fog(r,g,b)zbuf(z1,z2).
traj(ni)force(x1,y1,z1, x2,y2,z2,...)vol(id)
traj(ni)force(f1,v1,0, f2,v2,0, ...)rota(a1,a2,...)vol(id)
Les angles ai sont atteints avec une force rota
d´amplitude f (f=.1, v=-.01 sont de bonnes valeurs) de viscosit&eacuye; v.
Remarque:
le volume id doit avoir une masse.
yes dynamic doit être actif).
traj(ni)force(f1,v1, f2,v2, ...)axis(x1,y1,z1, x2,y2,z2,...)vol(id)
Définit un couple.
traj(id)animate(ni)func("f1 f2 ... fn")
les fonctions fi sont exécutées en séquence
chaque ni/n image.
traj(ni)func(id1)obj(id2)
func id1 est éxécutée à chaque image pour l´objet
de type obj et d´identificateur id2.
Remarques:
si id1=nombre, ce nombre est passé à la fonction C
TRAJ_FUNC_C(struct Objet *p_obj_traj, long num) du fichier utilb.c.
si id1="fff" la fonction anyflo fff(ni,cpt) est éxécutée.
traj(ni)tran(x1,y1,z1, x2,y2,z2,...)aim light(id)
traj(ni)tran(x1,y1,z1, x2,y2,z2,...)aim view(id)
Même syntaxe pour les autres transformations.
traj(ni)tran(x1,y1,z1, x2,y2,z2,...)eye light(id)
traj(ni)tran(x1,y1,z1, x2,y2,z2,...)eye view(id)
Même syntaxe pour les autres transformations.
traj(ni)hom(c1,c2,...)vol(id)
traj(ni)interpol(id1,id2,...)vol(id0)
Construit une trajectoire de durée ni en interpolant les points du volume id0
entre ceux des volumes id1, id2, ...
Remarque: Les volumes idi doivent avoir la même topologie.
traj(ni)interpol(id1,id2)image(id0)
Construit une trajectoire de durée ni en interpolant l´image id0
entre les images id1 et id2.
Note: images idi doivent avoir la même topologie.
traj(ni)texture(m1,m2,...)vol(id)
traj(ni)mass(m1,m2,...)vol(id)
traj(ni)name("nnn.eee")number(n1,n2)image(id)
Lit les images "NNNnnnn.eee" de nnnn=n1 à nnnn=n2.
Options:
col(r,v,b): image(id,id)transp(t)col(r,v,b)
col(r1,v1,b1)col(r2,v2,b2): image(id,id)transp(t)col(r1,v1,b1)col(r2,v2,b2)
col(r11,v11,b11, r12,v12,b12, ...)col(r21,v21,b21, r22,v22,b22, ...): permet de varier
les coefficients de la couleur
dim(nx,ny): size of images
number("nD",n1,n2): numéro sur n chiffres.
transp(t1,t2): image(id,id)transp(t1,t2)col(r,v,b)
transp(t1,t2)transp(t3,t4): image(id,id)transp(t1,t2)transp(t3,t4)col(r,v,b)
transp(t11,t12,0, t21,t22,0, ...)transp(t13,t14,0, t23,t24,0, ...): permet de varier les coefficients de transparence
Options:
col(r,v,b): image(id,id)transp(t1,t2)transp(t3,t4)col(r1,v1,b1)col(r2,v2,b2)
dim(nx,ny): dimension des images
format("nD"): format ("4D" default);
transp(t): image(id,id)transp(t)colr1,v1,b1)col(r2,v2,b2)
Trajectoires de quaternions
traj(ni)quat(q1,q2,...)vol(id)
qi est un quaternion de la forme:
q = w,x,y,z, avec:
w = cos(a/2)
a2 + x2 +y2 + z2 = 1
module(x,y,z) = sin(a/2)
Correspondant à la rotation de l´espace d´angle a et
d´axe (x,y,z).
traj(ni)quat rota(r1,r2,...)vol(id)
Les ri sont de la forme:
r = a,xr,yr,zr
Correspondant à la rotation de l´espace d´axe (xr,yr,zr) et
d´angle a.
Ces valeurs sont converties en quaternions qui seront interpolés
sphériquement.
traj(ni)rota(a1,a2,...)vol(id)
traj(ni)rota(a1,a2,...)axis(x1,y1,z1, x2,y2,z2, ...)vol(id)
traj(ni)rotx(a1,a2,...)vol(id)
traj(ni)roty(a1,a2,...)vol(id)
traj(ni)rotz(a1,a2,...)vol(id)
traj transp
traj(ni)transp(t1,t2,...)obj(id)
Définit une trajectoire sur la transparence de l´objet id (image ou volume).
traj transp col
traj transp luminance
traj transp texture
traj transp transp
traj transp vertex
traj transp col
traj transp transp
traj transp luminance
traj(ni)transp(t1,t2,...)col(c1,c2, ...)image(id)
Avec ci=ri,vi,bi
Définie une trajectoire sur la transparence de l´image
id en assignant la transparence ti aux pixels dont la couleur est ci et la transparence
0 aux autres pixels.
traj(ni)transp(t_11,t_12,...)transp(t_21,t_22,...)col(c_11,c_12, ...)col(c_21,c_22, ...)image(id)
Avec c_1j=r_1j,v_1j,b_1j and c_2j=r_2j,v_2j,b_2j
Définie une trajectoire sur la transparence de l´image
id en assignant la transparence t_1i aux pixels dont la couleur est dans l´intervalle
c_1i,c_2i et la transparence t_i2 aux autres pixels.
traj(ni)transp(t1,t2,...)luminance(lum1,lum2,...)image(id)
Définie une trajectoire sur la transparence de l´image
id en assignant la transparence ti aux pixels dont la luminance est lumi et la transparence
0 aux autres pixels.
traj(ni)transp(t_11,t_12,...)transp(t_21,t_22,...)luminance(lum_11,lum_12,...)luminance(lum_21,lum_22,...)image(id)
Définie une trajectoire sur la transparence de l´image
id en assignant la transparence t_1i aux pixels dont la luminance est fans l´intervalle
[lum_1i,lum_2i] et la transparence t_2i aux autres pixels.
Voir des exemples dans le fichier demo1_traj.func, fonctions
gen_TRAJ_IMA_TRANSP_COL() et TRAJ_IMA_TRANSP_LUMINANCE().
traj(ni)transp(t1,t1, ...)texture(num)vol(id)
Si le volume id a une texture multiple
(t1,t2,...,tn), cette commande définit une trajectoire de transparence
sur la texture num (1 <= num <= n).
traj(ni)transp(t11,t12, ...)col(t21, t22, ...)vertex(v)brush(id)
Permet de faire varier (t1,t2) transparences au centre et au bord du sommet v
du pinceau id.
traj validate
Permet de faire varier la validation d´un objet.
Exemple:
reaj(25)validate(1,0)vol(id)abs period(1);
le volume id sera visible 1 seconde et invisible 1 seconde périodiquement.
Options
abs
Par défaut une trajectoire ne peut être initialisée que si une trajectoire de même type n´existe pas,
ou si elle est terminée, elle commence alors à la valeur actuelle du paramètre animé,
l´option abs permet d´en préciser les modalités:
abs ou abs(1): la trajectoire est initialisée, même si elle n´est pas terminée,
et elle commence à la valeur courante du paramètre.
abs(2): la trajectoire est initialisée, même si elle n´est pas terminée,
et elle commence à la 1ère valeur de la trajectoire du paramètre.
ini
La transformation se fait à partir de la position d´origine.
Loi de mouvement
Par défaut la trajectoire est graduée linéairement, mais on peut donner une loi de
mouvement (cinématique) par l´une des options:
acc : la trajectoire est accélérée.
dec: la trajectoire est décélérée.
pend: la trajectoire est pendulaire.
law(x,y,z,...): la trajectoire suit la
law(x,y,z,...).
law(NIL) : pas de loi (valeur par défaut).
ext(n,c,f): la courbe 3D (ni vecteurs de paramètres) est construite
par extension (n,c,f) des valeurs (p).
Extension
traj(ni)T(p)obj(id)ext(n,c,f)
La courbe 3D (ni vecteurs de paramètres) est construite
par ext(n,c,f) des valeurs (p).
period
traj(ni)T(v)obj(id)period(p)
La trajectoire est périodique, de période p.
Si p=0 texturepériodique.
Si p=1 (valeur par défaut): 1, 2, ..., ni, 1, 2, ..., ni, ...
Plus généralement si per=1 et inc > 1: 1, 1+inc, ..., ni, 1, 1+inc, ..., ni, ...
Si p=-1: 1, 2, ..., ni, ni-1, ni-2, ..., 1, 2, ...
Plus généralement si per=-1 et inc > 0: 1, 1+inc, ..., ni, ni-inc, ..., 1, 1+inc, ...
Options:
period(p,inc): incrément (1 par défaut).
time
traj(ni)T(v)obj(id)period(p)time(t)
La trajectoire est périodique et s´achève après périodes.
Trajectoires de sommets d´objets
Ce sont des propriétés de sommets d´objets permettant de modifier dans le temps certains paramètres
de ces sommets et donc de les animer:
traj(ni)P(p)vertex(s)obj(id)
ni est la durée.
P est une propriété de sommet, p est la liste des vecteurs
paramètres de cette propriété.
s est le numéro du sommet.
id = identificateur de l´objet obj.
Les options sont valables.
L´option ini: transforme le sommet à partir de sa position d´origine.
Pour plusieurs trajectoires sur le même sommet seuls la première doit avoir cette option.
Exemples de propriétés de sommets:
col(r1,v1,b1,r2,v2,b2,...): couleurs aux sommets.
force(x1,y1,z1,x2,y2,z2,...): forces.
rotx(a1,a2,...): rotation en x.
roty(a1,a2,...): rotation en y.
rotz(a1,a2,...): rotation en z.
tran(x1,y1,z1,x2,y2,z2,...): déplacement.
Objet trajectoire
traj(id)animate(ni,ord)type1(p1) type2(p2) ... opt1(o1) opt2(o2) ...
Définit l´objet d´identificateur id et de type traj,
avec une durée ni et un ordre ord (0 par défaut),les options
permettent d´en préciser les propriétés.
De tels objets jouent le même rôle que la propriété traj définie ci dessus, mais sans
être attaché à un objet particulier. La commande:
traj obj(id1)=id2
attach la trajectoire id2 à l´objet obj id1 qui peut être de n´importe quel type y compris
une trajectoire, ce qui permet de définir des animations d´ordre arbitraire.
Le codage interne définit un bloc de type traj animate qui apparait comme tel dans la commande
edit obj(id).
Pour accéder à une telle trajectoire il faudra écrire:
traj animate obj(id);
Options:
precision(p): la trajectoire est incrémentée toutes les p images (1 par défaut).
traj back
traj(id)animate(ni)back(r1,g1,b1, ...)
Définie la trajectory id de ni images sur la couleur du
fond avec les options.
Trajectoires d´image
Les propriétés d´image id peuvent être
animées avec:
une trajectoire encapsulée:
traj(ni)propr(p1)image(id);
une trajectoire animée:
traj animate image(id)=it; assigne la trajectoire it à l´image id
traj(it)animate(ni)propr(p1,p2, ...)image(id)
definit une trajectoire de durée
ni images sur la propriété propr property.
proprpeut être:
Un vecteur unidimensionnel comme:
interpol(ida,id2)
luminance(lum1, lum2, ...) luminance.
rotx(an1,an2,...)
roty(an1,an2,...)
rotz(an1,an2,...)
transp(t1,t2,...)
Un vecteur bidimensionnel comme:
dim(nx1,ny1, nx2,ny2, ...)
move(x1,y1, x2,y2, ...)
radius(rx1,ry1, rx2,ry2, ...)
Un vecteur tridimensionnel comme:
dila(r1,v1,b1, r2,v2,b2 ...)
tran(x1,y1,0, x2,y2,0,...)
Un vecteur hybride comme:
transp(t1)transp(t2)col(r11,v11,b11, r12,v12,b12, ...)
col(r21,v21,b21, r22,v22,b22, ...))
transp(t1,t2)luminance(a1,a2,0, b1,b2,0, ...)
Un vecteru de chaines de caractères comme:
name("NNN.eee")number(n1,n2)
images de noms ("NNNxxxx.eee",
avec xxxx format("4D") dans [n1,n2], ni=n2-n1+1.
Option debug.
Remarques:
yes image doit être validé pour que les trajectoires
d´images soient prises en compte.
Les images doivent être validatées.
Options.
Voir un exemple avec le sous sous menu TRAJ_IMAdu fichier demo1_traj.func
Autre exemple:
ini traj;
image(1)dim(200);validate image(1)=1;
/* Order 1: images and horizontal translation */
traj(1)animate(12,1)name("../../bmp/A.bmp")number("4D",600,611)abs(2)period(1);
traj(2)animate(12,1)tran(0,-100,0, -300,-100,0)ext(5,1)abs(2)period(1);
/* Order 2: vertical translation */
traj(3)animate(12,2)tran(0,300,0, 0,0,0)abs(2);
traj animate traj(2)=3;
traj animate image(1)=1,2;
yes traj image;
}
Permettant une animation du deuxi&egrav;me ordre sur des (on suppose que lesimages
A0600.bmp A0601.bmp ... A0611.bmp existent).
premier ordre: images et translation horizontale
second ordre: translation verticale
Trajectoires de lumièress
traj ambiance light
traj(ni)ambiance(r1,g1,b1, r2,g2,b2, ...)light(id)
Définit une trajectoire de l´ambiance de la lumière.
traj col light
traj(ni)col(r1,v1,b1, r2,v2,b2, ...)light(id)
Définit une trajectoire de la couleur de la lumière id.
traj foc light
traj(ni)foc(f1,f2, ...)light(id)
Définit une trajectoire de l´ouverture de la lumière id
lorsque celle-ci est un spot.
traj roll light
traj(ni)oul(r1,r2, ...)light(id)
Définit une trajectoire du roulis de la lumière id
lorsque celle-ci est un spot.
traj tran
traj(ni)tran(x1,y1,z1, x2,y2,z2, ...)light(id)
Définit une trajectoire de déplacement de la position de la lumière id.
traj tran aim light
traj(ni)tran(x1,y1,z1, x2,y2,z2, ...)aim light(id)
Définit une trajectoire de la direction de la lumière id
lorsque celle-ci est un spot.
Trajectoires de rayons
traj(ni)radius(rx1,ry1, rx2,ry2, ...)brush(id)
Définit une trajectoire de ni images sur les rayons du
pinceau id.
Options:
ext(e,c,f): avec l´extension (e,c,f).
period(p): période.
Trajectoires de vues
traj aim view
traj(ni)tran(x1,y1,z1, x2,y2,z2, ...)aim view(id)
Définit une trajectoire de déplacement de la direction de visée de la view id.
traj(ni)rotx(a1,a2, ...)aim view(id)
Définit une trajectoire de rotation en x de la fuite de la view id.
traj(ni)roty(a1,a2, ...)aim view(id)
Définit une trajectoire de rotation en y de la fuite de la view id.
traj(ni)rotz(a1,a2, ...)aim view(id)
Définit une trajectoire de rotation en z de la fuite de la view id.
traj eye view
traj(ni)tran(x1,y1,z1, x2,y2,z2, ...)eye view(id)
Définit une trajectoire de déplacement de l´eye de la view id.
traj(ni)rotx(a1,a2, ...)eye view(id)
Définit une trajectoire de rotation en x de l´eye de la view id.
traj(ni)roty(a1,a2, ...)eye view(id)
Définit une trajectoire de rotation en y de l´eye de la view id.
traj(ni)rotz(a1,a2, ...)eye view(id)
Définit une trajectoire de rotation en z de l´eye de la view id.
traj foc view
traj(ni)foc(f1, f2, ...)view(id)
Définit une trajectoire de la focale de la view id.
traj roll view
traj(ni)roll(r1,r2, ...)view(id)
Définit une trajectoire du roulis de la view id.
traj T dim obj(id)
Retourne le nombre d´images de la trajectoire de type T de l´objet id.
traj T NP obj(id)
Retourne le numéro de l´image courante (entre 0 et ni-1) de la trajectoire
de type T de l´objet id.
Trajectoire de trajectoire
On peut définir des trajectoires sur des trajectoires (comme sur tout
objet d´anyflo), pour obtenir une animation d´ordre n
(chaque image à l´ordre n étant la trace de l´animation à l´ordre n-1).
Remarque:
Si plusieurs trajectoires id2,id3,... sont définies sur la même trajectoire id1,
la première est exécutée avec l´option ini (la source est la trajectoire id1 originale),
et la suivante sans cette option (la source est la trajectoire id1 transformée par id2).
Il faut avoir défini:
1) des volumes avec des objets trajectoires de type animate à l´ordre 1:
traj animate vol(id)=t1,t2,...
2) ces objets trajectoires d´ordre 1:
traj(ti)animate(n1,1)tansf(p)
3) affectés avec des objets trajectoires de type animate à l´ordre 2:
traj animate traj(ti)=ti,1,ti,2,...
4) ces objets trajectoires d´ordre 2:
traj(ti,j)animate(n2,2)transf(p)
etc..
Les volumes id seront animés pendant n1 images sur leurs trajectoires
i.
Les trajectoires ti seront animées pendant n2 images sur leurs
trajectoires ti,j et seront incrémentées toutes les n1 images.
etc..
interaction screen(n1) spécifie d´effacer l´écran
toutes les n1 images.
Voir un exemple dans le fichier demo1_animate.func.
Exemples
Deplacements d´objets
traj(6)tran(0,0,0, 200,0,0)vol(1)
Construit une trajectoire de déplacement du volume(1).
edit(traj tran vol(1))
imprime:
0: 0 0 0
1: 40 0 0
2: 80 0 0
3: 120 0 0
4: 160 0 0
5: 200 0 0
Trajectoire d´axes
traj(8)axis(0,0,1, 1,1,1, -1,1,1)vol(1)ext(1,1)
Construit une trajectoire sur l´axe de rotation du volume(1).
edit(traj axis vol(1))
imprime:
0: 0 0 0
1: 0.344888 0.344888 1.000000
2: 0.689775 0.689775 1.000000
3: 0.950979 1.000000 1.000000
4: 0.463234 1.000000 1.000000
5: -0.024511 1.000000 1.000000
6: -0.512255 1.000000 1.000000
-1.000000 1.000000 1.000000
Trajectoire de couleur
traj(8)col(1,.75,.5, .5,.75,1)vol(1)ext(1,1)
Construit une trajectoire de couleurs du volume(1).
edit(traj tran vol(1))
imprime:
0: 1 0.75 0.5
1: 0.928571 0.75 0.571429
2: 0.857142 0.75 0.642857
3: 0.785715 0.75 0.714286
4: 0.714286 0.75 0.785714
5: 0.642857 0.75 0.857143
6: 0.571429 0.75 0.928571
7: 0.3 0.75 1
Trajectoire de réflexion
traj(6)illum(1,1,0, 1,.5,0, 1,1,0)vol(1)
Construit une trajectoire de réflexion (variant entre 1, 0.5 et 1) du volume(1).
edit(traj illum vol(1))
imprime:
0: 1 0 0
1: 1 0.2 0
2: 1 0.4 0
3: 1 0.6 0
4: 1 0.8 0
5: 1 1 0
Trajectoire de spéculaire, brillance, transparence
traj(6)transp(1,0,0, 2,.1,.1, 1,0,0)vol(1)
Construit une trajectoire de (spéculaire, brillance, transparence) (variant entre
(1,0,0), (2,.1,1), (1,0,0)) du volume(1).
edit(traj transp vol(1))
imprime:
0: 1 0 0
1: 1.4 0.04 0.4
2: 1.8 0.08 0.8
3: 1.8 0.08 0.8
4: 1.4 0.04 0
5: 1 0 0
Trajectoire de déplacement de sommet
traj(6)tran(0,0,0, 200,0,0)vertex(1)vol(1)
Construit une trajectoire de déplacement du sommet 1 du volume(1).
Trajectoire de trajectoire
cube(1);traj vol(1)=1;
traj(100)col(1,0,0, 0,1,0, 0,0,1)abs(2)vol(1)period(-1);
traj(1)animate(ni1)tran(-300,0,0, 300,0,0)abs(2)period(1);
traj traj(1)=2,3;
traj(2)animate(ni2)roty(0,2*PI)abs(2)period(1);
traj(3)animate(ni2)rotz(0,2*PI)abs(2)period(1);
Construit un cube suivant une trajectoire linéaire (-300,0,0, 300,0,0).
Cette trajectoire tourne autour de l´axe y et autour de l´axe z.
Remarque: yes traj doit être actif.
Voir aussi