[Asymptote 3D] supprimer le scintillement des points d'un dé à jouer ?
J'ai codé ma première figure avec Asymptote en 3D qui est un dé à jouer avec des faces numérotées par un à six points représentant les nombres 1 à 6 de façon classique. Ce dé est manipulable avec la souris.
Le problème est que les disques représentant les points scintillent lorsqu'on manipule le dé.
Lorsque je commente l'instruction `draw(scale3(84a)*unitcube, surfacepen=white);` alors les disques ne scintillent plus du tout, mais du coup le dé devient transparent.
J'en conclus que le problème vient du fait que la couleur des sphères est en surimpression sur celle des faces et qu'une solution serait de colorier les faces en deux étapes comme on peut le faire avec Tikz :
- les faces sans les disques en blanc
- les disques sans le reste en bleu
Mais les commandes fill, filldraw ne fonctionnent pas avec la fonction `surface()`.
Comment peut-on colorier les faces du dé sans avoir de scintillement ?
Le fichier Asymptote, d'extension .asy est le suivant, (*le code n'est pas optimisé de façon à être lisible*) :
import three;
currentprojection =orthographic((5,2,3));
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=-1; // Rendu des figures ; -1 par défaut
size(6cm,0);
real a = 0.05;
// definition des faces du dé en 2D comme un patron
path carre = box ((0,0),(84a,84a)),
disque = scale(9a)*unitcircle,
patron1[] = shift(42a,42a)*disque,
patron2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque,
patron3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
patron4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque,
shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque
^^shift(70a,70a)*disque,
patron5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque
^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
patron6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque
^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
transform3 tX=shift(84a*X), tY=shift(84a*Y), tZ=shift(84a*Z);
path3 facegauche[] =path3(patron6,ZXplane),
facedroite[] =path3(patron1,ZXplane),
faceavant[] =path3(patron2,YZplane),
facearriere[] =path3(patron5,YZplane),
facehaut[] =path3(patron4,XYplane),
facebas[] =path3(patron3,XYplane);
draw(scale3(84a)*unitcube, surfacepen=white);
draw(box(O, 84a*(X+Y+Z)), gray);
draw(surface(facegauche),blue);
draw(surface(tY*facedroite),blue);
draw(surface(tZ*facehaut),blue);
draw(surface(facebas),blue);
draw(surface(facearriere),blue);
draw(surface(tX*faceavant),blue);