Obligement - L'Amiga au maximum

Vendredi 06 juin 2025 - 12:16  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : Programmer les lunettes 3D X-Specs en utilisant la xspecs.library
(Article écrit par Randy Finch et extrait du Randy Finch's Web Site - juin 1995)


Il y a plusieurs années, un matériel très intéressant, très puissant et pourtant très bon marché (environ 100 $) est devenu disponible pour l'ordinateur Amiga. Il s'agissait d'une petite boîte noire qui se branchait sur le deuxième port souris et qui comportait deux petits trous permettant de brancher deux jeux de lunettes noires dignes de l'ère spatiale. Un jeu de lunettes était inclus dans l'emballage. Les lunettes se fixaient à votre tête par un bandeau (voir figure 1). Cela est très pratique pour les porteurs de lunettes de vue comme moi, car elles s'adaptent confortablement aux lunettes de vue. Les lunettes noires étaient constituées de lentilles LCD qui pouvaient être assombries et éclaircies très rapidement par logiciel et ressemblaient à une version simplifiée des lunettes de réalité virtuelle en vogue aujourd'hui. En permettant à l'oeil gauche de ne voir qu'une perspective gauche d'une scène et à l'oeil droit de ne voir qu'une perspective droite par le biais d'une rapide commutation d'image, une illusion de 3D pouvait être obtenue à partir d'un seul écran Amiga. Ce matériel était distribué par Haitex Resources Inc. et était connu sous le nom de X-Specs 3D Stereoscopic Glasses.

XSpecs 3D
Figure 1

J'ai vu pour la première fois cet étonnant matériel lors du salon AmiExpo 1988 à Chicago. Je me suis assis, j'ai placé les lunettes sur ma tête et j'ai commencé à voir des molécules tridimensionnelles et à jouer à un jeu, Space Spuds, à une bonne vitesse. Ces deux programmes étaient inclus avec les lunettes, ainsi que quelques programmes de démonstration et utilitaires. C'était une excellente affaire. En tant que programmeur, j'ai également été intéressé d'apprendre qu'une bibliothèque partagée était en cours d'écriture afin que tout programmeur puisse facilement exploiter la puissance des lunettes X-Specs. J'ai acheté les lunettes peu après le salon et je ne l'ai jamais regretté.

Bien qu'un certain nombre de développeurs de logiciels aient commencé à gérer les lunettes X-Specs, elles n'ont jamais semblé gagner la popularité que je pensais qu'elles méritaient. Pendant un certain temps, les lunettes ont été difficiles à trouver, mais aujourd'hui, je n'arrive pas à trouver un revendeur qui les propose ou même à connaître quelqu'un qui les propose. Cependant, je pense qu'il est encore possible de trouver un jeu de lunettes d'occasion à un prix raisonnable (pour votre information, je ne vends pas les miennes). Pour illustrer à quel point peu de logiciels ont été écrits pour ces lunettes, j'ai cherché le mot "X-Specs" dans le CD-ROM Gold Fish, qui contient les 1000 premières disquettes Fred Fish, et je n'ai trouvé que deux références : LanderGame et RaiderGame. Il s'agit de jeux en 3D pour les lunettes X-Specs. Ils se trouvent tous deux sur la disquette Fish 544.

Comme pour les lunettes X-Specs, il semble que l'intérêt pour la technologie 3D ait toujours été un phénomène en dents de scie. Au début du siècle, les vieux stéréoscopes en bois, composés de deux lentilles qui permettaient à chaque oeil de ne voir qu'une des deux images d'une carte postale en noir et blanc, sont devenus populaires. Leur popularité s'est estompée pour renaître des années plus tard lorsque le ViewMaster a été commercialisé. Bien que le ViewMaster soit toujours disponible, il ne semble pas être aussi populaire que lorsque j'étais enfant. Bien sûr, les films en 3D étaient à la mode dans les années 1950. Aujourd'hui, les films en 3D sont rarement, voire jamais, réalisés. Je pense que cela a quelque chose à voir avec le fait de devoir porter de drôles de lunettes ou de regarder à travers une sorte de dispositif binoculaire. Lorsque l'imagerie 3D sera disponible pour une visualisation directe, comme c'est le cas actuellement pour un film, un téléviseur ou un écran d'ordinateur, elle pourrait devenir populaire et le rester. Peut-être qu'un type d'holographie plus avancé fournira la technologie nécessaire.

Programmation des lunettes 3D X-Specs

Comme on me l'a dit à l'AmiExpo, une bibliothèque partagée a été publiée afin que même moi je puisse écrire des programmes pour les lunettes X-Specs. À l'époque, je travaillais sur un programme de traçage de fonctions 3D qui était un candidat parfait pour l'ajout de la gestion des X-Specs. La bibliothèque s'appelle xspecs.library. La version 1.2 de cette bibliothèque se compose de 36 fonctions. Bien que je programme en C, la bibliothèque peut être utilisée par n'importe quel langage qui gère les bibliothèques partagées standard d'Amiga. Le tableau 1 montre les noms et les brèves descriptions des fonctions disponibles dans la bibliothèque. Plusieurs sont disponibles pour allouer et désallouer les structures de données Rastport et Viewport pour les vues régulières, les vues à double tampon et les vues en suraffichage. Les couleurs de stylo, le numéro de stylo et le mode de dessin peuvent tous être définis. Des lignes, des polygones, du texte et même des sprites peuvent être dessinés dans un espace tridimensionnel.

Malheureusement, les fichiers compressés que j'ai téléchargés contenant la bibliothèque n'avaient pas de fichier d'en-tête C contenant les déclarations #pragma et les prototypes de fonction nécessaires à mon programme. Cependant, la documentation contenait suffisamment d'informations pour que je puisse créer un fichier de définition de fichier (.fd) (voir listing 1). J'ai utilisé le programme fd2pragma qui était inclus dans mon compilateur SAS/C pour convertir ce fichier ".fd" en un fichier d'en-tête C contenant les instructions #pragma. J'ai ensuite ajouté des prototypes de fonction. Ce fichier est présenté dans le listing 2. Une fois ce travail terminé, j'étais prêt à ajouter la gestion des X-Specs à mon programme.

Le listing 3 montre des extraits de mon programme de traçage de fonctions tridimensionnelles. Une version antérieure de ce programme, qui ne gère pas les X-Specs, se trouve sur la disquette Fish 440. Elle s'appelle 3DPlot. Les extraits contiennent du code dont je ne parlerai pas car il n'est pas pertinent pour cet article. Je n'ai laissé ce code dans le listing que pour fournir un contexte aux appels de fonctions X-Specs.

Remarquez d'abord que le fichier d'en-tête XSpecsLib.h est inclus au début pour rendre les #pragmas et les prototypes de fonctions disponibles. De plus, un pointeur de structure de bibliothèque externe (il est ouvert dans un fichier différent) nommé "XSpecsBase" est déclaré.

Lorsque l'utilisateur demande le rendu d'un tracé X-Specs, la fonction DrawGraph est appelée avec une variable globale, plottype, définie comme égale à PLOTXSPECS, qui est définie dans un autre fichier d'en-tête. Un port de message est déclaré ainsi qu'un tableau contenant les 32 couleurs de l'écran X-Specs. Les structures RastPort et ViewPort pour l'écran X-Specs sont allouées avec la fonction XSpecsAllocView. Le paramètre NULL indique qu'un écran 32 couleurs 320x200 doit être créé. D'autres résolutions d'écran peuvent être allouées en passant un paramètre différent. L'écran est affiché sur le moniteur avec la fonction XSpecsOn, qui renvoie le port de message de l'écran. Le paramètre MOUSEBUTTONS indique que seuls les messages relatifs aux boutons de la souris doivent être envoyés à ce port. Ensuite, la palette est remplie en appelant la fonction XSpecsLoadRGB4.

En suivant le code plus bas, vous trouverez de nombreux calculs effectués pour préparer le tracé réel. Finalement, une autre fonction du programme, CalcAndPlot3, est appelée. Cette fonction est présentée vers le début du listing 3. Elle effectue le travail fastidieux de calcul des coordonnées tridimensionnelles pour le tracé sur l'écran X-Specs. Le tracé consiste en une mosaïque de polygones à quatre côtés. Après avoir calculé les coordonnées des quatre coins d'un polygone et la couleur à utiliser pour celui-ci, trois fonctions de la xspecs.library sont appelées pour accomplir la tâche. Tout d'abord, XSpecsSetAPen est appelé pour définir la couleur appropriée, XSpecsMove est appelé pour déplacer le stylo au point de départ approprié dans l'espace tridimensionnel, et XSpecsDraw est appelé trois fois pour dessiner trois côtés du polygone à quatre côtés. Le quatrième côté est dessiné lorsqu'un polygone à quatre côtés adjacent est dessiné. Cela permet de gagner un peu de temps car les côtés adjacents n'ont pas à être dessinés deux fois.

Vers la fin de la fonction DrawGraph se trouve un appel de fonction système WaitPort. Cet appel attend qu'un message soit reçu sur le port de message de win avant de fermer l'affichage X-Specs. Le pointeur de fenêtre nommé win pointe vers une fenêtre créée par le programme 3DPlot. Pourquoi est-ce que j'attends un message sur ce port plutôt que sur celui de l'affichage X-Specs ? Je ne le sais pas. Il s'avère que si vous utilisez l'instruction suivante :

WaitPort(uport);

...où "uport" est le port de message renvoyé par la fonction XSpecsOn, un message sera reçu correctement pour une pression sur le bouton droit de la souris, mais le programme se figera essentiellement lorsque le bouton gauche de la souris sera pressé. En utilisant l'instruction :

WaitPort(win->UserPort);

...où "win->UserPort" est le port de message d'une autre fenêtre du programme 3DPlot non liée à l'affichage X-Specs, le bouton gauche de la souris peut être enfoncé sans que le programme ne se fige. Cependant, il faut appuyer sur le bouton droit après le bouton gauche pour qu'un message soit reçu sur "win->UserPort". Je n'ai pas encore déterminé pourquoi cela fonctionne de cette façon. Si quelqu'un a une idée, faites-le moi savoir.

Enfin, la fonction XSpecsOff est appelée pour fermer l'affichage X-Specs, et XSpecsFreeView est appelée pour désallouer les structures RastPort et ViewPort de l'affichage.

En conclusion

Les lunettes X-Specs 3D peuvent être programmées facilement à l'aide de la xspecs.library. La dernière version de cette bibliothèque dont j'ai connaissance est la 1.2. J'ai essayé de contacter Richard Horne, qui était l'une des personnes responsables de la création de cette bibliothèque, mais en vain. En attendant, tous les programmeurs Amiga devraient sortir leur compilateur et se mettre au travail.


[Retour en haut] / [Retour aux articles]