URL: https://linuxfr.org/users/devnewton/journaux/nanimopt-un-optimiseur-de-nanim Title: nanimopt: un optimiseur de nanim Authors: devnewton 🍺 Date: 2012年04月22日T22:52:30+02:00 License: CC By-SA Tags: animation, nanim, format_ouvert, 2d, jeu_vidéo, jeux_linux et jeu Score: 9 Bonjour Nal, La semaine dernière, je te faisais part de la [naissance du projet nanim]( http://linuxfr.org/users/devnewton/journaux/naissance-du-projet-nanim), une spécification et un ensemble d'outils pour un nouveau format d'animation 2D **destiné aux jeux vidéos**. Aujourd'hui, j'ai implémenté un nouvel outil destiné à optimiser les fichiers nanim pour opengl. Optimisation ============ Le but de **nanimopt**, c'est son nom, est de regrouper les nimages d'un fichier nanim en nombre minimum de textures carrées dont les côtés sont des puissances de 2 (de 32x32 à 1024x1024), ce qui est le plus agréable pour les cartes graphiques modernes. Ce regroupement d'images est un problème nommé _bin packing_ qui bien que NP complet peut se résoudre approximativement avec l'heuristique suivante : - choisir une taille de texture de départ (par exemple 64x64) - classer les images de la plus grande à la plus petite. - placer la première image en haut à gauche de la texture et noter les espaces rectangles libres restant. - recommencer en plaçant les autres textures dans les espaces libres, le plus en haut à gauche possible. - si ça ne rentre pas, essayer avec une texture plus grande ou construire une autre texture avec les images qu'on n'a pas pu placer.  Autres changements ================== J'ai ajouté au projet quelques fichiers d'aide ainsi qu'un SDK avec la spécification du format nanim et les outils précompilés. Il manque encore beaucoup de documentation, mais c'est un premier pas. Le futur ======== Mon prochain objectif est de gérer les nanims dans mon jeu, [Newton Adventure](http://devnewton.bci.im/projects/newton_adventure). J'aimerais aussi écrire des exemples de code pour utiliser des fichiers nanim avec SDL ou WebGL, mais je ne sais pas si j'aurai le temps de le faire. [Site du projet nanim](http://devnewton.bci.im/projects/nanim)