|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
![]() En novembre 1986, au tout début de l'histoire Amiga, Commodore a sorti une démo sous forme d'animation dans laquelle un robot jongle avec trois balles en miroir. Ce jongleur était une séquence de 24 images en couleur qui bouclait continuellement avec une sorte de "cliquetis" sonore et jouée à la vitesse de 30 images par secondes. Sommaire "Voici le robot qui jongle avec des sphères en argent"
C'est comme cela que commençait l'article paru en mai/juin 1987 dans Amiga World, dans lequel Eric Graham expliquait comment l'animation
du Jongleur ("Juggler" en anglais) fut créée. Le programme promis à la fin de l'article ("avec interface entièrement sous Intuition") était
Sculpt 3D pour Amiga, sorti à l'automne 1987. Byte by Byte a vendu des variantes Amiga, Macintosh et Windows de Sculpt pendant plus d'une
décennie. Eric a généré ces images à l'aide d'un raytracer qu'il a écrit lui-même, appelé ssg, le précurseur de Sculpt. Les images
générées étaient encodées dans le format d'affichage HAM (Hold And Modify) de l'Amiga et ont ensuite été assemblées dans un seul
fichier de données en utilisant un système de compression delta sans perte de données, similaire à la méthode qui fut retenue plus
tard comme le standard du format de fichier ANIM de l'Amiga.Eric et sa femme Cathryn ont supporté activement le raytracing sur Amiga. Cathryn a écrit le manuel utilisateur de la version Amiga de Sculpt 3D et a rédigé un bulletin d'information électronique distribué sur disquettes. Raytracing 1.0, la première d'entre elles, contient à la fois ssg et le Jongleur sous forme d'objet géométrique, ainsi que l'image du Jongleur et le programme permettant d'exécuter l'animation. Le Jongleur était une animation étonnante pour son époque. Personnellement, je me souviens être resté scotché plusieurs minutes à la regarder à travers la vitrine d'un revendeur Amiga, à me demander comment elle "fonctionnait". Beaucoup de gens ont été inspirés par le Jongleur, et par les animations Amiga qui ont suivi, avant de se lancer dans une carrière de graphiste 3D. Rien de tel n'aurait pu tourner sur tout autre ordinateur personnel en 1986. En fait, Eric nous l'a encore rappelé récemment, le département juridique de Commodore "pensait au départ qu'il s'agissait d'un canular et que j'avais réalisé l'animation sur un gros ordinateur central". Il leur a envoyé son logiciel de rendu pour qu'ils puissent générer et compiler eux-mêmes les images. Tracer des rayons pour créer des images 3D réalistes, la méthode utilisée pour générer les images du Jongleur, était une idée qui était dans l'air depuis les années 1960. Tout le crédit revient à la première publication d'Arthur Appel (1968), mais comme beaucoup d'articles importants, c'est un point de continuum. De nombreuses personnes avaient fait des essais de raytracing avant 1968. Des techniques très similaires auraient déjà été utilisées depuis des années pour la simulation des effets des armes nucléaires (même si ce n'est probablement pas pour générer des images). Les mathématiques sous-jacentes au raytracing ont la même optique géométrique qu'utilisait Descartes pour expliquer les arcs en ciel.
L'article de Turner Whitted (1980) est largement considéré comme la première description des méthodes de raytracing en infographie.
Cette célèbre image sur laquelle on peut voir des balles flottant sur un sol en damier, a pris 74 minutes pour être générée sur
un ordinateur central DEC VAX 11/780, une machine à 400 000 dollars. Le Jongleur
apparut seulement six ans plus tard, créé et affiché sur un Amiga à 2000 $.De l'auteur Alors que cela faisait presque deux ans que j'essayais d'écrire cet article, j'ai finalement pris mes jambes à mon cou et j'ai contacté Eric Graham pour en savoir plus sur la création du Jongleur. Il m'a gentiment donné la permission de publier sa réponse. J'ai omis quelques extraits inutiles de notre correspondance et y ai ajouté quelques liens. De: Eric GrahamJ'ai découvert qu'Eric et moi-même partagions le même intérêt pour l'astronomie, mais je sais que les cieux qu'il observe dans le Southwest désertique sont infiniment mieux que ceux que j'observe dans la lumière polluée du Northeast. Il a fabriqué lui-même plusieurs de ses télescopes, ainsi que son propre observatoire, et en 1980, il a travaillé sur le logiciel d'analyse de données utilisé par le "Very Large Array", le complexe télescopique du Nouveau Mexique que l'on peut voir dans le film Contact. Il a récemment créé une société de graphisme 3D appelée Direct Algorithms. La vidéo Les données de l'image du Jongleur original sont stockées dans un format de fichier unique, qui, autant que je me souvienne, n'avait jamais été utilisé dans le domaine de l'animation. Après le Jongleur, Eric a écrit une suite de programmes (dilbm, pilbm et movie) pour l'assemblage et la lecture d'animations Amiga basés sur un format légèrement différent (les codes sources gratuits de unmovie, un programme qui extrait les images de fichiers au format movie, sont disponibles sur Aminet). ANIM est devenu le format d'animation standard de l'Amiga un peu plus tard. Pour préserver l'animation du Jongleur et la diffuser à un plus large public, j'ai extrait les données images du fichier original et je les ai recompilées à la fois en animation Flash et en fichier AVI Windows. Vous pouvez télécharger l'AVI à cette adresse : home.comcast.net/~erniew/getstuff/juggler.avi (321 ko). J'ai écrit le programme qui extrait les images du fichier animation. Le programme construit des images 6 bits HAM à partir des deltas et transforme ensuite le HAM en image RGB 24 bits. Pour l'AVI, la séquence 24 bits a été réassemblée en utilisant le codec Video 1 de Microsoft (le plus simple et celui qui est le plus supporté par les plates-formes non-Windows) en 16 bits par pixel avec une qualité de 100%. La conversion a été faite de manière à conserver strictement l'aspect original. J'ai choisi de ne pas corriger l'aspect de l'image pour les écrans à pixels carrés, de telle sorte que les images paraissent un peu étirées horizontalement sur la plupart des moniteurs des ordinateurs actuels. Les images originales sont en 320x200, et les pixels sont proches du NTSC D2, avec un ratio de 0,86 (rapport largeur par hauteur). La conversion AVI entraîne inévitablement des écarts par rapport aux données de couleurs originales. Le taux d'erreur RMS pour l'AVI du Jongleur est d'environ 0,04, ce qui est imperceptible à l'oeil nu. Ci-dessous, vous trouverez le lien d'un exemple de code source permettant l'extraction exacte des données de l'image originale. En ce qui concerne le son du Jongleur, tout ce que je peux vous dire, c'est qu'il est généré en temps réel par le lecteur. Plutôt que d'essayer de recréer le code, j'ai numérisé le son (à 22 kHz) directement à partir de la sortie audio de l'Amiga, en lisant l'animation. Le texte original
Quand on lance le programme, une bannière apparaît à l'écran pour occuper l'utilisateur le temps du chargement de l'animation à partir de la disquette. Voici ce qu'elle dit :
Code source, détails techniques Pour documenter le format de fichier, j'ai mis à disposition le code source de mon programme de conversion. Il enregistre des séquences d'images TGA (Targa) 24 bits et les compile sans aucune modification, à la fois sur Microsoft Visual C++ 4.0 et Amiga SAS/C 6.51. Le numéro 97 de Fred Fish contient la version 1.2 de la distribution du Jongleur, qui inclut les données de l'image ainsi que le lecteur (le fichier disque est compressé en Lzh, vous aurez donc besoin d'un décompresseur qui reconnaît les formats de fichier Lzh ou Lha pour l'extraire) : www.funet.fi/pub/amiga/fish/001-100/ff097/. A moins d'être familier avec les formats de fichiers animation et avec les modes d'affichages natifs de l'Amiga, l'organisation des données images du Jongleur peut paraître un peu étrange. Brièvement :
Le mode d'affichage original HAM de l'Amiga (ci-dessus, à droite) utilise 6 bits par pixel. Chacun de ces bits est sur un plan différent - les bits d'un pixel donné ne sont pas continus en mémoire. Pour retrouver la valeur d'un pixel (naïvement), vous devez lire les octets de 6 adresses différentes, ne conserver que le même bit de chacun de ces octets et les rassembler pour constituer la valeur du pixel. Pour le pixel situé en position (x,y), l'offset en octet pour chaque plan est de (wy+x)/8, et le bit est 7 - (x mod 8). Le plan "n" contient le énième bit de la valeur d'un pixel. Les deux bits supérieurs de la valeur d'un pixel forment un code qui permet de contrôler l'interpolation des quatre autres bits :
Un code HAM de 0 entraîne une recherche dans la table des couleurs de base. Pour les autres, la valeur d'un des trois canaux RVB est stockée dans les quatre bits de données, et les deux autres canaux sont copiés à partir du pixel de gauche (le pixel le plus à gauche permet de retrouver la valeur des canaux manquants à partir de l'entrée 0 de la table des couleurs). Les fichiers animation stockent les images comme une succession de deltas, que l'on désigne par la lettre grecque que nous utilisons en mathématiques pour exprimer un changement de valeur. Un delta d'animation n'est qu'un ensemble de pixels qui diffèrent entre deux images. ![]() ![]() Au début de l'animation, l'avant et arrière plans contiennent l'image 1. Les variations de pixels de l'image 2 sont écrite dans une copie de l'image 1 en arrière plan, et les tampons sont alors échangés. Ensuite, les variations de pixels de l'image 3 sont appliquées à l'image 1 et les tampons sont à nouveau échangés, laissant l'image 2 en arrière plan. En général, excepté pour la première image, les variations sont appliquées "deux images en arrière", de telle manière à ce que la variation de l'image "n" modifie les pixels de l'image (n-2). Notes A. Appel "Some Techniques for Shading Machine Renderings of Solids," American Federation of Information Processing Societies Proceedings of the Spring Joint Computer Conference, 1968, 37-45. T. Whitted "An Improved Illumination Model for Shaded Display," Communications of the ACM, Vol. 23, No. 6, June 1980, 343-349. Cet article a récemment été réimprimé dans le livre "Seminal Graphics: Pioneering Efforts that Shaped the Field", une anthologie en commémoration du 25e aniversaire de la conférence annuelle ACM SIGGRAPH (Association for Computing Machinery's Special Interest Group on Computer Graphics and Interactive Techniques). Vous pouvez le commander directement par courriel à l'ACM (numéro de commande 435985, ISBN 1-58113-052-X).
|
|||||||||||||||||||||||||||||||||||||||||||||||||