Outils
Pour arriver à mes fins, il m'a souvent fallu créer d'abord des outils de CAO/DAO
Tout comme les librairies avancées nécessaires à la création de jeux ou d'applications sophistiquées n'existaient pas dans les années 90, ou en tout cas pas disponibles en France, à moins d'avoir les ressources d'une grosse entreprise, les outils de CAO/DAO sur PC n'étaient pas légion et certainement pas à la portée de ma bourse.Ce qui fait de mon outil de dessin en mode VGA 256 couleurs l'un de mes plus anciens compagnons, et j'ai développé un réel talent à la création d'icônes et autres éléments graphiques de petite taille, ce qui m'a beaucoup servi par la suite même pour des besoins professionnels (les clients sont tout de suite plus satisfait de leur nouvelle application s'il y a des beaux dessins sur les boutons principaux).
Même si cela fait longtemps que j'utilise des outils du commerce sur Windows, je me souviens bien de l'époque où je n'avais que ça sous la main. Des journées entières passées à jongler entre le code du projet en cours, puis la création d'une ressource graphique dans VGADess, et terminer dans le code de l'application de dessin elle-même car j'avais un besoin de fonctionnalité pour me faciliter la vie. Puis retour en sens inverse, et encore, et encore....
Quelques années plus tard, quand je me suis mis à la 3D, j'ai expérimenté plusieurs techniques de rendu plus ou moins précises, plus ou moins rapides, plus ou moins beau au final. Pour m'arrêter sur une technique de définition de faces unicolores (sans textures) mais qui peuvent se couper et sont visibles des deux côtés, contrairement aux faces des objets usuellement exploités dans les cartes graphiques modernes. Le rendu est confié à un module assembleur qui interpole rapidement (par un algo maison dérivé du meilleur algo de tracé de droites en 2D, mais ça je l'ai découvert plus tard) les points qui composent ces faces, et n'applique la couleur (unique par face) que si son élévation (Z) est supérieure au dernier point calculé à cet endroit. Tout cela se fait uniquement avec des calculs d'entiers (pas de réels), et privilégie les opérations de décalage plutôt que les divisions, quand c'est possible. Ce qui fait qu'une fois codé en assembleur, optimisé pour le jeu d'instruction 32 bits du 386, ça dépote.
Alors que j'ai mis au point mes algorithmes et modules assembleur avec des objets simples - comme un dé 6 faces, ou 2-3 triangles qui se pénètrent comme des flèches (pour valider la précision du rendu au niveau de l'intersection) - il me fallait un outil de design en 3D pour exploiter ce moteur dans une vraie application. J'ai testé une des premières versions de 3DStudio, mais en plus d'être inabordable, c'était bien trop compliqué et au final je ne savais pas exploiter les fichiers pour les intégrer dans mon moteur. Donc comme pour VGADess, j'ai commencé à développer mon propre outil de CAO.
Chaque objet est inscrit dans un cube de 200 pixels de côté. On commence par positionner les points de référence, puis on construit les faces en sélectionnant 3 points et en y appliquant une couleur. Voila c'est aussi simple que ça. Après, il est possible de déformer (ajuster) l'objet en déplaçant certains points jusqu'à ce qu'on soit parfaitement satisfait du résultat. Pour cela on est aidé par 2 vues de projections / coupes (dont on peut définir la direction et la profondeur), qui facilitent la sélection d'un point en particulier ou le positionnement par rapport aux autres points de la même face ou des faces dessous/dessus. Des outils externes pour dupliquer une partie des faces par rotation ou symétrie existent, que je n'ai jamais pris la peine d'intégrer à l'IHM - l'efficacité de la création de contenu primant sur l'investissement dans l'outil lui-même, ça ne se justifiait pas d'en faire autre chose qu'un outil en ligne de commande.


VGA Dessin (1991-1996), l'un des plus vieux projets, en évolution constante
Particulièrement doué pour gérer la palette de couleurs, à la fois celle de l'image en cours d'édition et celle de l'interface. Même de nos jours, il m'arrive de l'utiliser pour une ou deux fonctions très spéciales.
Build3D (1995-1996) Un outil de design d'objets 3D
Simple et efficace, l'objectif ici est de concevoir un objet 3D affichable en temps réel sur une machine de faible puissance, pas de concevoir un avion de chasse ou une scène de film précalculée.