Background gradient

Progression de Péguy Modifier l'article

Publié par Suisei à 20:00

Bonjour tout le monde !

Comme mentionné dans le bilan de l'année 2021, aujourd'hui je vais vous parler plus longuement de l'avancement du projet Péguy.
On va parler de 3D et de programmation, donc c'est un article qui va être relativement technique.
Allons y !

L'application Péguy

Comme dit précédemment, j'ai peu avancé sur l'application en elle-même depuis la dernière fois.
Elle s'est enrichie de quelques effets supplémentaires et de nouvelles possibilités de constructions de formes. Mais guère plus.

J'ai fait pas mal de recherche sur les différentes méthodes de placagle automatique de texture sur une sphère.
Passer d'une image en 2D à un volume sphérique, ce n'est pas une sinécure !

J'ai ajouté la possibilité de définir des trous dans les textures.

La fonction de révolution : elle permet de tirer un objet 3D à partir d'une courbe 2D par simple rotation autour d'un axe.
Tout logiciel de modélisation 3D digne de ce nom se doit de la proposer.

L'extrusion à partir d'une forme 2D. Ça aussi c'est un incontournable.

De nouvelles primitives (des formes géométriques de base).
Un petit donut pour la route ?

En revanche, j'ai fait beaucoup de recherches à côté et j'ai aussi développé des petits outils indépendants qu'il sera intéressant à l'avenir d'intégrer dans l'application.

FreeCAD et le langage Python

En janvier 2021, mon papa a décidé de se mettre à la 3D pour pouvoir modéliser des petites pièces mécaniques à faire fabriquer par des services en ligne d'impression 3D. L'idée était de pouvoir remplacer des petites pièces cassées ou perdues.

Le logiciel qu'il a commencé à utiliser pour ça s'appelle FreeCAD.
C'est un logiciel libre et open source de conception assitée par ordinateur (CAO).
C'est un logiciel technique. Il est conçu pour modéliser des pièces mécaniques, de l'architecture, mais pas vraiment pour faire de l'art (jeu vidéo, animation, illustration... tout ça).

Pour mes BD ce qui m'intéresse c'est d'utiliser la 3D pour des décors architecturaux ou des véhicules, je me suis dit que ça serait intéressant d'y jeter un petit coup d'oeil...
Comme ça, juste par curiosité...

En faisant mes petites recherches, j'ai découvert que le logiciel était personnalisable avec des scripts ou des plugins écrits avec le langage Python, comme beaucoup de logiciels 3D en vérité.
Mais le plus intéressant là dedans, c'est que les fonctionnalités de FreeCAD peuvent être appelées depuis un programme Python indépendant sans ouvrir FreeCAD !
Ça j'ai vraiment trouvé ça très intéressant, je me suis donc empressée de faire quelques tests.

Ceci est un de mes tous premiers tests. Il a été sculpté selon le principe des booléens.
En gros, l'idée est des créer des formes en en additionnant ou en en soustrayant de plus simples entre elles ou en prenant l'intersection de 2 formes.
Ce petit schéma trouvé sur le site de l'académie de Poitier est plus parlant que de longs mots.

Jusqu'à présent je ne m'étais jamais vraiment mise sérieusement à la modélisation 3D parce que les logiciels que j'avais étudiés jusque là étaient plutôt destinés à l'art et que pour modéliser des objets ou des structures dont je connaissais la géométrie avec une exactitude mathématique j'étais hyper frustrée par l'imprécision de ces logiciels.
Le problème, c'est qu'ils ne permettaient pas d'exprimer des formes en entrant des formules mathématiques personnalisées et qu'il fallait galérer à faire à main levée des choses qui auraient pu être simples et rapides avec un peu de math.

L'idée de faire des programmes de génération 3D où je ne suis pas entravée par une interface utilisateur s'est rapidement imposée. J'avais commencé à étudier le sujet avec Java.

Depuis que j'ai découvert FreeCAD, j'ai développé un tas et tas de programmes avec.

Des décors et des vaisseaux pour le projet de webtoon Star Trek.

Des robots et des planétoïdes.

Le dessin vectoriel

L'autre révélation de l'année dans le cadre de la modélisation 3D, ce fut... Le dessin vectoriel 2D !
Et oui ! Qui l'eu cru ? Un outil 2D !

En fait, je me suis rapidement rendue compte qu'an me contentant d'entrer des formules mathématiques et des chiffres élaborés de tête ou avec 2 ou 3 calculs sur un coin de table, j'allais rapidement buter contre un os.

Comment faire avec des formes, notamment des courbes, plus complexes ?

Je me suis donc rapidement demandée s'il y avait moyen d'importer des fichiers de dessin vectoriel dans un programme utilisant FreeCAD.
Et la réponse est OUI ! :D

En 2020 j'avais profité d'une promotion pour m'acheter le logiciel Affinity Designer en n'étant absolument pas sûre de m'en servir.
Et bien depuis que j'ai découvert la possibilité d'exploiter le dessin vectoriel dans la 3D, je suis tout le temps dedans. 8D

Désormais ma méthode consiste à dessiner des plans en 2D de mes objets et de les convertir en objets 3D, soit par extrusion, soit par révolution, que ce soit avec FreeCAD ou avec Blender.

Le motif des ailes de l'oiseau de proie klingon est un exemple typique de ce que je n'aurais pas pu faire juste avec des lignes de code.

La porte de l'infirmerie de Deep Space Nine a été modélisé sur le même principe mais avec Blender au lieu de FreeCAD et Python.

C'est le stade du tournois dans Dragon Ball Multiverse.
J'ai modélisé sa structure principale en appliquant une révolution à partir d'une courbe que j'ai dessinée dans Affinity Designer.

De petites applications indépendantes

Bon, tout coder à la mimine et déclarer un par un tous les imports de fichiers vectoriels, ça peut parfois être laborieux, et surtout, c'est parfaitement inutilisable pour le grand public. Donc, j'ai commencé à coder des petits outils qui permettent de faire le lien entre mes fichiers de dessin vectoriel et mes programmes en Python.

A terme, l'idée est de combiner mes programmes FreeCAD avec mes interfaces en technologies web.

Ce petit outil là me permet de charger un fichier vectoriel et d'associer à chaque élément 2D des paramètres qui permettent de définir quelle transformation va le convertir en 3D.
En l'état, il génère un programme Python. Ensuite, je copie colle ce programme pour l'exécuter et ainsi générer un objet 3D.

Les langages nodaux

Dans le projet Péguy il y a 2 idées que je voulais développer.
La première, une interface accessible au grand public utilisable comme un jeu de Légo.
La seconde, une interface de programmation graphique pour pouvoir créer des objets plus complexes et dynamiques réservée à des utilisateurs plus avertis.

Dans un premier temps j'envisageais de m'inspirer du système de programmation d'événements de RPG Maker.

Mais après quelques recherches et quelques échanges avec des copains qui pratiquent aussi la 3D, j'ai découvert qu'il existait des logiciels basés sur ce principe : un langage de programmation graphique sous forme de noeuds qui permet de générer des scènes complexes de façon automatisées avec une grande liberté.

Le plus connu en la matière se nomme Houdini et est très employé pour générer des effets spéciaux dans le cinéma entre autres.

Il y a une version gratuite pour pouvoir apprendre à l'utiliser, mais dès qu'il s'agit de pouvoir l'utiliser pour des projets commerciaux, le tarif pique !
C'est un produit qui vise les entreprises et pas les petits artistes indépendants.
Je l'étudierai sûrement pour la science.

En me baladant sur itch.io j'ai trouvé un petit outil open source basé sur le même principe mais beaucoup plus simple.
Ce logiciel se nomme Sceelix.

Cette exemple est fourni directement avec le logiciel.

Bon, il ne semble plus trop maintenu et il est un peu cassé. Je n'ai réussi à le faire tourner que sur une machine virtuelle Windows 10 et une autre Ubuntu 20 et encore c'était un peu bugué. Mais sur Mac OS X, sur d'autres versions de Windows ou de Linux, ça a crashé.
Bref ! C'est intéressant pour étudier le concept mais ça me semble difficilement exploitable en l'état.

Et puis depuis peu, il y a ce bon vieux Blender qui a intégré les geometry nodes qui sont basés sur le même principe.

Je ne l'ai pas encore étudié, mais connaissant le système de noeuds pour les matériaux, la qualité actuelle de l'interface de Blender et vu les captures de travaux réalisés avec les geometry nodes sur Internet, je pense que c'est un bon outil bien puissant.
Je ne manquerai pas de regarder ça de plus près.

Ceci dit, après avoir exploré vite fait, il semble toujours manquer certains types de noeud existants dans les 2 outils précédents à savoir des bloc type if ou pour faire des boucle for. Quand on est habitué à programmer depuis longtemps comme moi, devoir s'en passer et bricoler une gymnastique pour pouvoir les émuler ça surcharge rapidement l'interface en nombre de noeuds.

En résumé, il y a 2 approches possibles : soit le modèle nodal qui est actuellement le plus couremment utilisé dans les logiciels 3D, soit l'approche RPG Maker qui ressemble plus à un programme écrit et a moins de risque de devenir bordélique et illisible.
Si vous avez un avis sur le sujet, je suis toute ouïe.

Blender

Dans l'absolu, depuis ses dernières versions sorties au cours de l'année 2021, Blender est maintenant capable de faire la plupart des choses que je cherche à faire avec le projet Péguy, en tout cas pour la partie 3D (pas pour la partie 2D).

La plupart...

Ça fait pas loin de 5 mois que je me forme intensément à Blender et il y a des formes que j'ai pu faire avec mes programmes Python que je ne saurai toujours pas faire dans Blender, même avec des plugins.
Les outils de CAO 3D ont encore des petits trucs en terme de modélisation pure que les logiciels de 3D artistiques n'ont pas encore. Donc, pour mon propre usage, Blender ferait l'affaire en le combinant de temps en temps avec Affinity Designer, FreeCAD et quelques script Python.

Mais faire tout ça avec des logiciels de 3D généralistes comme Blender est diablement technique et n'est clairement pas accessible à tout le monde.
Si vous n'êtes pas un brin matheux sur les bords, maîtriser les effets de trames et autres effets mangas sur un logiciel de 3D généraliste, c'est mort. Et je sais que beaucoup de dessinateurs de BD sont alergiques aux math et à la technique. :p

Des rendus pour la BD en noir et blanc et en couleur.
Et pour faire cela, des noeuds, avec des sous-noeuds et des sous-sous-noeuds...

Ça me donne donc une idée plus précise de comment orienter le projet Péguy : le spécialiser pour la BD, voire l'illustration et le rendre accessible à des profils non techniques.

Feuille de route

Maintenant que j'ai une idée plus claire de ce que je vais faire, voici comment je prévois de m'y prendre.

La première étape consistera à faire une première version uniquement avec les fonctionnalités 2D (dont les effets mangas que vous connaissez déjà).
J'ai trouvé que le dessin vectoriel m'a vraiment rendu service donc il me parait important d'en faire un pivot du projet.
De plus, si les langages nodaux se multiplient pour faire de la 3D procédurale, je n'ai pas encore trouvé d'équivalent dans le dessin vectoriel. Je pense que ça pourrait être vraiment intéressant de creuser de ce côté.

La 3D viendra dans un second temps.

La philosophie globale sera de garantir l'accessibilité aux profils non techniques, que ce soit un jeu de légo pour eux, mais aussi de proposer un peu plus aux utilisateurs lus à l'aise.

Bon, je crois que j'ai fait le tour du sujet pour cette fois.
Je me rends compte que j'ai exploré un paquet de choses au cours de l'année en matière de 3D.
C'est passionnant à étudier. :D

Bon ! J'arrête de vous embêter.

Je vous souhaite une bonne semaine et à bientôt !

Suisei

PS : Pour ne rien louper et si ce n'est déjà fait, vous pouvez toujours vous inscrire à la newsletter ici : https://www.suiseipark.com/User/SubscribeNewsletter/

Source : suiseipark.com

0 bafouille

Bafouiller