mardi 16 avril 2019

GLTF et worflow métallique

Je continue à explorer le format GLTF, et j'obtiens enfin quelque chose de potable avec des modèles exportés depuis Blender. La procédure est la suivante:

  • Créer un modèle dans Blender avec un matériau se basant sur le "Principled shader" dans lequel on aura fourni la couleur, la rugosité, l'aspect métallique ou non, et le déplacement des normales
  • Ajouter au matériau, mais sans les connecter à quoi que ce soit, des textures images pour la couleur, la rugosité, le métal, et les normales
  • Sélectionner chaque image à son tour, et générer la texture via l'option "bake". Attention, pour de meilleurs résultats, utiliser plutôt Cycles que Eevee. Attention également, il n'est pas possible de générer directement la texture métallique, il faut ruser en connectant temporairement l'arrivée métallique au nœud de rugosité et en générant celui-ci vers l'image métallique.
  • Appliquer à l'objet un nouveau matériau qui utilise un principled shader, et connecter chaque texture à son nœud. Astuces: utiliser le mode "non-color data" sur les textures autre que la couleur principale, et passer par un nœud "normal map" pour les normales
  • Exporter le modèle !

J'ai écrit un petit programme en C++ qui tente d'afficher le modèle en utilisant un shader PBR qui tente de se rapprocher de ce que l'on verrait dans Blender. Voici le résultat avec un tore "rouillé", où la partie principale du modèle est métallique et lisse, mais présente un aspect abîmée par endroits via un matériau non-métallique, non-lisse, et présentant un fort bruit dans les normales.

Voici également les textures utilisées: couleur, combinaison de métal / rugosité, et normales.