J'ai développé cette petite animation en D.
J'ai fais pour qu'elle s'arrête après 1850 images. Pour cela j'ai mis toutes les variables à l'état final de l'image n° 1850 pour que le déroulement ne soit pas bloqué. Il y a certainement meilleure solution.
Mon problème est de faire apparaitre après l'image n° 1850 un autre séquence ou une autre image en surimpression .
Je démarre en programmation structurée. Il y a longtemps j'ai fais de la programmation par instructions de branchement (fortrant4 , basic). J'ai encore du mal avec les structures de contrôle et si j'ai une solution pour mon problème je pense que cela me permettra de mieux comprend la programmation.
//animation 3D par rotation de boites sur les 3 axes
float a; // angle de rotation
float b=2;
float c=64;
int num = 39; // Nombre de boites
void setup() {
size(1040, 800, P3D);
}
void draw() {
lights();
strokeWeight(c);
background(0);
translate(width/2, height/2);
float offset = PI/b; // offset angle entre les boites
for(int i = 1; i < num; i++)
{
pushMatrix();
colorMode(HSB, 60,17,150);
fill(i,38,150);
rotateY(-a*20 + offset*i+26);
rotateX(a/8 + offset/i*6);
rotateZ(-a*60 + offset*4*i);
box(450);
popMatrix();
}
a += 0.00015;
b += 0.08;
c -= 0.047;
if (frameCount>1850){ //arrêt de l'aniation
a = 0.27765;
b = 150.16;
c = -22.998;
}
}
Hors ligne
Voici une possibilité :
float a; // angle de rotation float b=2; float c=64; int num = 39; // Nombre de boites PImage bidule; void setup() { size(1040, 800, P3D); bidule = loadImage("http://rangefinder.ru/glr/data/500/2225.jpg"); } void draw() { lights(); strokeWeight(c); background(0); translate(width/2, height/2); float offset = PI/b; // offset angle entre les boites for (int i = 1; i < num; i++) { pushMatrix(); colorMode(HSB, 60, 17, 150); fill(i, 38, 150); rotateY(-a*20 + offset*i+26); rotateX(a/8 + offset/i*6); rotateZ(-a*60 + offset*4*i); box(450); popMatrix(); } if (frameCount < 1850) { a += 0.00015; b += 0.08; c -= 0.047; } else { hint(DISABLE_DEPTH_TEST); blend(bidule, 0, 0, width, height, 0, 0, width, height, ADD);; hint(ENABLE_DEPTH_TEST); } }
Hors ligne
merci pour la réponse , je vais étudier cela ce we
Hors ligne
Pages: 1