Automatiser le traitement des modèles photoscannés dans Blender avec Python

Introduction

La photogrammétrie permet de créer des modèles 3D réalistes à partir de simples photos, mais ces modèles sont souvent très lourds et nécessitent un traitement minutieux pour être utilisables dans des projets. Entre le nettoyage, la simplification des maillages (remeshing) et le transfert des détails via des textures (baking), ces étapes peuvent devenir répétitives et chronophages. Heureusement, Blender offre des solutions pour automatiser ces processus, notamment grâce à son API Python. Dans cet article, nous explorerons comment optimiser et automatiser le traitement des modèles photoscannés pour un workflow plus fluide et efficace.

La photogrammétrie, c’est quoi ?

La photogrammétrie est une technique qui permet de créer des modèles 3D en se basant sur des photographies. En prenant plusieurs clichés d’un objet ou d’une scène sous différents angles, des logiciels spécialisés génèrent un modèle 3D en recréant la géométrie de l’objet à partir des données visuelles.

Le résultat est souvent d’une précision impressionnante, offrant un réalisme poussé. Cependant, cette précision a un coût : les modèles obtenus sont généralement très lourds. Le nombre de polygones est élevé, ce qui rend leur manipulation difficile, surtout dans des environnements comme les jeux vidéo ou les animations, où la légèreté des modèles est cruciale.

Traiter les modèles photoscannés

Pour rendre ces modèles plus utilisables, il est nécessaire de les simplifier tout en conservant leur qualité visuelle. Cela implique généralement deux opérations : le remeshing et le baking. Mais pourquoi ces étapes sont-elles si importantes ?

Le remeshing et le baking : qu’est-ce que c’est, et pourquoi les utiliser ?

Le remeshing est une technique qui permet de simplifier un modèle en réduisant son nombre de polygones. Au lieu de manipuler un modèle détaillé avec des millions de polygones, on crée une version simplifiée, tout en conservant la silhouette générale de l’objet. Cela allège considérablement le fichier et le rend plus facile à utiliser dans différents projets. En général, le maillage des modèle photoscannés ne bénéficie pas d’autant d’attention que celui des modèles modélisés à la main. Ce n’est pas grave, c’est simplement une autre approche. Par exemple, les modèles photoscannés ne seront que rarement subdivisés.

Le baking, quant à lui, consiste à transférer les détails du modèle high poly (détaillé) vers le modèle low poly (simplifié) via des textures. On génère ainsi des normal maps et des displacement maps, qui donnent l’illusion que le modèle simplifié est aussi détaillé que sa version originale. Le baking de la map albedo capture, lui, les couleurs de surface de l’objet.

Comment effectuer ces étapes dans Blender ?

Dans Blender, le remeshing et le baking peuvent être réalisés grâce à plusieurs outils intégrés. Voici les étapes générales :

  1. Remeshing : Utiliser les outils de remesh pour simplifier le modèle.
  2. Baking : Générer les différentes textures (albedo, normal, displacement) en projetant les détails du modèle high poly vers le low poly.

Ces étapes sont nécessaires pour optimiser les modèles, mais elles peuvent être très répétitives, surtout lorsqu’on travaille avec un grand nombre d’objets.

Le delighting : pourquoi et comment ?

Une autre difficulté des modèles issus de la photogrammétrie est la gestion des ombres sur les textures. Ces ombres, souvent indésirables, peuvent nuire à la qualité du rendu final. C’est là qu’intervient le delighting. Cette technique permet de supprimer les ombres présentes sur les textures, pour obtenir une image propre et uniforme, qui servira d’albedo pour notre modèle final.

Delighting dans le compositor de Blender

Dans Blender, le delighting peut être réalisé directement dans le compositor en suivant plusieurs étapes :

  1. Convertir la texture en noir et blanc pour isoler les ombres.
  2. Appliquer un flou (environ 25 pixels) pour adoucir les ombres.
  3. Diviser l’image originale par cette version floutée.
  4. Corriger la luminosité pour obtenir une texture sans ombres.

Cette approche simple permet de nettoyer rapidement les textures sans sortir de Blender.

Limites: Cette méthode peut grandement altérer les images et faire perdre de précieux détails. De plus, les paramètres comme la taille du flou, le facteur du nœud « divide » ou encore le réajustement de la luminosité varient grandement en fonction de votre image source.

Il existe des outils spécialisés dans le delighting, parfois même avec de l’IA, mais cette méthode a le mérite d’être inclue directement dans Blender.

L’API Python de Blender : un monde d’automatisation

Blender offre une API Python extrêmement puissante, qui permet de créer des scripts pour automatiser des tâches complexes. C’est particulièrement utile lorsqu’il s’agit de manipuler des lots de modèles ou de répéter les mêmes opérations sur plusieurs objets.

Grâce à cette API, il est possible d’automatiser des opérations comme le remeshing, le baking ou encore le delighting. Plutôt que de tout faire manuellement, vous pouvez laisser Blender s’occuper des étapes répétitives, ce qui vous permet de vous concentrer sur des aspects plus créatifs.

Automatiser le processus : comment ça marche ?

En utilisant l’API Python, j’ai créé un script qui automatise entièrement le processus de remeshing, de baking des textures, et de delighting. Cela signifie que, en un clic, vous pouvez :

  1. Simplifier automatiquement le modèle.
  2. Générer les textures nécessaires (albedo, normal, displacement).
  3. Nettoyer les ombres des textures via le compositor.

Cela permet de traiter un grand nombre de modèles en un temps réduit, sans avoir à répéter les mêmes actions pour chaque objet.

Interface graphique pour simplifier le workflow

Afin de rendre ce processus encore plus accessible, j’ai créé une interface graphique directement dans Blender. Plutôt que de taper des lignes de code ou de naviguer dans les menus, cette interface vous permet de lancer les opérations d’automatisation en quelques clics seulement. Tout est centralisé dans un panneau intuitif.

Gérer un grand nombre de modèles photoscannés

Avec cette approche automatisée, il devient beaucoup plus facile de traiter un grand nombre de modèles issus de la photogrammétrie. Que vous travailliez sur un projet archéologique, un jeu vidéo, ou un film d’animation, l’automatisation vous fera gagner un temps précieux tout en garantissant des résultats constants.

Un plugin Blender disponible pour les intéressés

Si vous travaillez régulièrement avec la photogrammétrie et que vous cherchez à automatiser ces étapes, mon plugin Photogrammetry Toolkit est disponible gratuitement. Vous pouvez l’essayer et l’intégrer dans votre workflow pour simplifier vos tâches de traitement de modèles photoscannés.

Mon plugin : Télécharger

Note: ChatGPT ayant été mon principal instructeur en ce qui concernet l’API python pour Blender, mon code est celui d’un amateur. Vous êtes donc invités à y jeter un oeil et à le modifier à votre convenance.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *