lundi 26 septembre 2011

Historique

Voici un historique rapide d'Animatoon, mon logiciel de dessin 2D (et plus tard d'animation).

Mise à jour le 12/06/2015


1) Introduction


Il existe au moins 3 versions d'animatoon. J'ai développé chaque version avec un langage ou un outil spécifique, afin de trouver le meilleur compromis pour concevoir le logiciel. Chaque version a ses avantages et ses inconvénients. Mon objectif est de trouver le meilleur compromis : le plus d'avantage et le moins d'inconvénients possibles ^^.

Les versions (voir plus bas pour le contenu et l'historique détaillé) :
- Version Purebasic (07/2011 - 12/2012, 07/2013, 06/2014, 04/2015-06/2015) - Windows

- Version GameMaker 8.0 (12/2010 - 03/2011, 05/2015) - Windows


- Version AGK2 (07/2014-09/2014) : version arrêtée en attente des corrections des nombreux bugs AGK. Windows & Android. Testé sous android, ne marche pas avec le stylet de la galaxy note, ce qui rend l'application inutilisable sur android (bug AGK).


Autres versions ou tests non concluants :
- Version Construct : abandonné dès mes premiers essais, ça buguait trop.


2) Historique (par ordre d'apparition)


Version Game Maker (12/2010- 03/2011, 05/2015)

C'est la première version développée. Elle est très aboutie et fonctionnelle.
En mai 2015, j'ai réouvert le fichier d'animatoon GM pour voir si je pouvais envisager de le continuer et pourquoi pas de corriger moi-même les bugs (vu que j'ai un peu progressé en code depuis 4 ans ^^).

Fonctions : 
- brush engine complet (paramètres taille, transparence, rotation, scatter, mixing de couleur et viscosité, paramètres aléatoire (rotation, taille, transparence, couleur), trait...)
- Pinceau (brush) : ouvrir un preset, sauvegarder un preset. Il existe de nombreux presets de brush (crayon, marker, calligraphie, watercolor, craie, fusain, acrylique...)
- outil : pinceau, gomme, dégradé

- Affichage : zoom et pan (bouger le canvas), miror et rotation du canvas (par contre ce n'est pas encore utilisable), centrer l'image
- Image : redimensionner le document
- calque : ajouter, supprimer, blendmode (normal, add, multiply, screen, les autres sont un peu bugués), alpha, nom, locked, visible
- fichier : importer une image sur le calque actif, enregistrer (format abi ou png (calque actif)), ouvrir un document

Infos techniques :
- niveau développement, j'ai utilisé les sprites et les "surfaces" directX liée à Game Maker. Donc, ça va très vite mais par contre c'est un peu bugué (du coté de GM), donc très limité au bout d'un moment, hélas.

Avantages :
- très fluide
- permet de travailler sur des documents très grands (5000*5000)
- permet d'avoir de très nombreux calques : j'ai fait des essais avec plus de 20 calques en 2000*2000 et ça ne ramait pas.

Inconvénients :
- la dll de la tablette graphique ne se charge pas toujours, donc il arrive qu'on n'ait pas la pression de la tablette graphique. C'est un problème lié à windows8 semble-t-il.
- les calques enregistrés (images PNG) sont au format prémultiplié, ce qui n'est pas utilisable pour le moment.
- si on utilise un alpha très bas (par exemple 20 sur 255), les couleurs deviennent vite horribles et un peu buguées.
Pour ces trois raisons, j'ai mis en pause le développement sous GM en mars 2011. C'est à cette période que j'ai commencé le langage purebasic d'ailleurs.


Les Versions GM 8.0

J'ai commencé à développer animatoon en décembre 2010, avec game maker 8.0.
J'ai eu quelques versions, sorties entre décembre 2010 et mars 2011.
La dernière version réalisée avec Game maker est disponible ici (version 0.320 - 03/2011)

(J'ai utilisé Animatoon (GM) 0.29 sur Téo & Loli, ma BD, réalisée avec Sunee).



0.322 (27/05/2015) :
- ResizeImage() : permet de redimensionner la taille du document
- Test : création d'une dll avec Purebasic, pour ajouter ou corriger les bugs de GM. Je vais essayer de créer une dll pour l'utilisation de la tablette graphique (wacom), mais je ne sais pas si je vais y parvenir, on verra.


0.321 (26/05/2015) :
- Menu : ajout de message pour les menus non actifs
- tablet : ça continue de bugué, mais c'est lié à Windows8 qui merdouille complètement à cause de leur mode tabletPC :(
- correction du monde mixing de couleur : pas encore OK du tout
- désormais le mixing ne prend en compte que le calque courant par défaut et ne mixe la couleur que si l'alpha est > 0


 0.320 (03/2011):
- on peut ouvrir une image pour les roughboards


Version purebasic (07/2011 - 2012,  07/2013,  04/2015-05/2015)


A partir de juillet 2011, j'ai commencé une version d'animatoon développée en purebasic. Il existe pplusieurs types de versions :
- Non-optimisée : Elles sont appelées Animatoon ou Teo.
- Optimisée : Elles sont appelées animatoon aussi. Désormais, ce sont les seules versions développées (en Purebasic). En général, je noterai "Screen" si j'utilise le Screen+sprite pour l'affichage ou "CanvasOpenGl" si j'utilise le canvas openGL pour l'affichage.

La dernière version Optimisée est disponible ici :


La dernière version non-optimisée est disponible ici :
La dernière version (non optimisée, développée en purebasic)


La version Optimisée (Purebasic) est en cours et stable. C'est la version que je développe désormais.
Depuis 2013, j'ai travaillé sur l'optimisation de cette version car c'était la plus prometteuse, notamment pour les calques en sortie.

J'espère ajouter par la suite un système de storyboarding (ou de BD) et d'animation.


Informations :
Il existe plusieurs versions réalisées en purebasic :

Les versions utilisant le canvas :

- La première (la plus complète) est aussi la plus lente et la moins optimisée. Elle ne prend pas en compte la pression de tablette. Au-delà de 800*600 ou de 3 calques, ça rame beaucoup sur les petites configuration.

- J'ai conçu une autre version (appelé TEO), qui contient encore plus de fonctions (tampon, texte, dégradé, shape, réglages d'image), mais niveau performance c'est presque identiqu, donc, je l'ai arrêtée elle aussi.

- j'ai réalisé de nouveaux essais depuis avril 2015 et je suis parvenu à concevoir (enfin !) le système de Tile que je recherchai (l'image de chaque calque est découpé en plein de petites images et je ne dessine que sur les tiles sur lesquels je passe). C'est optimisé et beaucoup plus fluide ! J'ai testé sur une image en 5000*5000 et ça ne rame pas, mais avec un seul calque pour le moment. Je suis en train (05/2015) d'ajouter un système de dalle pour chaque calque. ça devrait me permettre de travailler sur de grandes images (au moins 4000*4000), avec de nombreux calques (au moins 6 ou 7)


Version Utilisant le Screen :
- le 29/05/2015, j'ai testé un nouveau système utilisant : les images pour le dessin et les sprites et le screen pour l'affichage. Et je l'ai adopté désormais, ça marche très bien, c'est très rapide et fluide et permet d'avoir beaucoup de calques (testé avec plus de 10 calques en 2000*2000)

Versio Utilisant le cavans OpenGL :
- essai avec l'openGl gadget : rapide et fluide aussi. Cela permet d'avoir en plus les shaders sur le gadget, ce qui peut être vraiment intéressant. Par contre, c'est assez galère à coder pour le moment ^^. De plus, c'est moins optimisé que la version Screen.


Fonctions (je suis en train de réintégrer ces fonctions dans la version optimisée (screen)) : 
 - fichier : Ouvrir un document animatoon (et document teo), importer une image sur le calque actif, enregistrer (format abi ou png (calque actif)), exporter tous les calques en png ou en zip

- brush engine : taille, transparence, rotation, scatter, mixing de couleur et viscosité, rotation aléatoire couleur, trait...
- Pinceau (brush) : ouvrir un preset, sauvegarder un preset. Il existe de nombreux presets de brush (crayon, marker, calligraphie, watercolor, craie, fusain, acrylique...)
- outil : pinceau, gomme, dégradé
- Affichage : zoom et pan (bouger le canvas), centrer l'image
- Image : redimensionner le document, redimensionner la surface de trail
- calque : ajouter, supprimer, dupliquer le calque, blendmode (normal, add, multiply), alpha, nom, locked, visible


Infos techniques :
 Version Screen :
- pour l'affichage, j'utilise le screen et les sprites. Cela me permet d'avoir toutes les fonctions des sprites (rotation, zoom, blendmode, etc...)
- Pour le dessin (pour enregistrer ensuite des images en png par exemple), j'utilise la bibliothèque image.
- J'ai mis 1 option pour l'affichage optimisé : dessin en tps réel. Si on l'active, c'est plus lent sur les grosses images (pour le moment), mais on voit en temps réel les changements. Par la suite, lorsque j'ajouterai le système de tile, je pourrais certainement supprimer cette option (qui permet de dessiner tout en gardant une certaine fluidité sur les très grosses images).

 Version Canvas :
- niveau développement, j'ai utilisé le canvas et les images. Dessiner sur un canvas 5000*5000 est très rapide (pour les traits), mais le canvas n'a pas de transparence. Mais dès que je dessine une image dessus (un calque) 2000*2000, ça se met à ramer et ça devient inutilisable. J'ai donc du trouver un système d'optimisation.
- pour cela, je découpe chaque calque en dalle (64X64) et je n'affiche que la/les dalles du/des calques qui se trouvent à l'endroit où je peins.
- Par contre, je n'ai pas encore trouvé de technique pour avoir un zoom fluide. Je pense faire une copie de mon image (copie complète avec calque visible)


Avantages (purebasic) :
- les calques en sortie sont nickel, contrairement aux calques GM ou AGK
- beaucoup de possibilités d'édition
- possibilités d'avoir des blendmode (overlay, color burn...)
- avec ma technique de dalle, ça permet de travailler sur des documents très grands (5000*5000)
- pression des tablettes graphiques

Inconvénients :
- au départ, l'utilisation des images et du canvas (sans tile) faisait ramer l'application au delà de 800*600 avec 2 calques. Mais avec la version Screen, c'est plus fluide, et on peut avoir 10 calques sana aucun problème. 






Version AGK (07/2014-12/2014) 
- en Attente de correction de bugs AGK

Version développée avec AGK, donc elle est prévue pour android et windows.
Version très limitée et buguée. Je l'ai arrêté car je rencontrai beaucoup trop de bugs.

La dernière version date de décembre 2014, elle est disponible ici (0.32) :
http://www.dracaena-studio.com/images/tools/animatoon0.32.zip


Fonctions : 
- brush engine très complet  : taille (min, max, fade in, fade out), transparence (min, max, aléatoire, fade in, fade out), rotation (min et aléatoire), scatter (min, aléatoire), mixing de couleur (très bon) et viscosité, trait et pas, random couleur...
- Pinceau (brush) : ouvrir un preset, sauvegarder un preset. Il existe de nombreux presets de brush (crayon, marker, calligraphie, watercolor, craie, fusain, acrylique...)
- outil : pinceau, gomme, dégradé, shape (rectangle, ellipse), trait (speed line et normal), transformer calque (réduction, agrandissement), miror (h et v), rotation
- canvas : zoom et pan (bouger le canvas), centrer l'image

- calque : ajouter, supprimer, alpha, nom, lock (move, paint), visible, merge avec calque du bas
- fichier : importer une image sur le calque actif, enregistrer (format abi ou png (calque actif)), ouvrir un document
Avantages :
- c'est fluide
- c'est rapide à développer.
- le mélange des couleurs est réussi :) (je vais le reprendre pour mes autres versions)

Inconvénients :
- pas de gestion de la tablette graphique, c'est même très problématique, car il faut soit la désactiver, soit la mettre en mode souris pour utiliser cette version. C'est donc inutilisable en l'état avec AGK.
- les calques enregistrés (images PNG) sont dans un format limite. En plus, on ne peut pas sauvegarder l'image où on le désire, ce qui est assez pénible.
- bug d'affichage des calques (prémultiplié)
- si on utilise un alpha très bas (par exemple 20 sur 255), les couleurs ne peuvent plus recouvrir la calque du dessous, même si on passe 20 fois.
- la taille des images ne peut pas dépasser la taille de résolution de notre écran. Je pourrais utiliser un système de dalle là aussi pour pallier à ce problème, mais les autres problèmes (images prémultipliées, pas de gestion de dll ou de la tablette) ont été des facteurs déterminants dans l'abandon de cette version-ci.

Dommage car c'était vraiment prometteur et en plus, je pouvais avoir des version windows, android, mac et linux.
On verra si TGC se décide à corriger les bugs pré-cités (bug liés au rendertoimage, sauvegarde personnalisée, gestion des pointeurs autres que souris, ouverture aux dll, taille des rendertoimage plus grande que taille écran, etc...).





1 commentaire:

  1. Je ne peux que t'encourager à "releaser" le code en Open-Source. Pour avoir fait joujou quelques jours avec ton soft, je le trouve vraiment prenant et beaucoup plus intuitif que Synfig (avis perso).

    Merci pour ton soft en tout cas et bravo !

    RépondreSupprimer