[Logiciel 2D] Animatoon

Programmation d'applications complexes
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: [Logiciel 2D] Animatoon

Message par jbernard13 »

blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur :)
sous quel os tu as écris ton logiciel ?
Jbernard13
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

jbernard13 a écrit :
blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur :)
sous quel os tu as écris ton logiciel ?
Sous XP, mais j'ai seven, je ferai une compil et je testerai sous seven pour régler le problème.
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: [Logiciel 2D] Animatoon

Message par jbernard13 »

blendman a écrit :
jbernard13 a écrit :
blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur :)
sous quel os tu as écris ton logiciel ?
Sous XP, mais j'ai seven, je ferai une compil et je testerai sous seven pour régler le problème.
Ok merci
Jbernard13
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

salut

Quelques news concernant le logiciel Animatoon.

J'ai ajouté :
- le système de calque : Les boutons sont fonctionnels, mais pas le système (autrement dit, on peint toujours sur le même calque) : gadgets fonctionnels : créer des calques, supprimer un calque, rendre visible ou non, sélectionner le calque actif, etc.
- ajout d'une roughboard (une image servant de nuancier, sur laquel on peut prendre la couleur)
- ajout des interfaces , mais elles sont plus ou moins vides pour l'instant : nuanciers, options, infos, brush, presets, channels.
- les gadgets présents (panneau paramètre du brush, sur la gauche) sont presque tous opérationnels
- menu opérationnel : save et open (à moitié fini) / ok : export (jpg, png), import image as layer
- pipette : quand on clic sur le canvas en maintenant la touche control appuyé, on sélectionne la couleur sous le curseur.
- correction de bugs et un peu d'optimisation.
- nettoyage du code et ré-organisation (bon, ça on s'en fout lol).


Et le screenshot qui va bien :
http://blendman.free.fr/dev/pb/animatoo ... n0.151.jpg

Puis l'exe (window Xp) :
http://blendman.free.fr/dev/pb/animatoo ... 151_XP.zip

Je prépare un exe pour seven ou vista. Je le posterai bientôt.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: [Logiciel 2D] Animatoon

Message par Thyphoon »

très beau boulot ! :)
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: [Logiciel 2D] Animatoon

Message par jbernard13 »

tres bon boulot , en plus il marche bien sous seven
Jbernard13
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

salut

Merci pour vos commentaires.

Voici une nouvelle version : la 0.153

Ajouts :
- choix du langage (eng et fr) (c'est long à faire boudiou :))
- rotation du brush (on peut définir la rotation, et choisir si on fait un random de cette rotation)
- on peut définir la taille en largeur/hauteur du brush
- maintenant, si on ajoute des brushs dans le dossier brush, cela s'actualise en temps réel
- début de brush animé (pas encore fonctionnel, juste l'interface).
- j'ai ajouté quelques brushs nouveaux
- ajout d'un fichier d'aide .chm (non fini)
- un peu de corrections de bugs qui restaient par ci, par là (il en reste encore quelques uns)

Download :
http://blendman.free.fr/dev/pb/animatoo ... 53_win.zip

voiloutch.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

salut

voici une mise à jour de mon soft animatoon : version 0.156.

Download
http://blendman.free.fr/dev/pb/animatoo ... 56_win.zip

Screenshot 0.156
Image

Nouveautés
- les layers sont enfin actifs : on peut créer un calque et dessiner dessus, le rendre visible ou non, le locker (clic droit dessus), changer son opacité (on ne peut pas encore changer sa position, mais j'y travaille :))
- nouveaux outils : des gommes (circulaire et en forme de brush) (menu/tools ou menu/outils en fr)
- menu édition : ctrl+X efface désormais le calque actif
- export : on peut exporter l'image complète (les calques visibles) en png (avec transparence) et jpg, ou alors exporter uniquement le calque actif en png (transparent)
- import : maintenant, lorsqu'on importe une image (un png par exemple), cette image est chargée sur le calque actif
- la pipette ne marchait plus, je l'ai remise
- canvas : j'ai ajouté une bordure, en fonction de la taille du document pour centrer le canvas
- onglet "gen" : la plupart des checkbox fonctionne : la checkbox mix désactive le mix (mélange de peinture) (mais je l'ai inversé, je dois corrigé ça :))
- à la sortie du soft, je sauvegarde dorénavant : la largeur/hauteur du brush, si le checkbox mix est coché et d'autres bricoles
- correction de bugs et un peu d'optimisation

Pour le moment, ce n'est pas optimisé, donc au delà de 1500*1500 et avec plus de 3 ou 4 calques, ça commence à ramer.

Note et Todoliste
- Pour l'instant, pour changer la taille du document, il faut modifier le fichier optionsini (doc_W et doc_H), mais je vais changer cela bientôt.
- Les mode de fusions ne vont pas tarder (add et multiply pour l'instant sont ok, mais j'ai un problème avec overlay* : lorsque j'efface le canal alpha d'une image, il garde la couleur (logique) je dois donc trouver comment rendre réellement transparent la calque, car overlay modifie les couleurs en fonctions des nuances de gris. Je dois donc faire un overlay qui ne prend en compte que l'alpha > 0 :P


Optimisation

1. Modification des brushs
Pour les ffets de brushs dynamiques, je fais un update à cahque tour de boucle, et je redessine plusieurs fois le brush (point(), alpha() et plot() c'est pas rapide, hein :)).

Etant donné qu'il y a une incompatibilité entre les screen et les tablettes graphiques, je ne peux pas utiliser les screen et les sprites3D.. dommage, car je gagnerai beaucoup en dessinant sur l'écran avec des sprites 3D.

Mais par contre, je me suis dit que je pouvais faire l'opération (modification des brushs dynamiques) sur un screen situé en -windowheight(0) et ensuite copier le sprite optenu vers mon image de brush.
Je pense gagner un peu de vitesse, je ferai des tests pour voir si ça fonctionne.

2. Layers, image et canvas.
Je voudrais optimiser tout cela, surtout l'affichage des calque, mais je ne sais pas comment faire précisément.
j'ai bien quelques idées en tête, mais de là à réussir à les concrétiser :).

Pour l'instant, voici comment je procède :
- je dessine d'abord sur une image (mon calque courant)
- puis, j'update le canvas en dessinant dessus tous les calques + le calque courant modifié, avec ce code :

Code : Tout sélectionner

 
StartDrawing(CanvasOutput(#canvas)) 
DrawingMode(#PB_2DDrawing_Default)
  Box(0,0,doc_w,doc_h,RGBA(255,255,255,255)) 
  If backgroundCanvas = 1 ; si on a mis en background en fond , par exemple, un checkker ou un papier pour peindre)
    DrawImage(ImageID(#canvasBG),0,0)
  EndIf  
; puis je dessine chaque calque
  DrawingMode(#PB_2DDrawing_AlphaBlend)
  ForEach layers() ; la liste de mes calques
    If layers()\visible = 1 And layers()\opacity >0
      DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
    EndIf    
  Next
  StopDrawing()
Comme je fais un update à chaque tour de boucle, forcément, ça rame avec une image en 2000*2000 avec 5 calques :(.
Ce serai plus rapide de dessiner directement sur le canvas, mais le canvas n'es tpas "multi-calques" ni transparent ;).

Du coup, je me suis dit que si je n'avais pas de blendmode, ce serait plus facile à optimiser :
- je créerai 3 images : dessus, calque courant, et dessous. Dessus : serait une image créée à partid e tous les calques situé au dessus du calque courant, et idem pour dessous.
- je ne ferai que "l'update" du calque courant lorsque je dessine sur le canvas et de 2 ces 2 autres images. JE n'aurai donc au final qu'à faire un update du canvas avec ces 3 images (au lieu de tous mes calques). C'est comme si je n'avais jamais plus de 3 calques au final.
- Les 2 autres "calques" seraient recalculés lorsque je changerai un paramètre d'un des autres calque(via l'onglet calque) ou que je changerai de calque courant par exemple.
- Mais je ne peux "fusionner" les calque au-dessus et en dessous du calque courant qu'avec un mode "normal", pas avec un autre mode, car les effets de blendmode de chaque calque sont calculés en temps réel sur tous les calques. Donc, cette idée ne marche plus avec les blendmode.

Du coup, je pense mettre une option pour l'update des autres calques que le courant, pour faire un update en fonction d'une boucle liée à un timer (dans les options :)).

Mais j'aimerai surtout pourvoir ne travailler que sur les pixels affichés à l'écran pour le calque de ces effets blendmmode.

Vous auriez une idée pour cela ?
Je me demande si je ne pourrais pas utiliser le "zoom" d'Attomo pour cela :).

Si vous avez des idées pour l'optimisation de ce genre de logiciel, n'hésitez pas :D.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [Logiciel 2D] Animatoon

Message par Ar-S »

Pas le temps de tester pour le moment mais un grand bravo pour ce travail.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
stombretrooper
Messages : 117
Inscription : dim. 21/déc./2008 18:39

Re: [Logiciel 2D] Animatoon

Message par stombretrooper »

Woaw sa avance bien à ce que je vois.

Pour l'optimisation, pour le systèmes de tes 3 layers (je spécule le code que je lance n'est pas sur de marcher, j'ai pas test) :

Pour la couche basse (où layer_select est la couche choisi par l'utilisateur) :

Code : Tout sélectionner

layer_select=3
CreateImage(#layer_inferieur,doc_w,doc_h, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(#layer_inferieur)) 
DrawingMode(#PB_2DDrawing_Default)
  Box(0,0,doc_w,doc_h,RGBA(255,255,255,255)) 
  If backgroundCanvas = 1 ; si on a mis en background en fond , par exemple, un checkker ou un papier pour peindre)
    DrawImage(ImageID(#canvasBG),0,0)
  EndIf  
; puis je dessine chaque calque
  DrawingMode(#PB_2DDrawing_AlphaBlend)
layer_i.u=0
  ForEach layers() ; la liste de mes calques
    If layers()\visible = 1 And layers()\opacity >0 and layer_i<layer_select
      DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
    EndIf
  layer_i+1  
  Next
  StopDrawing()
Pour la couche haute :

Code : Tout sélectionner

layer_select=3
CreateImage(#layer_sup,doc_w,doc_h, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(#layer_sup)) 
  DrawingMode(#PB_2DDrawing_AlphaBlend)
layer_i.u=0
  ForEach layers() ; la liste de mes calques
    If layers()\visible = 1 And layers()\opacity >0 and layer_i>layer_select
      DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
      
    EndIf
  layer_i+1
  Next
  StopDrawing()
Après tu as plus qu'à afficher les 3 images comme tu as décris si dessous ? Je sais pas si marche, j'ai pas d'image sous la mains pour test.


Sinon tu recalcul le canvas uniquement quand l'utilisateur fait des modifs dessus non ?
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

Ar-S a écrit :Pas le temps de tester pour le moment mais un grand bravo pour ce travail.
merci :)
En fait, avec purebasic c'est impressionnant comme c'est rapide à développer :)
Là, j'ai commencé le 7 juillet 2011, donc avoir un logiciel de dessin en une dizaine de jours, c'est quand même excellent :).

stombretrooper a écrit :Woaw sa avance bien à ce que je vois.
oui, mais là, j'arrête de bosser sur ça, j'ai appris ce que je voulais (et le soft est utilisable tel quel, donc, je le modifierai de temps en temps, quand j'aurai le temps :)).
Je vais me remettre sur notre jeu ;) et pouvoir commencer en parallèle l'éditeur de map du jeu que je pourrais filer à certains joueurs :D.
Pour l'optimisation, pour le systèmes de tes 3 layers (je spécule le code que je lance n'est pas sur de marcher, j'ai pas test) :
Merci pour le code, ça doit marcher effectivement (en fonction de la position du calque notamment).

Le prblème que je rencontre, ce sont les blendmode (mode de fusion) des calques : mode nomal ça va, mais dès que je choisis un autre mode (multiply, doge color, color burn, overlay..), là, je dois conserver tous les calques hauts en temps réel, car l'effet doit se faire sur les calque du dessous, dont le calque courrant.

En gros je fais ceci pour la couche du bas :

Code : Tout sélectionner

layer_select=3
CreateImage(#layer_inferieur,doc_w,doc_h, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(#layer_inferieur))
layer_i.u=0
  ForEach layers() ; la liste de mes calques
    If layers()\visible = 1 And layers()\opacity >0 and layer_i<layer_select
select layers\blendmode
case 1 ; normal
DrawingMode(#PB_2DDrawing_AlphaBlend)
case 2 ; multiply (produit)
DrawingMode(#PB_2DDrawing_CustomFilter)      
 CustomFilterCallback(@bm_multiply())
case 3 ; add/color doge (couleur densité -)
DrawingMode(#PB_2DDrawing_CustomFilter)      
CustomFilterCallback(@bm_add())
case 4 ; color burn
DrawingMode(#PB_2DDrawing_CustomFilter)      
CustomFilterCallback(@bm_colburn())
; etc.... pour chaque blendmode
endselect
      DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)     
    EndIf
  layer_i+1
  Next
  StopDrawing()
Pour la couche basse, je peux créer cette image, mais pour la couche haute, les calques avec des effets doivent être recalculés à chaque tour de boucle :P.

Donc, je dois trouver une autre méthode pour cela :p. Je testerai l'exemple du zoom d'Atomo, qui est vraiment intéressant (n'afficher que les pixels de l'écran, notamment pour le recalcul des blendmode, ça devrait être intéressant :)).
Sinon tu recalcules le canvas uniquement quand l'utilisateur fait des modifs dessus non ?
oui, bien sûr, mais ça rame quand même vite sur les grandes images
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: [Logiciel 2D] Animatoon

Message par Atomo »

Tu as testé les performances avec le debugger désactivé ?
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

Atomo a écrit :Tu as testé les performances avec le debugger désactivé ?
pour ton code ? oui, c'est pas mal du tout ;).
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: [Logiciel 2D] Animatoon

Message par Atomo »

Non, pour ton logiciel Animatoon :D
Des fois un code peut paraître lent mais sans le debugger c'est le jour et la nuit.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [Logiciel 2D] Animatoon

Message par blendman »

Atomo a écrit :Non, pour ton logiciel Animatoon :D
ah oki. Ben oui, hélas.
Et même sans le débugger ça rame avec les images >1500*1500...

Par contre, j'ai essayé d'adapter ton code mais je n'ai pas réussi à l'utiliser sur différents calques. j'ai posté un code ici :
http://www.purebasic.fr/french/viewtopi ... 7&start=30

Au fait, je ne sais pas si certains veulent le code sources d'animatoon, dites-le moi et je le posterai ;)
Répondre