Bugs de visualisation d'une animation 3D

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Grizz

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

Message non lu 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
Dernière modification par Grizz le dimanche 27 mars 2011, 21:28, modifié 1 fois.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Bugs de visualisation d'une animation 3D

Message non lu 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
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
Grizz

Re: Bugs de visualisation d'une animation 3D

Message non lu 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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Bugs de visualisation d'une animation 3D

Message non lu 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.
guiguiche
Modérateur général
Modérateur général
Messages : 8210
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans

Re: Bugs de visualisation d'une animation 3D

Message non lu par guiguiche »

Grizz a écrit :J'édite une petite image dès que je serai habilité à en joindre une.
Done
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Bugs de visualisation d'une animation 3D

Message non lu 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.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Bugs de visualisation d'une animation 3D

Message non lu 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
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Bugs de visualisation d'une animation 3D

Message non lu 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.
Grizz

Re: Bugs de visualisation d'une animation 3D

Message non lu 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
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Bugs de visualisation d'une animation 3D

Message non lu 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 ?
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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é 401 fois