Page 1 sur 1

[Résolu] Supprimer le scintillement d'un dé à jouer en 3D ?

MessagePosté: Dimanche 09 Juillet 2017, 21:18
par AndréC
Bonjour,
Je suis en train d'apprendre Asymptote et ce qui m'intéresse est la 3D manipulable avec la souris. Pour ma première figure en 3D, j'ai dessiné un dé à jouer dont le code est ci-dessous. Malheureusement les disques représentant les points scintillent lorsque l'on fait tourner ce dé à la souris.
J'en conclus que je dois m'y prendre autrement pour colorier les faces du dé car lorsque je supprime l'instruction de la ligne 25
Code: Tout sélectionner
draw(tX*scale3(84a)*unitcube, surfacepen=white);
alors le dé ne scintille plus, mais du coup devient transparent.

je pense qu'il faudrait arriver à colorier une première fois les faces sans les disques, puis en une deuxième étape les disques eux-mêmes.
Seulement , je ne sais pas comment faire cela en 3D.

remarque : le dé mesure 4,2 cm et a = 0,05, d'où 84a = 4,2 cm.
Code: Tout sélectionner
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;
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,
      patron4[] = 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,
      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;
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);


A moins que quelqu'un n'ait une autre solution ?
Je vous remercie de vos lumières.

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

MessagePosté: Lundi 10 Juillet 2017, 10:34
par OG
Bonjour

C'est normal (réponse facile). En effet les disques sont exactement sur la surface des faces, aucun des objets
n'est positionné au dessus/au dessous...
Solution 1 (voir code ci-joint) : décaler de $\varepsilon=0.001$ chaque disque dans le bon sens.

Solution 2 (moins facile) : dessiner réellement chaque face comme le carré privé des disques

Code: Tout sélectionner
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;
    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,
          patron4[] = 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,
          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;
    transform3 tX=shift((84a+00.1)*X), tY=shift((84a+.001)*Y), tZ=shift((84a+0.01)*Z);     
    path3    facegauche[] =shift(0,-0.001,0)*path3(patron6,ZXplane),
          facedroite[] =path3(patron1,ZXplane),
          faceavant[] =path3(patron2,YZplane),
          facearriere[] =shift(-0.001,0,0)*path3(patron5,YZplane),   
          facehaut[] =path3(patron4,XYplane),     
          facebas[] =shift(0,0,-0.001)*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);


J'ai mis aussi une réponse sur stackexchange :)

O.G.

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

MessagePosté: Lundi 10 Juillet 2017, 11:54
par rebouxo
Oh, lumière, lumière, n'exagérons rien ;-).
La source des scintillements viens que tu as des objets plans l'un sur l'autre. Il suffit de décaler les cercles légèrement du cube pour que le scintillement disparaisse, j'ai décalé de h.

Je propose ceci comme code
Code: Tout sélectionner
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;
real h = 0.001 ;
surface cube = scale3(84*a)*unitcube ;

surface disqueX = scale3(9*a)*unitdisk ;
surface disqueY = rotate(90,Y)*scale3(9*a)*unitdisk ;
surface disqueZ = rotate(90,X)*scale3(9*a)*unitdisk ;


draw(cube, white, gray+linewidth(1bp));

surface[] face1 = {shift(42*a,42*a,84*(a+h))*disqueX} ;
surface[] face6 = {shift(14*a,14*a,-h)*disqueX,
         shift(14*a,42*a,-h)*disqueX,
         shift(14*a,70*a,-h)*disqueX,
         shift(70*a,14*a,-h)*disqueX,
         shift(70*a,42*a,-h)*disqueX,
         shift(70*a,70*a,-h)*disqueX} ;


surface[] face2 = {shift(-h,14*a,14*a)*disqueY,
         shift(-h,70*a,70*a)*disqueY} ;

surface[] face5 = {shift(84*(a+h),14*a,14*a)*disqueY,
         shift(84*(a+h),14*a,70*a)*disqueY,
         shift(84*(a+h),42*a,42*a)*disqueY,
         shift(84*(a+h),70*a,14*a)*disqueY,
         shift(84*(a+h),70*a,70*a)*disqueY} ;

surface[] face4 = {shift(14*a,84*(a+h),14*a)*disqueZ,
         shift(14*a,84*(a+h),70*a)*disqueZ,
         shift(70*a,84*(a+h),14*a)*disqueZ,
         shift(70*a,84*(a+h),70*a)*disqueZ} ;
        

surface[] face3 = {shift(14*a,-h,14*a)*disqueZ,
         shift(42*a,-h,42*a)*disqueZ,
         shift(70*a,-h,70*a)*disqueZ} ;


surface[][] points = {face1,face2,face3,face4,face5,face6} ;


for(int i = 0 ; i < 6 ; ++i)
  {
    for(int cpt = 0 ; cpt <= i ; ++cpt)
      {
   draw(points[i][cpt],blue,blue) ;
      }
  }

La principale différence est d'utiliser systématiquement les objets 3d, plutôt que de gérer des objets plans, pour les plaquer sur le dés. Plutôt une histoire de goût, mais je soupçonne que ta méthode soit plus efficace, si il y a beaucoup d'objets. Comme je ne peux pas concaténer des surface (dommage) j'ai fait des tableaux de surface (un pour chaque face) et un tableau de ces tableaux, pour éviter des copier-coller.

Olivier
Zut griller par Olivier !
@O.G. Pour la 2e idée, je pense que ce n'est faisable qu'avec des objets 2D ?
Il manque des choses dans asymptote : faire des trous, des chanfreins, bref toutes choses utile pour la CAO. :D

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

MessagePosté: Lundi 10 Juillet 2017, 13:27
par AndréC
@OG merci beaucoup, j'ai compris l'origine du problème et le code fonctionne parfaitement.
Je vais clore la question sur stackexchange.

@rebouxo, merci beaucoup pour le code, j'essaie de le comprendre mais malheureusement je n'arrive pas à le compiler en ligne de commande, j'ai ces erreurs :
de.asy: 5.1: no type of name 'surface'
de.asy: 5.29: no matching variable 'unitcube'

P.S:
- Comment dit t-on que le sujet est résolu ?
- Je signale un problème sur le forum : lorsqu'on clique sur le bouton « tout sélectionner » pour copier le code, on change de page et on se retrouve sur la page d'accueil des forums. En revanche, la sélection et la copie par clic droit à la souris fonctionne.

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

MessagePosté: Lundi 10 Juillet 2017, 13:38
par rebouxo
Tu édites ton premier message (toi seul peut le faire) et tu mets un [RÉSOLU] !
Par contre c'est bizarre les erreurs sur le fichier.
Quelle version d'asymptote ? Quel OS ?

Ce qui est surprenant c'est l'erreur à la première ligne.

@O.G. J'ai réussi à faire les trous :

03228f7b8ba6a3cf45000ed64fc3e713.png

Code: Tout sélectionner
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;
path carre = box ((0,0),(84a,84a)) ;
path disque = scale(9a)*unitcircle ;
path point1[] = shift(42a,42a)*disque ;
path point2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque ;
path point3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque ;
path point4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque ;
path point5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque ;
path point6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque ;
path patron1[] = carre^^point1 ;
path patron2[] = point2^^carre ;
path patron3[] = point3^^carre ;
path patron4[] = point4^^carre ;
path patron5[] = point5^^carre ;
path patron6[] = point6^^carre ;

filldraw(carre,blue,white) ;
filldraw(patron4,evenodd+white,white) ;


Mais je ne sais pas plaquer ces images 2D sur un cube.
Olivier

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Lundi 10 Juillet 2017, 14:16
par AndréC
@rebouxo j'utilise Asymptote 2.41 sur Windows 7 pro 64 bits

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Lundi 10 Juillet 2017, 14:32
par rebouxo
Même version, mais sous linux.
Un problème d'encodage de caractères ?

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Lundi 10 Juillet 2017, 14:36
par AndréC
rebouxo a écrit:Même version, mais sous linux.
Un problème d'encodage de caractères ?

Le fichier était encodé en UTF8 sans BOM (avec notepad++). Je viens de le convertir en UTF8 et j'ai cette erreur :
de.asy: 1.1: invalid token
de.asy: 1.2: invalid token
de.asy: 1.3: invalid token

En réencodant en UTF8 sans BOM, plus aucun problèmes !
C'est vraiment bizarre !

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Lundi 10 Juillet 2017, 22:42
par OG
Bonsoir

Comme j'écrivais ce matin il y a une solution 2, Asymptote peut transformer un contour 2D en une surface 3D.
C'est ce qui fait pour les étiquettes en 3D : bezulate est ton ami.
@monvoisinhavrais: il y a aussi extrude qui peut servir..

Il faut donc construire chaque face trouée et là plus besoin du décalage de $\varepsilon$
Pour que bezulate comprenne la construction 1 carré privé d'un disque, il faut faire
un reverse(disque), c'est la règle.

Voici le code
Code: Tout sélectionner

    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;
    path    carre = box ((0,0),(84a,84a)),
          // reverse est capital pour créer les trous avec bezulate
          // c'est la règle : unitsquare et disque ne seront pas dans le
          // même sens, donc bezulate comprend que c'est un trou
          disque = scale(9a)*reverse(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,
          patron4[] = 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,
          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;
    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);
// les faces trouées
    path[] gp6=bezulate(scale(84a)*unitsquare^^patron6);
    path[] gp5=bezulate(scale(84a)*unitsquare^^patron5);
    path[] gp4=bezulate(scale(84a)*unitsquare^^patron4);
    path[] gp3=bezulate(scale(84a)*unitsquare^^patron3);
    path[] gp2=bezulate(scale(84a)*unitsquare^^patron2);
    path[] gp1=bezulate(scale(84a)*unitsquare^^patron1);
    surface s1=shift((0,84a,84a))*rotate(90,Y)*rotate(90,X)*surface(gp1);
    surface s2=shift(84a,0,0)*rotate(-90,Y)*surface(gp2);
    surface s3=surface(gp3);
    surface s4=shift((0,0,84a))*surface(gp4);
    surface s5=shift((0,0,84a))*rotate(90,Y)*surface(gp5);
    surface s6=shift((0,0,84a))*rotate(90,Y)*rotate(90,X)*surface(gp6);
    draw(s6,red);
    draw(s5,red);
    draw(s4,red);
    draw(s3,red);
    draw(s2,red);
    draw(s1,red);



h142.png
h142.png (3.18 Kio) Vu 1504 fois


O.G.

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Lundi 10 Juillet 2017, 23:19
par rebouxo
Ou c'est documenté, ça bezulate ?

Je me disais que l'on devait pouvoir faire un extrudé. J'essayerais cela demain.

Olivier

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mardi 11 Juillet 2017, 07:33
par AndréC
@OG Génial, je vais essayer de comprendre le code puis de faire un vrai dé avec des trous à la place des points !

@rebouxo et @OG, j'ai copié-collé vos solutions sur le stackexchange français de tex à savoir texnique.fr ici : http://texnique.fr/osqa/questions/3425/asymptote-3d-supprimer-le-scintillement-des-points-dun-de-a-jouer

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mardi 11 Juillet 2017, 09:36
par AndréC
Je viens juste de translater le dé de -4.2X car je trouve qu'ainsi il se manipule plus facilement à la souris (et j'ai mis les couleurs lightolive et darkmagenta), ce qui donne le code :
Code: Tout sélectionner
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;
   real h=0.001;
    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,
          patron4[] = 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,
          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;
    transform3 tX=shift(-(84a+h)*X), tY=shift((84a+h)*Y), tZ=shift((84a+h)*Z);     
    path3 facegauche[] =shift(0,-h,0)*path3(patron6,ZXplane),
          facedroite[] =path3(patron1,ZXplane),
          faceavant[] =shift(h,0,0)*path3(patron2,YZplane),
          facearriere[] =shift(-h,0,0)*path3(patron5,YZplane),   
          facehaut[] =path3(patron4,XYplane),     
          facebas[] =shift(0,0,-h)*path3(patron3,XYplane);
//   draw(O--4.2X ^^ O--4.2Y ^^ O--4.2Z,red);    
    draw(tX*scale3(84a)*unitcube, surfacepen=lightolive);
    draw(box(O, 84a*(-X+Y+Z)), palecyan);
    draw(surface(tX*facegauche),darkmagenta);
    draw(surface(tX*tY*facedroite),darkmagenta);
    draw(surface(tX*tZ*facehaut),darkmagenta);
    draw(surface(-tX*facebas),darkmagenta);
    draw(surface(-tX*facearriere),darkmagenta);
    draw(surface(faceavant),darkmagenta);


Je m'attaque au plus dur comprendre vos codes à tous deux. :shock:

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mardi 11 Juillet 2017, 10:46
par AndréC
rebouxo a écrit:Ou c'est documenté, ça bezulate ?

Je viens de la trouver dans le manuel officiel en anglais
-> chapitre 8 base module
--> section 8.29 three
--->page numérotée 134 (p 139 du PDF).

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mardi 11 Juillet 2017, 11:40
par rebouxo
merci
Olivier

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mardi 11 Juillet 2017, 13:06
par OG
Pour bezulate, cela rejoint un des fils récents sur Asymptote : la documentation.
Celles et ceux qui ont suivi régulièrement le développement d'Asymptote ont plus
de chances d'être au courant que celle ou celui qui débarque, parcourt la doc...

@AndréC : je ne sais pas pourquoi la figure est "plus manipulable", il est clair que
pour la solution 2, la figure est plus complexe il y a plus de carreaux de Bézier donc
plus de calculs mais sur une machine "moderne" et "standard" je doute que cela
ralentisse notablement...

O.G.

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mardi 11 Juillet 2017, 14:12
par AndréC
OG a écrit:@AndréC : je ne sais pas pourquoi la figure est "plus manipulable", il est clair que
pour la solution 2, la figure est plus complexe il y a plus de carreaux de Bézier donc
plus de calculs mais sur une machine "moderne" et "standard" je doute que cela
ralentisse notablement...
O.G.

Ce n'est pas une question de ralentissement, elle est plus facile à manipuler, selon moi, car le dé tourne sur lui même comme le ferait un ballon autour de son centre.
Précédemment, elle tournait autour autour d'une arête latérale (celle de gauche me semble t-il). Ce qui avait pour effet d'avoir des rotations plus difficiles à diriger avec la souris.

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mercredi 12 Juillet 2017, 17:18
par OG
AndréC a écrit:
OG a écrit:@AndréC : je ne sais pas pourquoi la figure est "plus manipulable", il est clair que
pour la solution 2, la figure est plus complexe il y a plus de carreaux de Bézier donc
plus de calculs mais sur une machine "moderne" et "standard" je doute que cela
ralentisse notablement...
O.G.

Ce n'est pas une question de ralentissement, elle est plus facile à manipuler, selon moi, car le dé tourne sur lui même comme le ferait un ballon autour de son centre.
Précédemment, elle tournait autour autour d'une arête latérale (celle de gauche me semble t-il). Ce qui avait pour effet d'avoir des rotations plus difficiles à diriger avec la souris.


Ok, je comprends mieux. C'est peut-être juste une question de définition des paramètres de perspective, qui (bizarrement) ne sont pas les mêmes.
Avec la fenêtre OpenGL, la touche "c" affiche dans la console tous les paramètres... permet de comparer les deux fichiers asy.

O.G.

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mercredi 12 Juillet 2017, 19:08
par AndréC
OG a écrit:Ok, je comprends mieux. C'est peut-être juste une question de définition des paramètres de perspective, qui (bizarrement) ne sont pas les mêmes.
Avec la fenêtre OpenGL, la touche "c" affiche dans la console tous les paramètres... permet de comparer les deux fichiers asy.
O.G.

Voici les paramètres avec le dé du départ :
Code: Tout sélectionner
currentprojection=orthographic(
camera=(-2.0108149780213,14.4048903065911,0.973583358060801),
up=(-0.00700835867881202,-0.00309172725538799,0.0312695816480041),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.613913253540759);


Et ceux avec le dé translaté qui tourne autour de son centre :
Code: Tout sélectionner
currentprojection=orthographic(
camera=(11.8235956621239,4.72943826484957,7.09415739727435),
up=(-0.014547132307495,-0.005818852922998,0.0281244557944903),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.613913253540759);


Je n'y pige rien... :shock:

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mercredi 12 Juillet 2017, 21:40
par rebouxo
Ben camera, c'est la position de la caméra ;-). De l'observateur de ta scène 3D.
up indique où est le haut de la scène. zoom me paraît clair.
target n'est pas clair, je crois avoir compris que c'est la direction dans laquelle tu regardes, mais sans être certain.

Moi, je règle ma scène dans la fenêtre OpenGL, puis un coup de "c" est je copie les paramètres dans mon code.

Olivier

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

MessagePosté: Mercredi 12 Juillet 2017, 22:11
par AndréC
Merci.
Je viens de regarder dans le document « Asymptote 3D » de Bruno Colombel http://asy.marris.fr/ressources/ASY_3D.pdf , il est écrit que « camera » est l'endroit où elle se trouve et « target » l'endroit où elle regarde.

Je cite en p 8 « Projette en deux dimensions du point de vue d’un observateur positionné en camera qui regarde target »