Historique

1 Les débuts

        Le développement d´anyflo s´étale sur plus de vingt cinq ans:
        J´ai rencontré l´image de synthèse à une époque où les ordinateurs et les programmes étaient très frustres et j´ai été confronté très tôt à des problèmes d´implémentation qui n´avaient jamais été ni posés ni résolus. J´ai donc proposé des méthodes personnelles (contre tous les avis autorisés) qui se sont révélées pertinentes par la suite. C´est ainsi que dans les années 80 je préconisais, et implémentais, des langages utilisateurs alors que le tout mouse était à l´honneur. Quelques quinze ans plus tard Maya sortait son langage MEL, présenté comme une grande nouveauté...
        En tant qu´artiste je ne me satisfaisais pas des outils existants qui étaient généralement conçus par des informaticiens sans connaissance réelle des problèmes artistiques. En tant que programmeur, je ne me satisfaisais pas des langages existants, trop contraignants.
        Mon but était de construire un langage ayant les spécificités d´un langage informatique général (comme le C), assez tolérant pour libérer le programmeur des petits tracas de la programmation ordinaire (problèmes de malloc, cohérences des déclarations, ...), susceptible de satisfaire les artistes (orienté graphique, intuitif, temps réel, ...) et surtout ouvert, c´est à dire susceptible de généralisation, et tout ceci sans perdre la puissance des langages de programmation classiques.
        Je conçus d´abord, en 1986, un interpréteur assez élémentaire dont la syntaxe était voisine de celle du C mais qui ne possédait pas les caractéristiques d´un véritable langage de programmation (en particulier toutes les variables étaient globales). Cependant, dès cette époque, le langage était orienté objet, en ce sens que du code pouvait être attaché à un objet. Cet interpréteur était le coeur d´un programme graphique, anyflo, intégrant les principaux algorithmes de la synthèse et de l´animation 3D. Mais front la lenteur de l´exécution des programmes écrits dans ce langage, je décidais alors, en 1987, d´écrire un interpréteur pseudo compilé ayant les caractéristiques du langage C. Orienté objet et même autogénérateur, en ce sens que du code pouvait être généré dynamiquement par le code lui-même, ce langage était d´une grande souplesse (en permettant de définir des objets et des opérations arbitraires), très optimisé (je l´utilise couramment pour développer des installations interactives) et, surtout, ouvert: C´est ainsi que je n´eu aucune difficulté à l´étendre aux réseaux neuronaux, aux algorithmes génétiques et, aujourd´hui, aux systèmes adaptatifs.

2 Principe

Voir les articles:
Anyflo: Logiciel d´animation 3D (in Imaginaire numérique, HERMES 1986).
Procedural Art with Computer Graphics (1988)
Tools for artists (1991)

        Dans son principe, anyflo est un système construit autour:
        1) D´un interpréteur permettant de développer très rapidement des applications spécifiques. Un ensemble de commandes intègre les mots clés du langage C et d´autres mots clés spécifiques.
        2) D´un module de synthèse gérant des objets très généraux, c´est à dire sans propriété prédéfinie: Il est ainsi possible d´affecter à un objet des propriétés standards (points, facettes, surfaces, couleurs, coefficients de fractalisation, etc..), ou des propriétés nouvelles définies par l´utilisateur. En lui affectant une propriété de type programme, on en fait un acteur, ce qui ouvre la voie à l´animation comportementale. Un ensemble de commandes permettent de définir les objets, leurs propriétés et les opérations sur ces objets.
        3) D´autres couches, en nombre illimité, correspondant à une application (écrite en C) et linkée à anyflo, peuvent être présentes, chacune ayant son ensemble de commandes propres définies par l´utilisateur.
        4) D´une prise soft permettant d´interfacer des logiciels quelconques, soit directement à l´interpréteur, soit avec le module de synthèse.
        5) Des entrées standards peuvent être connectées à n´importe quel type de capteur.
        La fameuse trilogie modélisation-animation-rendu n´a plus de raison d´être, puisqu´une animation est en soi un objet de type programme gérant des événements qui sont eux-mêmes des programmes. En fait, dans anyflo, il n´y a pas de base de données.
        Un fichier spécial, inita.h, précise à l´interpréteur le directory où se trouvent les fichiers de son environnement. De même initb.h est attaché à anyflo, initc.h à une application utilisateur, etc...
       

3 Un langage

        Il est essentiel qu´un système ne soit pas figé et qu´il puisse évoluer, le principe d´un langage me semblait préférable aux choix, nécessairement limités et prédéfinis, proposé par les menus. Le problème de la représentation, par exemple, est généralement résolu par la perspective linéaire. Or la représentation de l´espace est inséparable des expériences faites par un observateur pour le percevoir, les algorithmes de projection ne devaient donc pas être prédéfinis mais constructibles par l´utilisateur lui-même. De même le problème des bases de données présuppose des objets connus à priori dans un environnement 3D lui aussi connu à priori. Or, pour les mêmes raisons que précédemment, la perception des objets suppose un ensemble de manipulations et ne saurait être prédéfinie, sauf à limiter leur espace à celui, cablé, dans le logiciel. Alors que des menus prédéfinis ne proposent, au mieux, qu´un parcours dans un ensemble limité de combinaisons, la notion de langage permet de produire un nombre infini de propositions nouvelles et, même, de définir de nouveaux concepts.
        Ceci n´empêche nullement l´existence d´une interface sous forme de menus, pourvu cependant que ceux-ci soient programmables, et non pas fixés par le logiciel.
        Enfin, le fait de disposer et de maîtriser l´ensemble des sources, élimine la notion de "bug" (un coup de dbx et il n´y parait plus) et permet de considérer le logiciel comme un organisme vivant en perpétuelle évolution. Pour la création artistique il est essentiel, en effet, de maîtriser et de pouvoir construire l´outil.

4 Développements successifs

        1977: Premiers logiciels de synthèse temps réel développés en assembleur sur des machines intel de 8 bits. Premiers films de synthèse. Ecriture de logiciels en pascal, algol, algol68 et LSE.
        1984: Développements de logiciels de synthèse et d´animation 3D en fortran et intégrant un langage utilisateur. Nombreux films de synthèse 3D.
        1986: Premiers logiciels de synthèse et d´animation 3D développés en C et intégrant un langage inspiré du C.
        1987: Interpréteur pseudo compilé et applications temps réel, premières installations interactives. Nombreux films de synthèse 3D utilisant des méthodes comportementales.
        1997: Implémentation des réseaux neuronaux. Nombreux films de synthèse 3D utilisant des méthodes connexionnistes.
        1998: Implémentation des algorithmes génétiques.
        2000: Implémentation des systèmes adaptatifs, premières installations interactives "intelligentes".