Page 1 sur 1

[Résolu] Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 18:29
par Grizz
Bonjour
Désirant réaliser une animation 3D pour mes cours de géométrie dans l'espace, et comme j'apprends surtout par l'exemple (et avec la doc de maurice un peu quand même, bravo au passage), hop zou direction "LA" galerie. De GM of course. Je copie le code de la génération du cône, je compile, et voilà-t-y-pas que j'obtiens le cône (dont l'animation fonctionne à merveille) MAIS avec au dessus la moitié de l'image du cône à la dernière étape.
Me suis-je bien fait comprendre? J'en doute.
J'édite une petite image dès que je serai habilité à en joindre une.

J'ai le même problème avec le même code, que j'ai modifié pour générer un cylindre.
À ceux qui auraient compris ce que je veux dire, merci de vos lumières. C'est assez moche.

Mais pour une autre animation de ma confection, je n'ai pas ce problème. En revanche, j'ai un bug graphique lors d'une ou plusieurs étapes de l'animation : une partie de mon fond d'écran qui apparaît puis disparaît. Clair?
Mouais, image aussi.

C'est la carte graphique, docteur?

Merci à tous.
Cédric

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:21
par maurice
Grizz a écrit:Bonjour
Désirant réaliser une animation 3D pour mes cours de géométrie dans l'espace, et comme j'apprends surtout par l'exemple (et avec la doc de maurice un peu quand même, bravo au passage)


Y'a pas de problème, il ya de grandes chances ce ce soit à moi qu'elle serve le plus ...


Grizz a écrit:hop zou direction "LA" galerie. De GM of course. Je copie le code de la génération du cône, je compile, et voilà-t-y-pas que j'obtiens le cône (dont l'animation fonctionne à merveille) MAIS avec au dessus la moitié de l'image du cône à la dernière étape.
Me suis-je bien fait comprendre? J'en doute.


Désolé je n'ai pas compris.


Grizz a écrit:Mais pour une autre animation de ma confection, je n'ai pas ce problème. En revanche, j'ai un bug graphique lors d'une ou plusieurs étapes de l'animation : une partie de mon fond d'écran qui apparaît puis disparaît. Clair?
Mouais, image aussi.


Clair ! Problème effectivement de carte graphique. Pour palier ce problème, on peut compiler avec l'option -V puis exporter ou bien bien augmenter la valeur de -render=4, 6, 8, ... ou encore essayer avec l'option −glOptions=−indirect ... (p11-12 de la doc :wink: )
Le problème c'est que c'est pour une image mais pour une animation ...
c'est plus complexe.


Maurice

PS : Je viens de compiler la génération du cône avec pour dernière ligne :

Code: Tout sélectionner
A.movie()


sans problème

Par contre avec

Code: Tout sélectionner
 label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));


Je retrouve ton problème don voici une capture d'écran. pas d'idées pour le moment.
Capture-2.png

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:30
par Grizz
Merci pour l'image qui parle plus que mon charabia précédent. Voilà donc le problème.
Avec A.movie() effectivement je n'ai pas le problème, mais comment animer avec Adobe Reader? Avec un autre outil de visualisation?

Pour le second, je vais essayer les différentes options de compilation. Mais je compile déjà avec -V -render=4. D'ailleurs c'est bien dans ta doc que j'ai compris à quoi servaient ces différentes options.

Merci en tout cas.

Cédric

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:33
par GMaths
Confirmation du problème quand on remplace

Code: Tout sélectionner
A.movie()

(qui a produit l'image de la galerie)
par
Code: Tout sélectionner
label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));


Merci d'avoir signalé le problème.

Je n'ai pas non plus spontanément l'explication : mais je vais y réfléchir... et corriger l'exemple de la galerie quand le bogue sera identifié.

A propos de cône, j'ai justement eu à créer cela aujourd'hui. Je le mettrai plus tard en ligne, si c'est utile à quelqu'un.

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:37
par guiguiche
Grizz a écrit:J'édite une petite image dès que je serai habilité à en joindre une.

Done

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:40
par GMaths
GMaths a écrit:Confirmation du problème quand on remplace

Code: Tout sélectionner
A.movie()

(qui a produit l'image de la galerie)
par
Code: Tout sélectionner
label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));


Merci d'avoir signalé le problème.

Je n'ai pas non plus spontanément l'explication : mais je vais y réfléchir... et corriger l'exemple de la galerie quand le bogue sera identifié.


Une solution temporaire rapide : rajouter la commande erase(); juste avant la commande "label" finale.
Mais je vais revoir le code pour avoir une solution plus élégante.

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:55
par maurice
Grizz a écrit:Merci pour l'image qui parle plus que mon charabia précédent. Voilà donc le problème.
Avec A.movie() effectivement je n'ai pas le problème, mais comment animer avec Adobe Reader? Avec un autre outil de visualisation?


Il existe un outils qui permet de transformer le multi-page pdf généré par asymptote en Adobe Flash files (SWF files) qui s'appelle swftools dont m'avais parlé Gaétan.

Il existe pour windows et linux (malheureusement pas dans les dépots chez fédora).

Voila.

Maurice

édit : La solution de Gaétan marche très bien aussi

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 19:59
par GMaths
maurice a écrit:
Grizz a écrit:Merci pour l'image qui parle plus que mon charabia précédent. Voilà donc le problème.
Avec A.movie() effectivement je n'ai pas le problème, mais comment animer avec Adobe Reader? Avec un autre outil de visualisation?


Il existe ...


Qu'il essaye d'abord l'ajout de erase(); !
Cela doit être suffisant pour une animation dans un pdf.
Maintenant pour obtenir un swf, effectivement on pensera aux swftools, que j'utilise pour la création des fichiers swf qui sont en ligne.

GM a écrit:... quand le bogue sera identifié.


Je précise que je parlais de bogue de mon script : il n'y a pas de dysfonctionnement d'Asymptote.

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 20:27
par Grizz
Bien entendu la solution de Gaëtan fonctionne. Élégante ou non, cela n'est pas à moi de juger.
J'irai voir du côté de chez swftools quand j'aurai le temps, mais il est vrai que je préfère la solution avec
Code: Tout sélectionner
label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));

qui donne les boutons de contrôle.

Merci à maurice aussi pour −glOptions=−indirect qui enlève mes autres problèmes d'affichage.
Il faudra un jour que je songe à éplucher les docs plutôt que de perdre des heures à essayer de trouver par moi-même, ou de ré-inventer la roue. J'en connais un autre qui est très fort pour ça sur ce forum :wink:

Merci encore à tous.
Bonne soirée.

Cédric

Re: Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 20:44
par maurice
Bonsoir,

GMaths a écrit:Qu'il essaye d'abord l'ajout de erase(); !
Cela doit être suffisant pour une animation dans un pdf.
Maintenant pour obtenir un swf, effectivement on pensera aux swftools, que j'utilise pour la création des fichiers swf qui sont en ligne.


Je pensais à une dernière option :

Code: Tout sélectionner
asy -f gif cone_anim.asy


mais ces problèmes de fonds d'écran qui apparaissent sur certaines images dont parlait Grizz ...
Les images de ton sites n'ont pas ce problèmes. Y-a-t-il une recette magique pour éviter ce problème ?

Maurice

Une idée en lisant le message de grizz -GlOption= indirect ?

Re: [Résolu] Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 21:19
par GMaths
maurice a écrit:mais ces problèmes de fonds d'écran qui apparaissent sur certaines images dont parlait Grizz ...
Les images de ton sites n'ont pas ce problèmes. Y-a-t-il une recette magique pour éviter ce problème ?


Pour mon site, je crée des pdf multipages avec asymptote
et c'est un script derrière qui fait le boulot, avec d'autres outils.

-----

Pour le problème du fond d'écran comme tu dis, si on veut des boutons, l'animation s'ajoute comme un label...
... sur une currentpicture vide, si tu ne veux que l'animation !
Pour cela, il faut un erase juste avant ou tout dessiner dans une "picture" sans rien ajouter à "currentpicture".

C'est pas mal ce fonctionnement d'animation vue comme un label, car cela permet d'ajouter une animation avec boutons, à côté d'une image fixe si on le souhaite.

Pourquoi n'y a t-il pas de problème avec A.movie(), sans avoir vidé la currentpicture ? Car le procédé est totalement différent : cf différences dans animation.asy.

-----------

Pour la galerie :
il faut juste que je pense à ajouter de préciser qu'il faut parfois un erase(); supplémentaire dans certains exemples, où la currentpicture a servi d'image temporaire pour la création des images de l'animation.

Re: [Résolu] Bugs de visualisation d'une animation 3D

MessagePosté: Dimanche 27 Mars 2011, 22:48
par GMaths
Une version réactualisée (de ce script qui datait de 3 ans).

Améliorations principales :
  • utilisation de deux "pictures", en laissant la currentpicture vide ;
  • une boucle for avec variable entière : c'est mieux.

Code: Tout sélectionner
import three;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";
settings.render=0;

currentprojection=orthographic(1,0.5,0.5);

real   h=2, abscurv;
triple pO=(0,0,0), pS =(0,0,2h), pA=(h,0,0),
       pB=(0,h,0), pC=(-h,0,0), pD=(0,-h,0);
path3  basegras,base=pA..pB..pC..pD..pA, generatrice;

animation A;

picture pic;
size(pic,7.5cm,0);

dot(pic,"$S$",pS,align=N);
dot(pic,"$A$",pA,align=S); dot(pic,"$B$",pB,align=SE);
dot(pic,"$C$",pC,align=NE); dot(pic,"$D$",pD,align=NW);
draw(pic,pA--pS--pC^^pB--pS--pD);
draw(pic,pA--pC^^pB--pD,linetype("4 4")+grey);
draw(pic,base,grey+white);
draw(pic,(0.2h,0,2.1h)..(0,0.2h,2.1h)..(-0.2h,0,2.1h)..(0,-0.2h,2.1h),
      linetype("8 4")+.8bp+blue,Arrow3());

int n=90;     
     
for(int k=0; k<n; ++k) {
  abscurv = length(base)*k/n;
  generatrice=pS--point(base,abscurv);
  draw(pic,generatrice,grey+yellow);
  picture pic2=pic.copy();
  draw(pic2,pO--generatrice--cycle,1.5bp+grey);
  basegras=basegras..point(base,abscurv);
  draw(pic2,basegras,1bp+grey);
  A.add(pic2);
}

label(A.pdf(BBox(1mm,Fill(paleblue+white)),delay=100,"controls,loop"));


cone.pdf
(436 Kio) Téléchargé 100 fois