graphical blog 2

10 February, 2008

Pencil and xcb_xlib_lock: Assertion `!c->xlib.lock’ failed.

Filed under: Pencil, English tutorial, animation, software developement — Administrator @

After a try on Xubuntu (the light desktop XFCE version of Ubuntu) of Pencil Gnu GPL licensed animation software (for GNU/Linux, Mac OSX and clone of Wine including MS version called something like ixpi).
,

Pencil is a young but really good application for animation. It’s mainly oriented to traditional drawing animation, but can be used for other things.
Features :
* multilayer (several bitmap layers (on demand), several vector layers (on demand), one(SVN include several) camera layer, SVN include sound layers)
* pan, zoom, rotate of the view (allowing drawing on a rotated canvas) objects and camera
* tablet pen pressure management for drawing (on pencil, brush and dip pen).
* onionskin for the pleasure of animators :)
* import of bitmaps (and SVG vector format as bitmap).
* export as MOV, only on Mac and perhaps wine clones)
* export frame by frame png (with transparency) or opaque jpeg, this should be reopened easily with Gimp Animation Package or assembled in a movie with mencoder (in mplayer project) and transcode.
* export as SWF movie (my test was not really good, only vector part worked perfectly in svn version, with libming version 0.4.0.beta5)
* timeline with keying of layers objects
* interpolation of camera movements
* palette management (GPL gimp/Inkscape/Agave palette format isn’t managed for now)

Update : The following described problem was due to libXi < 1.1.3, you can easily correct this by installing libXi-1.1.3 (lib) and the dependence inputproto >= 1.4 (proto), the last one are on x.org mirrors, go to individual subdir and then the lib or proto subdirs to get these versions. Upgrade only these two libs works with x.org 7.2

I really liked it, then tried to compile it on my main Linux From Scratch production computer, the compilation works perfectly, but sadly, when I tried to launch it on my LFS box, I obtained the following error:

Pencil: xcb_xlib.c:41: xcb_xlib_lock: Assertion `!c->xlib.lock' failed.
Aborted

This is a common problem on xlib coded application, that yet aren’t tested on libxcb_xlib systems. XCB is a replacement of Xlib on X11 graphic interface, that allow faster access to graphical ressources a better way. XlibXcb is a wrapper to Xlib, allowing application coded for xlib to take transparently benefits of the new xcb architectures. But there is still some software that aren’t compatible, due to some light errors on (un)locking.

Some GNU/Linux distro patched libxcb to automatically pass this or doesn’t install xcb_xlib wrapper to avoid errors.
Some other have patched it with an environment variable to set to avoid the bug:

export LIBXCB_ALLOW_SLOPPY_LOCK=1
launch_your_application

Else the main two possible errors, for not corrected applications are:
xcb_xlib.c:41: xcb_xlib_lock: Assertion `!c->xlib.lock' failed.
xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.

More information on this Debian-devel message:
http://lists.debian.org/debian-devel-announce/2006/11/msg00010.html

The libxcb patch proposed in Linux from scratch with LIBXCB_ALLOW_SLOPPY_LOCK settable variable.

I don’t have only the bug only with Pencil, but with few other applications:
xsetwacom (from linuxwacom project) and few other. Searching on Google, at least some release of Sun implementation of Java suffer the same bug.

I hop this will help some people using those application and having bug to find a mean to avoid it until these application are patched.

31 December, 2007

Quelques liens à propos de Ruby, des SVG et du multimedia

Filed under: Tutorial in french, software developement — Administrator @

Un exemple de SVG dynamique

Gosu un toolkit pour developper des jeux (et accessoirement plus généralement multimédia) en Ruby et c++. J’apprecie particulierement la version Ruby qui est simple claire, compacte efficace. Permet sous linux d’utiliser l’opengl pour le 3d, l’acceleration de la partie 2D (bitmap, rotation, scale, zoom) en opengl, le son en SDL_mixer, la simulation physique avec chipmunk. La grosse limite est au niveau du vecto, rien pour le vectoriel 2D, il faut ecrire cette partie en OpenGL, rmagick permet bien d’ecrire fes courbes vectorielles dans des bitmap, mais c’est inutilisable pour retracer en temps réel.
Un excellent exemple en moins de 250 lignes de code commentées et propres OpenGLIntegration.rb, qui mélange décor 3D de montagnes fractales générées dynamiquement, et jeu 2d, avec des étoiles qui tournoient (bitmaps animés avec coloration dynamique) + score.

Ruby-goocanvas basé sur Gcompris est en train de passer progressivement à goocanvas et les resultats sont interessant (utilisation des svg, changement de la taille de la fenetre à volonté, etc…) d’après son développeur principal.

Un ‘concurrent’ de Gosu, Rubygame une plus grosse api, mais pas aussi facile d’acces, et peut etre pas avec la même puissance d’affichage (à voir ???)
agg4r un bind Ruby de la bibliothèque Agg (antigrain), qui utilise SDL, elle ne gère malheureusment que les primtives les plus simples, mais un exemple de viewer SVG en c++ et quelques autres integré aux sources la libagg laisse présager une certaine simplicité pour la gestion du SVG.

Pour la création/gestion des SVG, à explorer (je les notes juste comme ça, je ne suis pas encore convainqu et n’est pas eu le temps de creuser :
Ruby-SVG une bibliothèque SVG pour ruby, ca crée plutot des SVG a embarqué dans le source d’une page que des réels fichiers SVG visiblement, mais ca ne doit pas être un problème
Svugy Pour créer des fichiers SVG

Une liste de telephones mobiles supportant le SVG (je confirme mon V630i le fait), Inkscape est cité dans les docs de s/e.

Toujours à propos des appareils mobiles, OpenKode est une unification de differentes api standard, de façon a faciliter le deploiement d’application sur differents systemes mobiles sans redeveloppement, il utilise OpenGL (3D), OpenSL/ES (son), OpenVG (vecteurs 2d) et OpenMax (streaming video/audio).

A voir aussi, OpenVG, une api libre, comme OpenGL, mais dédiée dessin vectoriel 2d. Il y a déjà 2 implementations libre et à sources ouvertes : Celle de Zack Rusin utilisant QtOpenGL pour l’accéleration, et ShivaVG ne dépendant que d’OpenGL pour l’accélération, mais n’utilisant malheureusement pas les vertex buffer (tampons de vecteurs) ce qui le rend moins rapide qu’il ne pourrait. Visiblement, l’auteur, Ivan Leben, n’a fait qu’un upload dans le SVN il y a 5 mois et n’y a plus touché, domage. Pas de librairie OpenVG ruby non plus visiblement.

G3D-ruby est un bind ruby de G3D qui est elle meme une bibliothèque permettant d’utiliser les fonctions avancées d’OpenGL (vertex array, shaders (GLSL recommendé), …) ainsi que quelques fonctions utilies comme les collisions, physique, ray tracing, BSP tree.

La bibliothèque Shattered Ruby quant est basée sur la bibliothèque libre 3D de haut niveau Ogre3D (elle même basée sur OpenGL).

30 September, 2006

patch clip-path & mask bug - inkscape-0.44.1

Filed under: Inkscape, software developement — Administrator @

françaisJ’ai pondu un patch qui corrige quelques bugs importants relatifs aux masques et chemin de découpe dans inkscape-0.44.1.

Ces 2 attributs étaient perdus lors de simplification de chemin, lors de transformation d’objet en chemin [MISE A JOUR] ou lors d’application d’opération booléennes.
Le patch gzippé se trouve ici.
Pour l’appliquer, aller dans le repértoire ou se trouve le répertoire source inkscape-0.44.1 puis taper :

zcat fix_mask_clip-path_for_bool-simplify-obj2path.patch.gz | patch -N -p0

englishI made a patch for loose of mask and clip-path in inkscape-0.44.1.

The mask & cut-path attributes was lost when applying ‘object to path’, ’simplify path’ [UPDATE] or boolean operations.
The gziped patch is here.
To apply this, go in directory where is Inkscape-0.44.1 sources, then type:

zcat fix_mask_clip-path_for_bool-simplify-obj2path.patch.gz | patch -N -p0
20 August, 2006

Le web, c’est dangereux

Filed under: comic strip, drawing, software developement — Administrator @

Pour ceux qui ne s’en sont pas encore rendu compte (les pires victimes peut-être), il est très facile de procrastriner allègrement, en voulant consulter une chose précise sur le ouaibe.

Dr Folaweb, à mis sur son site la bd de Inti/Mojito, un dessinateur et narateur talentueux qui a mis en scène avec talent le problème :
BD sur les dangers du web
Voici la BD sur le blog de Inti/Mojito (avec plein d’autres choses sympa) :
http://mojito.over-blog.net/article-3516715.html

Il y a également sur son site un lien vers un générateurs de thèmes utilisé pour des nuits BD qu’il organise. Visiblement inspiré par l’excellent Scott McCloud. Je n’arrive plus à retrouver le lien qui y menait sur son site.

Pour rappel j’avais également fait un générateur de thèmes, et je viens d’en ajouter un pour les chimères (inspiré par le précédent billet (du chochon + éléphant), inspiré d’un autre générateur utilisé entre autre sur café salé

24 March, 2006

Python, jeux et OpenGL : pygext

Filed under: software developement, vectorial — Administrator @

Après avoir un peu participé à pysycache, et avoir vulu modifié certaines choses dans le code, pour passer plus rapidement certaines séquences, je me suis un peu plus accroché au language de script Python.

Déjà attiré, par l’utilsation dans les greffons de nombreux logiciels graphiques (Le logiciel de dessin bitmap et retraitement d’image The Gimp, le logiciel de dessin vectoriel Inkscape, le logiciel de mise en page Scribus (entièrement réalisé en python) et le très célèbre modeleur 3D Blender.), et les avantages en tant que language de script objet.

De nombreuses interfaces on des bindings python, comme GTK ou OpenGL. Je connaissait un peu pygame, utilisé notament par pysycache.

screenshot montagnes
Mais j’ai découvert, l’excellent pygext, c’est un excellent moteur de jeu, utilisant OpenGL, pour la 3d, mais aussi pour la 2d (vectoriel et bitmap), permettant ainsi de beneficier des acceleration 3d de toutes les cartes d’aujourd’hui, pour obtenir des choses fluides, et jolies, il utilise la lib de compilation JIT psyco pour accelerer l’execution du code. Il permet en environ 500 lignes de codes (avec 2/3 de lignes de commentaires) de magnifiques space invaders ou asteroïd, comme montré dans les exemples fournis avec les sources. Visiblement, il est en pleine refonte (transformation du coeur des librairies de python en C++ pour accelerer la gestion qui donne d’encore meilleurs performances. J’ai donc fait en quelques minutes un petit script d’essai de scroll parallax, c’est vraiment facile et rapide.

Voici le script (fait par quelqu’un qui ignore à peu pres tout de python), montagnes.py compressé et l’image utilisée, montagne1.png (fait en 1minute sous gimp). Si vous avez installé pygext, il suffit de placer ces 2 fichiers dans un même repertoire et de taper dans un terminal python montagnes.py.
Il faut que le périphérique de son soit disponible pour le faire fonctionner, et faire un ctrl-c dans un terminal pour quitter.

On peut aussi y meler des objets vectoriels 2d (voir les exemples de l’archive des sources) ou 3d (autant utiliser les caractéristiques d’OpenGL), mais je n’ai pas encore testé pour les objets 3d.

Powered by WordPress