Il est temps, il est grand temps, de profiter enfin du travail accompli en le contemplant dans un logiciel de rendu 3D temps réel qui utilise le rendu PBR. A cette étape, la plus simple de toutes, il s'agit essentiellement de mettre en valeur le résultat final, de corriger d'éventuels problèmes sur les textures, éventuellement de réaliser une vidéo de démonstration et d'exporter le résultat pour faire de la 3D interactive.

Objectifs :

Admirer son travail ! Le mettre en valeur et éventuellement faire une vidéo de démonstration

Exporter correctement le résultat pour pouvoir l'exploiter ultérieurement avec Unity ou Unreal Engine.

Les étapes :

  • Importer le LowPoly et le mettre à l'échelle : pour rappel, un éclairage réaliste nécessite une échelle cohérente et il faut donc paramétrer l'échelle de la scène de façon cohérente avec la taille de l'objet réel.
  • Régler le rendu et l'éclairage (et éventuellement créer sont propre panoramique HDR) : Afin de mettre en valeur le travail effectué en amont, on peut régler des lumières et/ou une image HDR pour éclairer le LowPoly et affiner les réglages du moteur de rendu.
  • Importer les textures et doser leurs effets sur le rendu final : les différentes textures sont importées afin de redonner au LowPoly le même aspect que le HighPoly.
  • Ajouter des effets de post-prod (lens flare, glow, vignettage, grain, etc.) : dernière étape "cosmétique", ajouter quelques effets pour donner un style plus photographique à l'image.
  • Créer une animation simple et exporter une vidéo du résultat : pour son book !
  • Exporter le maillage et les textures pour la 3D interactive : le véritable but de cette partie, afin de pouvoir récupérer l'ensemble du travail et l'exploiter dans Unity ou Unreal Engine.

Les logiciels :

Marmoset logoMarmoset Toolbag

Très complet pour la visualisation 3D temps réel, ce logiciel permet rapidement d'obtenir des résultats très réalistes. Il offre la possibilité de gérer un grand nombre de canaux de textures, aussi bien pour les matériaux métalliques que pour les matériaux diélectriques.

Les plus : une interface claire et ergonomique, de nombreux canaux de textures permettant de gérer finement les effets de matière et la possibilité de traiter avec effets l'image finale font de Marmoset Toolbag un logiciel incontournable de la visualisation 3D temps réel. C'est aussi le seul qui permet de créer une animation et de l'exporter en vidéo.

Les moins : Il n'y en a pas vraiment, si ce n'est l'absence d'un canal Thickness dans les effets de matériau - très demandé, il devrait être intégré dans une future version.

Knald logoKnald

Sur le strict plan de la prévisualisation 3D temps réel, Knald est très similaire à Marmoset Toolbag. L'interface est un peu moins simple mais il dispose de fonctions parfois plus puissantes.

Les plus : Knald permet un rendu des textures de structure (Normal, Height, etc.) plus fin et des paramètres plus nombreux et plus souples que Marmoset.

Les moins : Il offre une ergonomie un peu moins claire et moins de paramètres pour la gestion des textures de matière (Diffuse, Ambiant Occlusion, etc.)

Substance Painter logoSubstance Painter

Le grand avantage de ce logiciel est d'être nécessaire dans les étapes précédentes et de ne pas avoir à en apprendre un nouveau pour cette partie. Il est assez proche de Marmoset mais son moteur de rendu 3D temps réel (IRay) est un peu moins efficace que celui des deux logiciels précédents.

Les plus : une interface claire et une maîtrise très profonde des matériaux  - de ce point de vue, Substance Painter est beaucoup plus puissant que les deux autres logiciels. Il permet aussi l'ajout d'effets de post-production.

Les moins : un moteur de rendu 3D temps réel moins rapide et moins précis que celui des deux autres logiciels, IRay, l'équivalent temps réel de Mental Ray. NVidia ayant arrêté son développement, il devrait être remplacer par un nouveau moteur 3D temps réel dans les futures versions.

Le processus :

Si l'objectif est uniquement d'exporter les fichiers nécessaires pour Unity ou Unreal Engine, seules les étapes "Importation du LowPoly et mise à l'échelle de la scène", "Importer et régler les textures" et "Exporter pour Unity et Unreal Engine" sont nécessaires.

Importation du LowPoly et mise à l'échelle de la scène avec Marmoset Toolbag :

Avant tout, il faut commencer par importer le LowPoly en cliquant sur l’icône en forme de cube, en haut à gauche de l'interface. Pour que l'éclairage puisse être réaliste, il faut que l'objet soit à la bonne échelle. Sélectionnez la ligne "scène" et dans les options de la fenêtre du dessous, cochez la case Show Scale Reference : dans la fenêtre de prévisualisation, par dessus le LowPoly, apparaît une échelle et une silhouette humaine qui permettent d'avoir un repère. Il faut ensuite sélectionnez la taille du repère et ajuster le paramètre Scale pour que le LowPoly ait la même taille que l'objet réel.

Marmoset scene settings   Marmoset scene view

Régler les paramètres de rendu :

A présent, il faut ajuster les paramètres du moteur de rendu pour améliorer le rendu des effets de lumière (éclairage, reflets, occlusion ambiante, etc.). Sélectionnez la ligne Render pour faire apparaître les options dans la fenêtre en-dessous :

Marmoset Render settings

1. La zone Viewport permet de gérer la qualité de l'affichage et éventuellement de produire un rendu stéreoscopique pour permettre une prévisualisation VR en temps réel.

2. La zone Scene permet d'activer la visualisation du maillage et de paramétrer l'index de réfraction de la scène : comme la scène de l'exemple est à l'air, on peut entrer un indice de 1.003

3. Lighting : cette zone est la plus importante, et comporte trois sous-zones. Dans le cas d'objets métalliques ou avec un fort coefficient de réflexion de la lumière, il faut cocher l'option Local Reflections, dans le cas d'objets comportant un matériau transparent, il faut cocher l'option Internal Reflection pour améliorer le réalisme du rendu (attention, les deux options sont gourmandes en ressources).

a. La première sous-zone sert à paramétrer la qualité du rendu des ombres. Dans le cas de l'exemple du buste, il suffit de la passer en High.

b. la seconde sous-zone sert à paramétrer l'illumination globale, très importante pour le réalisme du rendu. Pour l'activer, cochez la case Enable GI. Le moteur de rendu de Marmoset fonctionne avec le principe des voxels, un principe qui est à la 3D ce que le pixel est à la 2D. Tout comme la définition en pixel d'une image détermine la qualité de sa finesse, la définition des voxels définit la qualité du rendu 3D : il faut passer le paramètre Voxel Resolution sur High. Enfin, il faut régler les deux paramètres Brightness et Voxel Scene Fit pour ajuster la luminosité du rendu et la qualité du rendu par voxel (il est préférable de laisser la valeur de luminosité sur 1.0 même si le rendu est sombre : l'ajout d'une ou plusieurs lumières rectifiera le problème dans la partie suivante).

c. Occlusion : cette dernière sous-zone permet de paramétrer la force et la taille de l'occlusion ambiante générée par la lumière indirecte. Comme une texture Ambiant Occlusion sera intégrée au LowPoly, il ne faut pas trop forcer sur ces réglages sous peine d'obtenir un résultat trop contrasté et peu réaliste.

4. Watermark : la dernière zone ne sert qu'à ajouter un filigrane sur l'image. Par défaut, il s'agit de celui de l'éditeur du logiciel, mais il peut être personnalisé (suivre ce lien pour connaître la marche à suivre).

Régler les paramètres d'éclairage :

Marmoset Sky settings

Il est préférable de commencer à régler l'éclairage du LowPoly avant d'ajouter les textures : il est plus facile de se rendre compte de leur influence sur le modelé et sur l'ambiance.

Sélectionnez la ligne Sky pour faire apparaître les options dans la fenêtre en-dessous.

L'ensemble de l'éclairage de la scène est assumé par un panoramique HDR, ce qui permet de générer très rapidement une ambiance lumineuse réaliste. Pour changer de panoramique, cliquez sur Presets... (Marmoset en propose toute une série qui permet de voir son LowPoly dans différentes ambiances très rapidement). Il est aussi possible de charger son propre panoramique HDR en cliquant sur Image...  Cette option est très intéressante si on a pris soin de capturer un panoramique HDR au même moment que le travail de photogrammétrie car il permet de retrouver le même éclairage que la scène réelle.

En cliquant sur l'image du panoramique sélectionné, on peut créer des lumières supplémentaires, symbolisées par un rond coloré, qui s'ajoutent sous la ligne Sky (en cliquant dessus, on fait apparaître des options permettant de gérer chaque lumière séparément). Il faut ensuite régler l'intensité lumineuse générale du panoramique HDR avec le paramètre Brightness puis celui des lumières ajoutées avec le paramètre Child-Light Brightness.

Les options de la zone Backdrop ne servent pas à régler l'éclairage du rendu 3D mais uniquement l'apparence du panoramique HDR à l'arrière-plan - le réglage Backdrop Blur ne fonctionne que si le mode d'affichage est en de type Blurred Sky.

A la fin de cette partie, on doit commencer à avoir une ambiance lumineuse cohérente et un rendu 3D précis et réaliste.

Marmoset sky view

Importer et régler les textures :

Marmoset Texture settingsMaintenant que l'ambiance lumineuse est posée, il faut - enfin - utiliser les différentes textures élaborées au cours des étapes précédentes. Lorsque le LowPoly a été importé, un matériau a également été créé dans Marmoset. En cliquant dessus, on fait appraître l'ensemble des options du matériau :

1. Les paramètres de la zone Texture ne devraient pas être modifiés, car ils affectent les coordonnées de mapping du LowPoly qui ont déjà été paramétrés précédemment.

Les zones suivantes sont destinés à régler les différents types d'effets et d'apparences du matériau - seules celles qui sont utilisées pour l'exemple du buste en plâtre sont abordées :

2. Displacement : ce premier canal est destiné à recevoir la texture Height (normalement, le fichier est encodé en linéaire, mais si ce n'est pas le cas, il faut cliquer sur l'icône de l'engrenage et cocher sRGB Color Space). Il faut ensuite régler les deux paramètres Scale et Scale Center pour doser correctement la déformation du LowPoly.

3. Surface : ce second canal est destiné à recevoir la texture Normal. Il est impératif de cocher la case Flip Y pour qu'elle soit correctement appliquée au LowPoly.

4. Microsurface : le canal Microsurface décrit la rugosité du matériau et sert à recevoir la texture Glossiness pour un matériau diélectrique ou Roughness pour un matériau métallique. Les paramètres Gloss et Horizon Smoothing permettent de doser l'influence de la texture sur le rendu.

5. Albedo : ce canal reçoit la texture Diffuse (ou Color)

6. Reflectivity : ce canal agit à l'inverse du canal Microsurface, il décrit les zones lisses du modèle 3D. Si le matériau est diélectrique, il reçoit une texture Specular, s'il est métallique, il reçoit une texture Metalness. Le paramètre Intensity règle la force des reflets et Fresnel leur aspect sur les faces orthogonales à la caméra. Si ce canal est utilisé, il faut aussi activer les canaux Reflection et Secondary Reflection.

7. Occlusion : ce dernier canal reçoit la texture Ambiant Occlusion dont l'effet est dosé par le paramètre Occlusion. Éventuellement il peut être complété par une texture Cavity : les deux paramètres Diffuse Cavity et Specular Cavity permettent de régler le comportement de la lumière dans les zones concaves du LowPoly.

Il est encore possible d'ajouter une texture Transparency pour les matériaux de type verre ou eau, et une texture Emissive pour les effets d'auto-illumination (matériau de type néon ou phosphorescent).

Une fois toutes les textures importées dans leurs différents canaux et leurs effets sur le rendu réglés, on peut admirer le résultat de son travail :

Marmoset Texture view

Régler les effets de post production :

Dernière étape pour finaliser le rendu, l'ajout d'effets photographiques : distorsion en barillet, grain, glow, flare, effet Bokeh, profondeur de champ, etc. Ils permettent de donner un peu plus de naturel à l'image. Ils sont accessibles en sélectionnant la ligne Main Camera dans la fenêtre en haut à gauche. Il n'est pas question de les décrire ici - les cours de prise de vue photo et vidéo devraient largement suffire à comprendre les différents paramètres.

Marmoset Post Effects view

Créer une animation et exporter une vidéo :

Marmoset Turntable settingsPour valoriser tout le travail accompli, Marmoset dispose d'une fonction intéressante : la table rotative (comme celle utilisée dans le cours Photogrammétrie d'objet : la prise de vue, mais en virtuel). Sélectionnez d'abord la ligne du modèle LowPoly dans la fenêtre en haut à gauche, puis cliquez sur l'icône ne forme de disque : une ligne Turntable apparaît, à laquelle est associé le LowPoly. Marmoset video settingsEn faisant glisser le curseur de la timeligne (tout en bas de l'interface, sous la fenêtre de prévisualisation), on peut visualiser l'animation du buste, faisant un tour complet en 10s (la vitesse peut être modifiée avec le paramètre Spin Rate - le chiffre indique le nombre de degrés par seconde que fait la table rotative). Pour exporter l'animation, cliquez sur le menu Capture>Video...

La fenêtre qui apparait permet de choisir le format et la qualité de la vidéo : il n'y a plus qu'à cliquer sur Export et laisser faire le logiciel.

Exporter le résultat :

Le travail accomplit peut maintenant être exporté vers divers logiciels en fonction de l'usage qu'on veut en faire. Trois possibilités sont détaillées pour terminer cette partie : l'exportation vers Unreal Engine, vers Unity et vers le site Sketchfab.

1 Exportation pour Unreal Engine : c'est la plus simple, puisqu'il suffit de sauvegarder le projet Marmoset (fichier .tbscene) et l'importer directement dans Unreal Engine 4 grâce au plugin Marmoset Toolbag Scene Importer, disponible à cette adresse (gratuit, il suffit de créer un compte sur le site d'Epic games)

2. Exportation pour Unity : pas beaucoup plus compliquée, l'exportation vers Unity nécessite simplement de cliquer sur le menu File>Export>Unity Package... Marmoset créé un fichier .unitypackage contenant tous les éléments de la scène : modèles 3D, animation, matériaux et textures. Il suffit ensuite de l'importer dans Unity. Attention : il arrive que les textures soient mal exportées et apparaissent en noir dans Unity. Dans ce cas, il faut importer séparément comme Assets le modèle LowPoly (format FBX) et les textures (au format TGA si une couche alpha est nécessaire, au format PNG dans le cas contraire) et recréer le matériau directement dans Unity.

3. Exportation pour le site Sketchfab : pour avoir un rendu 3D interactif et pas une vidéo, il est possible d'exporter le modèle LowPoly et son matériau vers le site Sketchfab. Cliquez sur File>Export>Model File. Dans la fenêtre qui apparaît, ne cochez pas la case Lights mais cochez les deux autres, puis cliquez sur Export. Il faut ensuite organiser les fichiers proprement pour le site :

  • Un dossier nommé "model" et contenant :
    • Le fichier OBJ. du LowPoly
    • Le fichier MTL du matériau
    • Un dossier nommé "textures" et contenant :
      • les textures au format JPG ou PNG (attention aux conversions gamma si les textures d'origine sont en TIFF, HDR ou EXR). En théorie aucune texture ne devrait faire plus de 75 Mo (la limite imposée par le site), mais dans la pratique elles doivent beaucoup plus légères, quelques Mo tout au plus.

Une fois tous les fichiers rassemblés, il faut les compresser en .zip et les uploader sur le site Sketchfab. Une fois le modèle importé, il faut recréer le matériau avec les textures importées : malheureusement, Marmoset ne dispose pas encore d'un Exporter, un plugin qui permet une exportation transparente depuis un logiciel de 3D (la liste est disponible à cette adresse).

Modifié le: lundi 22 juillet 2019, 15:57