|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Note : traduction par Vincent Bouvelle et David Brunet. 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 est une séquence de 24 images en couleur qui boucle continuellement avec une sorte de "cliquetis" sonore et jouée à la vitesse de 30 images par secondes. ![]() "Voici le robot qui jongle avec des sphères en argent" ![]() Eric et sa femme Cathryn ont soutenu activement le lancer de rayons 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 The Juggler sous forme d'objet géométrique, ainsi que l'image du jongleur et le programme permettant d'exécuter l'animation. The Juggler é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 The Juggler, 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. ![]() L'article de Turner Whitted (1980) est largement considéré comme la première description des méthodes de lancer de rayons 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. The Juggler apparut seulement six ans plus tard, créé et affiché sur un Amiga à 2000 $. ![]() Adam Powers et Lumpy étaient tous deux entièrement animés, avec des variations réalistes de leurs mouvements tout au long de leurs routines. Le Juggler d'Eric Graham se composait d'un seul mouvement qui pouvait être répété en boucle indéfiniment pour créer une animation fascinante et hypnotique qui tenait néanmoins confortablement dans 512 ko de mémoire vive. Les jongleurs expérimentés noteront également qu'Adam et Lumpy exécutent la cascade de trois balles, plus conventionnelle, tandis que le Juggler lance des confettis, ce qui est plus difficile à maîtriser mais un peu plus facile à animer. 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 de The Juggler. 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 de The Juggler 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 The Juggler, 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 de The Juggler 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 : www.etwright.org/cghist/images/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 soutenu 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 de The Juggler 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 de The Juggler, 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 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 de The Juggler, 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 de The Juggler 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), le décalage 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. ![]() Les affichages en double tampon font partie intégrale de l'architecture graphique de l'Amiga. Deux tampons d'images sont utilisés, un tampon au premier plan contient l'image actuellement visible, tandis qu'un autre tampon, en arrière-plan, permet de constituer la prochaine image. Pendant que l'image actuelle est affichée, les variations de pixels sont écrites dans l'image d'arrière-plan, et quand le moment arrive d'afficher la prochaine image, l'arrière et l'avant plans échangent leurs rôles. L'image 1 est chargée dans les tampons de premier plan et d'arrière-plan. Le delta de l'image 2 est appliqué à la copie de l'image 1 dans la mémoire tampon d'arrière-plan. ![]() ![]() ![]() ![]() Contrairement aux écrans modernes, l'Amiga (et d'autres ordinateurs de son époque) utilisait des pixels non carrés, un héritage de la télévision analogique. Pour afficher une image Amiga sur du matériel à pixels carrés de manière à ce qu'elle n'apparaisse pas écrasée ou étirée, l'image doit être rééchantillonnée en fonction d'un facteur d'échelle qui annule le défaut d'équerrage des pixels. La mesure du défaut d'équerrage est le rapport d'aspect des pixels, ou PAR, c'est-à-dire le rapport entre la largeur et la hauteur d'un pixel. Pour préserver la forme de l'image, sa résolution horizontale doit être multipliée par le PAR ou sa résolution verticale divisée par le PAR. Malheureusement, il y a une certaine confusion sur le PAR correct pour les images Amiga. Le code de lancer de rayons d'Eric Graham suppose qu'un écran 320×200 a un format d'image de 4:3, ce qui implique un PAR de 5/6=0,8333. La documentation originale de l'Amiga suggérait un PAR de 10/11=0,9091 pour la norme NTSC (le standard TV en Amérique du Nord ; les Amiga en Europe utilisaient le standard PAL et un PAR différent), et la plupart des anciens fichiers d'images IFF ILBM ont ce PAR 10/11 dans leurs en-têtes. Une note technique de 1993 par le programmeur Amiga Carolyn Scheppner a révisé le PAR recommandé à 11/13=0,8462 pour les modes NTSC originaux en basse résolution. Dans mon propre code, y compris les routines HAM et ANIM-5 que j'ai écrites pour LightWave, j'ai utilisé 69/80=0,8625, et c'est aussi ce que j'ai utilisé pour les versions corrigées de l'aspect du Juggler sur cette page. Post-scriptum J'ai publié la première version de cette page au printemps 1998, ce qui la rend plus ancienne que The Jungleur ne l'était à l'époque. Bien que je la révise de temps en temps, je le fais généralement avec parcimonie, en partie par manque de temps pour en faire plus. Mais surtout, la page elle-même est une sorte de relique qui veut rester dans son contexte temporel. Les références à des compilateurs obsolètes font partie de son charme. Des mots comme "récemment" et "actuellement" doivent dans la plupart des cas être compris comme se référant à une époque beaucoup plus proche de l'origine de la page. Mon objectif était de conserver le Juggler, de le libérer de son format de fichier unique et désormais non jouable, et de le partager avec d'autres personnes qui s'en souviennent avec autant d'affection que moi. Un certain nombre de personnes m'ont laissé une note pour partager l'histoire de leur première rencontre avec le Juggler, et c'est toujours amusant à lire. Avec ma permission, la page a été traduite en français (NDLR : c'est la page que vous êtes en train de lire :-)), ce qui est plutôt sympathique. Le Juggler est maintenant présent dans des dizaines d'endroits sur Internet, des vidéos YouTube aux GIF animés, et la plupart de ces copies proviennent finalement de cette page. Quelques personnes m'ont écrit pour me demander la permission de faire diverses choses avec l'animation, ou pour me demander si j'ai d'autres données qui n'ont pas été partagées sur la page. Je réponds à ces questions au cas par cas, mais certaines choses s'appliquent dans tous les cas :
Il n'existe pas de fichier de scène décrivant le mouvement du Juggler. Comme Jimmy Maher l'a confirmé lors de ses recherches pour son livre de 2012 sur l'Amiga, chaque image de l'animation du Juggler avait son propre fichier de scène, comme RenderMan l'a toujours fait. Malheureusement, ces fichiers par image n'ont jamais été publiés et n'ont probablement pas survécu (le fichier d'image unique sur RT 1.0 diffère légèrement des images du Juggler en ce qui concerne l'éclairage et l'angle de la caméra). Lorsque j'ai annoncé sur quelques groupes de discussion que j'avais créé cette page, j'ai cité le nom de plusieurs personnes qui m'ont aidé à retrouver des informations sur le Juggler et des fichiers originaux, et c'est l'une d'entre elles qui m'a finalement mis en contact avec Eric Graham. J'ai également reçu des informations et des commentaires utiles de la part de plusieurs personnes depuis lors. Je remercie Bob Eaton, Eric Fleischer, John Foust, Marvin Landis, Scott Peterson, Jimmy Maher et Patrick de Zoete pour leur aide, qui a parfois consisté à fouiller dans des cartons de magazines et de disquettes vieux de dix ans pour aider les mémoires défaillantes. Et je suis sûr que la plupart des personnes qui lisent ces lignes se joindront à moi pour remercier Eric Graham de nous avoir permis de partager un moment de nostalgie de cette manière. 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 anniversaire 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).
|