Je travail sur une rotation de boites dans un univers 3 D
Sur celle ci je veux faire passer des cercles de couleur.
le problème est que lorsque je passe sur les boites avec ce cercle, celui ci efface les contours des boites au fure et à mesure de son avancement.
Comment faire pour que l'instruction stroke() des boites ne soit pas effectuée par celle des cercles malgré que celle ci soit encadré par un pushMatrix() et un popMatrix() au niveau des cercles.
Merci d'avance pour la réponse
voici ci dessous le programme que j'ai écrit:
// ROTATION
float a ; //angle rotation
float b=2;
float c=64;
int num = 39;
int lol = 0;// Nombre de boites
//CIRCLES
float L = width/2; float H = height/2;
float m = 0;
float n = 5;
void setup() {
size(1280, 720, P3D);
}
void draw() {
println(frameCount);
frameRate(24);
ROT();
E1();
}
void ROT(){
// ROTATION
if ( frameCount <3200) {
pushMatrix();
lights();
strokeWeight(c);
background(0);
translate(width/2, height/2);
float offset = PI/b; // Angle offset entre boites
for(int i = 1; i < num; i++)
{
colorMode(HSB, 30,2,150);
pushMatrix();
pushMatrix();
stroke(lol);
popMatrix();
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;
popMatrix();
}
}
void E1() { // CERCLE
if (frameCount >500) {
rectMode(CENTER);
translate(L, H, 10);
pushMatrix();
fill(255,10);
translate(0, 0,400 );
stroke(#6203FF);
strokeWeight(n);
ellipse(0, 0, m, m);
m += 5;
n += 0.02;
popMatrix();
}
}
Hors ligne
Tu peux essayer d'utiler un pushStyle() et un popStyle() autour de ce que tu veux garder intact.
Hors ligne
Le problème, est que tu dessines une forme 2D dans un univers 3D. Pour résoudre ce problème, il faut après avoir dessiner ta forme en 3D désactiver la 3D pour dessiner ta forme 2D :
void draw() { println(frameCount); frameRate(24); ROT(); hint(DISABLE_DEPTH_TEST); camera(); noLights(); E1(); hint(ENABLE_DEPTH_TEST); }
Hors ligne
Merci Mushussu, c'est parfait ça marche et ça m'aura fait comprendre un peu plus le 3D. Dans mon esprit le fait de positionner une surface plane par une instruction 3D ( translate(x,y,z) en faisait une forme 3D.
L'instruction hint(DISABLE_DEPTH_TEST); est-elle une instruction java? Il faudra donc que j'étudie aussi java pour complêter processing.
Dernière modification par PHIFO (2014-10-04 23:01:54)
Hors ligne
C'est du processing, cette méthode était documentée dans les versions précédentes :
https://www.andrew.cmu.edu/course/60-25 … hint_.html
Mais elle ne l'est plus depuis la 2.0, à priori.
Si tu veux poursuivre ton apprentissage en programmation, l'étude du java t'apportera des compléments pour Processing. Il y a un MOOC actuellement qui est très bien fait :
http://www.coursera.org/course/initprogjava
Et pour poursuivre :
http://www.coursera.org/course/intropoojava
Hors ligne
Merci pour les renseignements, je suis allé voir les MOOC , c'est intéressant et je m'y suis inscrit pour pouvoir progresser
Hors ligne
Pages: 1