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.