dans Soya3D

Soya 3D version 3 sur Bitbucket !

Soya est un moteur 3D pour Python. La première version de Soya a été utilisée dans plusieurs jeux et notamment Slune, Balazar et Balazar Brother. Plusieurs tentatives de seconde version n'ont pas donné grand chose, principalement faute de temps. Aujourd'hui, voici venir la version 3 dont les sources sont disponibles sur Bitbucket !

Les nouveautés les plus marquantes sont les suivantes :

  • Support de Python 3.4 et Blender 2.70

  • Vertex shaders et pixel shaders : Soya divise les shaders en pas moins de 20 'mini-shaders', ce qui permet de modifier une partie spécifique du rendu sans avoir à s'occuper du reste; de plus Soya accepte une syntaxe pythonique pour l'écriture des shaders !

  • Meilleurs performances : le processus de rendu a été entièrement réécrit, en utilisant les 'vertex buffer object' (VBO)

  • Éclairage et cell-shading par pixel

  • Antialiasing plein écran (Fullscreen antialiasing)

  • Licence GPL v3

Voici un exemple de mini-shader permettant de déformer un modèle 3D avec des "vagues" verticales. La déformation se fait dans le système de coordonnées de la caméra, c'est donc un "camera-space deform mini shader" selon la terminologie de Soya. La déformation dépend du paramètre temps (self.time) qui est mis à jour automatiquement par Soya.

wavy_mini_shader = soya.MiniShader("wavy", """
uniform float self.time
def void cameraspace_deform_mini_shader():
  current_vertex.x = current_vertex.x + 0.2 * sin(0.2 * self.time + 3 * current_vertex.y)
""")

my_body.add_mini_shader(wavy_mini_shader())

Ces mini-shaders permettent de réécrire une étape bien spécifique du rendu, Soya se chargeant ensuite de les rassembler pour créer les vertex et pixel shaders, ainsi que de les compléter avec les morceaux manquants si nécessaires (En effet, OpenGL ne permet normalement pas de réécrire qu'une partie du processus de rendu -- soit vous n'y touchez pas, soit vous réécrivez tout !). La série de tutoriels "mini-shader-xxx" dans les sources de Soya proposent d'autres exemples.

Les sources de la version de développement de Soya 3 sont disponibles sur Bitbucket. Cette version n'a pour l'instant été testée que sous Linux ; elle devrait cependant pouvoir se compiler sur les principales plateformes. Enfin, les premières images d'un projet secret de jeu utilisant Soya 3 peuvent être vues ici : Projet secret.

dans Soya3D

Projet secret

Serait-ce les premières images d'un projet secret ? Un nouveau jeu avec le moteur Soya 3D peut-être...?

éClaircie 0.1

La première version d' éClaircie, le moteur de blog statique et sans nuage, est disponible ! Vous pouvez la télécharger ici : Téléchargement sur PyPI.

(Voir les commentaires...)

Un visualiseur d'image en Javascript tout simple

Voici un visualiseur d'image en Javascript tout simple (~ 2ko) et sans dépendance (pas même JQuery).

Ce visualiseur est utilisé par éClaircie. Pour voir une démonstration vous pouvez jeter un oeil à ce message : Camp médiéval au château de Chinon.

Le code source est disponible dans la suite du message.

(Suite et commentaires...)

PyMedTermino 0.2 est disponible !

PyMedTermino (Terminologies Médicales en Python) est un module Python permettant d'accéder facilement aux principales terminologies médicales.

PyMedTermino 0.2 est disponible ; cette version est mise à jour avec la dernière version de la SNOMED CT et corrige un bogue dans le calcul des plus petits parents communs à un concept.

Il peut être télécharger sur PyPI (Python Package Index) : https://pypi.python.org/pypi/PyMedTermino

PyMedTermino 0.1 est disponible !

PyMedTermino (Terminologies Médicales en Python) est un module Python permettant d'accéder facilement aux principales terminologies médicales.

PyMedTermino 0.1 est disponible et peut être télécharger sur PyPI (Python Package Index) : https://pypi.python.org/pypi/PyMedTermino

BibReview 0.1.1

BibReview est un logiciel de gestion de base bibliographique. Voici la dernière version 0.1.1, à temps pour la préparation du Yearbook 2014 de l'IMIA !

Cerealizer 0.8.1

Cerealizer 0.8.1 is out!

This is a new bugfix release. Get it here: http://download.gna.org/soya/Cerealizer-0.8.1.tar.bz2

dans Soya3D

Towards Soya 2.0

Soya 2.0 is coming!

The most striking feature of Soya 2.0 is mini shaders. They allow to write Open GL / GL SL shaders so easily! With GL SL, you have to rewrite the entire rendering pipeline, even if you want to modify only a small part of it...

On the contrary, with Soya's mini shaders, you can write a mini shader that overrides a part of the rendering pipeline (ex customizing the lighting computation), or that adds an extra step in the rendering (ex deforming the model geometry). Then Soya assembles all mini shaders, adds the missing pieces of the rendering pipeline, and generates a GL SL shader.

Additionally, Soya's mini shaders can be written with a Python-like syntax ;)

Soya provides 16 classes mini shaders, each corresponding to a specific part of the rendering pipeline. Here is an example of a "camera-space deform" mini shader, which deforms the model's geometry in camera space:

wavy_mini_shader = soya.MiniShader("wavy", """
uniform float self.time
def void cameraspace_deform_mini_shader():
  current_vertex.x = current_vertex.x + 0.2 * sin(0.2 * self.time + 3 * current_vertex.y)
""")


my_body.add_mini_shader(wavy_mini_shader())
../_images/mini_shader.png

Mini shaders can be associated to any object: a Model, a Body (an instance of Model), a World (a group of other 3D object) or a Material. When associating a mini shader to a World, it is inherited by all objects inside this World, and automagically combined with objects' own mini shaders. For more details about mini shaders, see the mini-shader-* tutos!

Want to try and start hacking with Soya 2? You're welcome! The development version can be obtained on this mercurial repository: http://hg.tuxfamily.org//mercurialroot/oomadness/soya2.

Other new features include:

  • Support both Python 2.7 and 3.3,

  • Open GL SL shader support,

  • new exporters for Blender 2.6x, with a bugfixed Blender => Cal3D exporter, able to take into account vertex location, normal and texture coords when merging vertices,

  • LOD support for models,

  • pre-rendered background, usefull for slow computer or old-style games,

  • Partial Open GL ES support (not yet finished).

Cerealizer 0.8

Cerealizer 0.8 is out!

This new version supports both Python 2.x and Python 3.x! Get it here: http://download.gna.org/soya/Cerealizer-0.8.tar.bz2

Songwrite 2 0.4

../_images/icones.png

Songwrite 2 0.4 est disponible ! Cette nouvelle version majeure ajoute le support des tablature d'accordéon diatonique et des accords. De plus, les symboles de répétitions ont été (grandement) améliorés, et un nouvel écran de démarrage permet de choisir le type de partition voulu. Et de nombreux bogues ont été corrigés. Amusez-vous bien!

Songwrite 2 0.3

Songwrite 2 0.3 is out ! This major version proposes an improved interface, more usable on small screens, and adds many functionalities including appoggiatura, harmonics, F keys on staff, strumming direction, rests,... It also supports Koyabu board, ukulele, and lyre tablatures (my new instrument, although I'll probably be the only one to use them :-)). It requires EditObj 2 0.3.

There are also many bugfixes, and the licence is now GPL v3 (instead of v2).

Here is the full change log:

  • Touchscreen support

  • Lyre, Koyabu board and Ukulele support

  • Support for F key, appoggiatura, harmonics, strumming direction and rests

  • Smarter copy-paste (autochoose between by string / by note pitch more accurately)

  • Name sharp and bemol notes adequately, depending of the tonality

  • Add a window's icon

  • Fontsize options for screen and printing

  • Interval identification: select 2 notes and Songwrite display the corresponding interval in the title bar!

  • Licence changed to GPL v3

Bugfixes:

  • Lyrics not placed at the bottom were bugged in PS/PDF export/printing

  • Printing tabs with staffs was sometime causing an infinite loop

  • Printing tabs with staffs was not showing # and b rightly on the staff

  • After playing, select the previously selected notes

  • When reducing the length of ALL bars, the newly created bars at the end now use the lew length

  • Take capo into account when playing

  • Can play hammer / pull / legato / slide with no limit of amplitude

  • Fix g8 staff

  • Fix capo

dans Zaurus

Les Zaurus ne meurent jamais...

Après trois mois sur le Netwalker, je reviens finalement au bon vieux Zaurus... le Netwalker ne m'a pas convaincu, principalement pour les raisons suivantes :

  • Le clavier du Newalker est très mauvais, alors que celuis du Zaurus est excellent.

  • L'autonomie en veille du Netwalker est ridicule, de l'ordre de 5 jours, là où le Zaurus tient plus d'un mois. Ce point est important car, contrairement à un ordinateur "normal", le Netwalker (comme le Zaurus) ne s'éteint pas (le redémarrage étant beaucoup plus long, et l'appareil ne pouvant servir de PDA lorsqu'il est éteint).

Sans oublier d'autres points problématiques, moins importants, mais nombreux :

  • Le Netwalker est plus volumineux et plus lourd que le Zaurus. Il tient dans une poche de manteau, mais difficilement dans la celle d'une veste.

  • L'écran tactile du Netwalker est très imprécis. Lorsqu'on laisse le stylet appuyé sur l'écran, immobile, on voit le curseur de la souris danser tout autour... Du coup les doubles-clics très marchent une fois sur deux.

  • Les touches de raccourcis du Netwalker se déclenchent toutes seules ; j'ai dû les désactiver.

  • Je n'ai pas réussi à connecter le Netwalker à mon capteur solaire.

  • Bien que dépourvu de toute pièce mécanique, le Netwalker n'est pas silencieux : il émet un léger "Bzzz". Plus gênant : ce bruit continue quand l'appareil est en veille... très pénible si vous essayez de dormir à côté de votre machine ! Le Zaurus, lui, est absolument silencieux en veille comme en marche.

  • Les logiciels fournis avec le Netwalker n'ont pas été adaptés à la machine. En terme d'interface utilisateur, il s'agit d'un Ubuntu "standard de base" prévu pour ordinateur de bureau, sans même l'interface Netbook Remix. En terme de matériel, le processeur ARM Cortex 8 est sous-exploité faute d'optimisation des logiciels, par exemple le processeur supporte OpenGL mais aucun driver n'est fourni (au passage, cela explique pourquoi l'interface Netbook Remix n'est pas incluse : celle-ci repose sur Clutter, lui même utilisant OpenGL). Le résultat est désastreuses : bien que beaucoup plus puissant, le Netwalker paraît aussi lent que le Zaurus. En particulier, le logiciel d'agenda fourni (Mozilla Sunbird) est incroyablement lent.

Je soupçonne le Netwalker d'être aussi victime de la mode du "low- cost" : au motif de baisser les prix, on rogne sur la qualité, sur des éléments qui ne se voient pas forcément (comme le toucher du clavier). Au point de rendre l'engin très décevant... et de le voir finir à la poubelle ou au fond d'un placard...

Au final, le Netwalker surpasse le Zaurus pour surfer sur Internet et regarder des vidéos. Pour tout le reste, prendre des notes, jouer à des jeux, coder, gérer son emploi du temps et son carnet d'adresse,... le Zaurus l'emporte largement. Seulement voilà : je ne regarde jamais de vidéo, et je ne suis pas dépendant à Internet au point de ne pas pouvoir attendre de rentrer chez moi pour surfer. Donc le choix est vite fait !

dans Soya3D

Soya 0.15rc1 is out !

Soya 0.15rc1 is out !

Here is the Changelog :

  • January 2009 : Soya3D 0.15rc1

  • ODE 10 compatibility (required)

  • New collide property for lazer.

  • Quiet mode for soya initialisation and quit

  • New event management system. round event are now stored in main_loop.event and main_loop.raw_event.

  • New round_task attribut for main_loop.

  • Allow screenshot from backbuffer.

  • Allow to use WorldStep instead of WorldQuickStep for ODE iteration.

  • Allow None as angular_velocity, linear_velocity, torque, or force.

  • Allow None as hi_stop, lo_stop

  • Bugfixes

  • Fix delta_x and delta_y in coalesced event

  • Fix AngularMotorJoint API

  • soya initialisation now write in the common stdout and stderr

  • Fix font related segfault when soya wasn't initialised

  • Fix Pudding MainLoop (thanks David Martinez)

  • Work-around for OpenAL bug for absolute sound sources