Obligement - L'Amiga au maximum

Lundi 24 novembre 2014 - 01:57  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Dossier : l'animation "Juggler"
(Article écrit par Ernie Wright et extrait d'home.comcast.net/~erniew - mai 2008)


Note : traduction par Vincent Bouvelle.

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.

Juggler

Sommaire
"Voici le robot qui jongle avec des sphères en argent"

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

Juggler 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 Graham
A: Ernie Wright
Objet: Re: Jongleur
Date: Mercredi, 13 Jan 2000 11:03:04 -0500

"J'ai acheté un Amiga 1000 en juin ou juillet 1986 avec un compilateur C et j'ai passé un mois à porter mon éditeur de texte dessus et à écrire un logiciel pour communiquer avec mon IBM PC.

En novembre 1966, un mois après avoir appris à programmer, j'ai écrit un programme tout simple de raytracing. A cette époque, j'étais un étudiant diplômé de l'université de Manchester, en Angleterre, et j'avais accès à un "super ordinateur" Ferranti
Atlas. Après avoir récupéré le programme, je ne m'en suis servi qu'une seule fois. La scène disposait d'un sol horizontal, de quelques sphères, et peut-être d'un cube ou d'un cône, ainsi que de deux sources de lumière.

Le résultat sortait sur des bandes de papier perforé qu'avalait un Friden Flexowriter (une machine à écrire électrique pilotable par ordinateur). En utilisant judicieusement des backspaces (code informatique du retour en arrière) ou des "over-strikes" (code de réécriture), vous pouviez construire des blocs de pixels. Par exemple, un "M" et un "W" produisent une tâche sombre, alors qu'un simple point produisait un blanc cassé. La résolution finale de l'image était environ de 100x80.

Je me souviens que l'exécution sur ordinateur prenait environ 20 minutes et mon département se faisait facturer dans les 1000 $ - c'était pour de faux, il n'y avait pas de transfert d'argent. Parce que je n'étais pas censé faire ça, très peu de personnes ont pu voir le résultat, et c'est vite tombé dans les oubliettes. Ce n'était pas une oeuvre d'art, cela représentait juste des ombres.

J'utilisais le raytracing, car c'était la méthode la plus simple et la plus évidente pour générer une image. Je ne peux prétendre que Turner Whitted soit à l'origine de cette idée, car il n'a jamais été publié, mais je soupçonne plusieurs autres personnes d'avoir compris ce concept depuis des années.

Vingt ans plus tard, à l'automne 1986, j'étais en train de réfléchir à l'ajout d'une pièce dans ma maison, et plutôt que me lancer dans les travaux, j'ai décidé d'écrire un programme de modélisation et de rendu. Mais j'ai d'abord réimplémenté le raytracer. J'ai pris environ une semaine pour le faire fonctionner, et ensuite une ou deux autres semaines pour créer quelques modèles et rassembler le schéma de compression. C'était en novembre et le Jongleur était né. La pièce supplémentaire de la maison n'a jamais vu le jour.

La réaction au sein de la communauté Amiga d'Albuquerque m'a encouragé à l'envoyer à Commodore. Leur département juridique pensait qu'il s'agissait d'un canular et que j'avais généré l'image sur un gros ordinateur central, je leur ai donc envoyé mon petit programme pour qu'ils puissent l'exécuter eux-mêmes et générer le gros fichier du Jongleur. Ensuite, ils m'ont envoyé 1000 $, si ce n'est pas 2000 $ pour payer les droits d'exploitation à des fins promotionnelles. Un an plus tard, Tom Petty insérait une seconde du Jongleur dans un clip vidéo musical, j'avais alors touché 100 $ et avais droit à une copie de la cassette de la part de sa société de production.

J'ai commencé à écrire Sculpt 3D le 26 décembre 1986, et terminé un prototype fonctionnel aux alentours du mois d'avril. Byte by Byte acquit les droits de vente, et si je me souviens bien, il a été commercialisé en octobre 1987, mais je me trompe peut-être d'un mois ou deux."
J'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

Juggler Le fichier "readme" qui accompagnait le Jongleur (son lecteur) et le fichier "movie.dat" (les images) vous est proposé en exclusivité ci-dessous, tel quel, à part quelques petits changements dans les sauts de ligne (je suis sûr qu'Eric ne l'a pas écrit lui-même, bien qu'il se peut qu'il ait créé l'icône).

Jongleur
© 1986 par Eric Graham, tous droits réservés.

Voici la version 1.0 du Jongleur, un programme de démonstration qui tourne sur Amiga, écrit par Eric Graham.

Toutes les images de ce programme ont été générées sur un Amiga avec 512 ko de mémoire.

La version 1.0 a quelques bogues connus, mais nous avons été tellement impressionnés par cette démo que nous avons voulu la sortir le plus tôt possible (une nouvelle version va arriver, au moment où vous lisez ces lignes). Le bogue principal du programme est un problème de libération de mémoire au moment de quitter, à cause d'une erreur sur un test. Cela ne devrait pas vous empêcher d'apprécier pleinement ce programme, faites juste un peu attention après l'avoir utilisé.

Avant d'utiliser ce programme, vous devez assigner movie: au disque sur lequel se trouve le programme du Jongleur. Par exemple, si la disquette du Jongleur est dans le lecteur df1:, entrez "assign movie: df1:" avant de lancer le programme.

A noter que le Jongleur peut être lancé à partir d'un CLI, en tapant "juggler", ou à partir du Workbench, en double-cliquant sur son icône. Aucun d'entre nous (à part son concepteur, qui restera anonyme) n'est satisfait de cette icône. Alors si vous en faîtes une plus jolie, envoyez-la nous et on pourra peut-être l'utiliser avec le Jongleur v1.1.

Contrôles :
Vous contrôlez la vitesse du jongleur en entrant des valeurs de 0 à 9 sur le clavier numérique. La vitesse change seulement à chaque début de cycle de l'animation, il est donc normal que cela ne réponde pas aussi vite que vous le souhaiteriez. ESC permet de quitter le programme.

Ce programme est mis à disposition par Commodore pour une utilisation sur les ordinateurs Amiga. Nous vous encourageons à le copier et à le diffuser à votre entourage. Amusez-vous bien.

     Commodore/Amiga

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 :

Les images de l'animation sont en cours de chargement. Lorsque l'animation commence, appuyez sur les touches numériques de 0 à 9 pour changer la vitesse du film. Appuyez sur la touche "ESC" pour quitter le programme.

Les images ont été générées sur un Amiga standard disposant de 512 ko de mémoire. Nous avons utilisé une méthode de tracé de rayon, qui simule des rayons de lumière qui se réfléchissent dans une scène définie mathématiquement. Chaque image nécessite le calcul de 64000 rayons de lumière et prend environ une heure à être générée. Une image est compressée à environ 10 ko pour être stockée. Les images sont affichées en moins de 30 millisecondes. Le mode Hold And Modify de l'Amiga est utilisé pour pouvoir afficher jusqu'à 4096 couleurs à la fois.

  Copyright © 1986 Eric Graham

  Appuyez sur une touche pour lancer l'animation

  Version 1.2

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 :
  • Les pixels sont séparés en plusieurs bitplanes.
  • Les valeurs de pixel sont encodées en Hold And Modify.
  • Seuls les changements de pixels d'une image à l'autre sont mémorisés.
  • La différence est calculée "deux images en arrière".
Un affichage 8 bits conventionnel stocke la valeur d'un pixel sur un seul octet (ci-dessous, à gauche). Pour un pixel situé aux coordonnées (x,y), l'offset mémoire entre le début d'une image large de "w" pixels est wy+x, et la valeur qui y est stockée est un index d'une table de 256 couleurs RVB.

                            plan 0:  10000011b
                            plan 1:  00110010b
                            plan 2:  10001001b
pixel:  00111010b           plan 3:  11010100b
                            plan 4:  01010111b
                            plan 5:  10011010b

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 :

Code Les bits de données sont...
0 Un indexe d'une table de 16 couleurs RGB
1 La valeur du bleu (de 0 à 15)
2 La valeur du rouge
3 La valeur du vert

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.

Juggler

Les deltas de chaque image du Jongleur consistent en une série horizontale de pixels et sont rangés par longueur en cinq sections. La première section contient une série de 80 pixels (10 octets par plan), et les autres contiennent des séries de 64, 48, 32 et 16 pixels (8, 6, 4 et 2 octets par plan). Le format standard des animations Amiga qui a émergé plus tard a utilisé des séries verticales ou colonnes, de pixels, plutôt que des lignes, ce qui permet ainsi à chaque série d'avoir une longueur arbitraire.

Juggler

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.

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


[Retour en haut] / [Retour aux articles]