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".