Bonjour, je ne parviens pas à exporter en pdf mon sketch Processing (version 3.2.3) il est en P3D et il semble ne pas prendre en compte les lights() et le background. J'ai essayé toutes les méthodes citées ici https://processing.org/reference/librar … index.html mais rien à faire les ombres lights() n'apparaissent pas sur l'export. Si quelqu'un a déjà rencontré ce genre de problème, merci d'avance pour votre aide Je vous joins ci-dessous le code en question
import processing.pdf.*; import controlP5.*;
ControlP5 cp5;
boolean record;
float angle; float angleX; float tailleBox;
float angleVitesse;
float tailleSpheres;
void setup() {
size(550, 800, P3D);
cp5 = new ControlP5(this); cp5.addSlider("angle") .setPosition(30, 20) .setSize(150, 10) .setRange(0, 360) ;
cp5.addSlider("angleX") .setPosition(50, 780) .setSize(150, 10) .setRange(0, 360) ;
cp5.addSlider("angleVitesse") .setPosition(30, 40) .setSize(100, 10) .setRange(0, 360) ;
cp5.addSlider("tailleBox") .setPosition(330, 20) .setSize(150, 10) .setRange(10, 60) ;
cp5.addSlider("tailleSpheres") .setPosition(330, 40) .setSize(100, 10) .setRange(-20, 50) ; ; }
void draw() {
//if (record) { // beginRaw(DXF, "output.dxf"); // }
if (record) { beginRaw(PDF, "output.pdf"); }
noStroke(); //fill(255,0,0); lights();
for ( int x = 90; x < width-25; x +=50) { for ( int y = 90; y < height-20; y +=50) { pushMatrix();
translate(x, y, 0);
rotateY(radians(angleVitesse));
sphere(tailleSpheres);
popMatrix(); } }
for ( int x = 90; x < width-50; x +=80 ) { for ( int y = 90; y < height-50; y +=80 ) {
pushMatrix();
translate(x, y, 0);
rotateY(radians(angle)); rotateX(radians(angleX));
lights(); sphere(tailleBox);
popMatrix(); } }
if (record) { endRaw(); record = false; } }
void keyPressed() { if (key == 'r') { record = true; } }
|
Après un peu de recherche cela semble normal. L'enregistrement via beginRaw / endRaw ne prend en compte que les géométries "primitives" : lignes, triangles.. On conçoit que ça soit plus simple lors d'un export vers un format vectoriel.
Cependant est-ce qu'un export vectoriel t'es bien nécessaire ? Si ce n'est qu'une question de qualité tu as moyen d'obtenir des images de très bonne facture sans. Par exemple en utilisant saveFrame() ou save() sur une fenêtre assez grande (au besoin, créer un PGraphics à la volée et de la taille souhaitée, en utilisant scale() pour mettre le contenu de draw à la bonne échelle le moment venu). Et tu peux toujours enregistrer ces images dans un .pdf "après coup".
En revanche s'il te faut absolument du vectoriel, je n'ai pas d'idée de solution. Peut-être qu'un hack chelou donnerait des résultats, mais visiblement internet ne planche pas vraiment sur la question... :/
|