• eng
  • deu
  • esp
  • ita
  • por
  • rss-icon
  • facebook-icon
  • youtube-icon
  • twitter-icon

Blender : briques avec adaptive subdivision/microdisplacement

Dans ce troisième tutoriel pour Blender (mis à jour en version 2.93) concernant la création d'un mur 3D à partir d'une photo, nous verrons comment créer les briques du mur à l'aide de l'Adaptive Subdivision, que l'on appelle aussi Adaptive Displacement, ou Micropolygon displacement, ou Microdisplacement, ou Tesselation, autant de noms parce que dans Blender cette fonctionnalité ne correspond pas à une seule commande, comme dans le cas du "Displace Modifier", mais à un ensemble de réglages à faire (il n'a donc pas été attribué un nom officiel), à la fois parce que dans la littérature technique certaines fonctions ont été appelées de différentes manières, et parce que cette méthode a non pas une mais deux caractéristiques intéressantes: l'adaptabilité et les micro-polygones.

 

Subdivision adaptative/Déplacement:

Dans le tutoriel précédent https://www.graphicsandprogramming.net/fra/tutorial/blender/modelisation/blender-briques-modificateur-displace, nous avons créé un mur de briques avec le modificateur "Displace", qui utilisait un nombre égal de sommets/polygones pour créer les briques sur tout le mur, mais dans un cas plus complexe, avec un mur plus long, nous pourrions être intéressés à voir plus clairement, avec plus de détails, les blocs les plus proches, tandis que les briques les plus éloignées peuvent également être faites avec moins de sommets, comme ils sont plus éloignés et moins visibles. Cette fonction est réalisée à travers la subdivision adaptative: comme vous pouvez le voir sur la figure

la partie du mur la plus proche de la Camera, en bas, utilise plus de sommets pour représenter les objets les plus proches, tandis que les plus éloignés sont constitués de moins de sommets, avec des reflets appropriés et des ombres qui s'atténuent à une résolution inférieure.

 

Micropolygones:

Une autre caractéristique fondamentale du Microdisplacement sont les micropolygones, qui permettent d'ajouter des détails à un maillage, uniquement pendant la phase de rendu, à partir d'une image. De ce point de vue les maps utilisées rappellent un peu les bump maps, qui ajoutaient des petits détails sensibles à la lumière à l'aide du matériau, seulement dans ce cas dans le rendu le maillage aura vraiment l'air déformé, comme si on utilisait un modificateur "Displace". Dans Blender, nous pouvons également choisir la taille des micropolygones (à partir de 0,5 px et plus), évidemment plus ils sont grands, plus la perturbation résultante du maillage sera grossière.

 

Création de briques avec le Microdéplacement:

Prenons un exemple similaire à celui du tutoriel précédent, concernant le modificateur "Displace": créons un plan centré, importons l'image "diffuse_map.jpg" représentant le mur, appelons l'addon avec "File > Import > Images as Planes"

On importe ensuite la lampe de l'exemple du tutoriel précédent, ou bien appuyez sur les touches "Shift+A" puis choisissez "Light > Sun", créez une lampe "Sun" avec Strength:4.5 avec position (X:-2.88183 m, Y:-1.41398 m, Z:2.8909 m) et rotation (X:48.7941°, Y:-1.17007°, Z:297.408°).

On crée ensuite une Camera, en laissant les valeurs par défaut et avec position (X:1.17253 m, Y:-2.66012 m, Z:-0.016343 m) et rotation (X:90°, Y:0°, Z:22.2°).
Procédons maintenant à la construction des briques du mur, en 4 étapes:

1. Pendant des années, Microdisplacement a été classé parmi les "fonctionnalités expérimentales" et ne fonctionne qu'avec le moteur de rendu Cycles, donc dans l'onglet "Render Properties" de la "Properties Window", nous avons défini "Render Engine:Cycles" et "Feature Set:Experimental"

2. Sélectionnez le plan en "Object Mode", cliquez sur "Shading" en haut pour accéder à l'espace de travail des matériaux, où les nœuds sont présents, appuyez sur les touches "Shift+A" et ajoutez avec "Texture > Image Texture" la carte de déplacement "displacement_map.jpg". Toujours en appuyant sur les touches "Shift+A", nous créons le nœud "Vector > Displacement", qui régule l'intensité du surplomb, que nous plaçons entre la texture et le port "displacement" du "Material Output"

De cette façon, nous avons connecté la carte à partir de laquelle lire les données de déplacement.
Pour mieux contrôler les résultats de déplacement, dissocions pour l'instant la texture "diffuse" du shader "Principled".

3. À l'étape précédente, nous avons lié la carte de déplacement au "Material Output", mais son port "displacement" n'était utilisé que par les "bump map" pour simuler de petits détails sur la surface; maintenant, nous voulons changer sa fonctionnalité, nous accédons donc à l'onglet "Material Properties" et dans "Settings > Surface > Displacement", nous modifions l'option de "Bump Only" à "Displacement Only" (uniquement "Displacement" car nous voulons utiliser cette fonction uniquement pour le déplacement)

4. On sélectionne le plan et on lui associe un modificateur "Subdivision Surface", qui permet d'ajuster le taux de subdivision des micropolygones, dans lequel on coche l'option "Adaptive Subdivision" pour activer la subdivision qui change en fonction de la distance depuis l'appareil photo (et "Simple" pour garder les bords du haut inchangés).

Le paramètre "Dicing Scale" permet de modifier l'échelle de définition du microdéplacement à la fois pour l'aperçu "Rendered" dans la 3D Viewport et pour le rendu réel (afin de travailler facilement sur d'autres parties de la scène, économisant les ressources de calcul). Par exemple

par défaut, les valeurs 1px pour le "Render" et 8px pour le "Viewport" sont définies, qui sont les dimensions des micro-polygones dont nous avons parlé précédemment, donc dans "Render" des micro-polygones plus petits seront utilisés, tandis que dans "Viewport" plus large, facilitant ainsi les calculs lors de l'aperçu.
Ces valeurs par défaut peuvent être modifiées dans l'onglet "Render properties" du sous-panneau "Subdivision",

où, éventuellement, vous pouvez définir des valeurs plus petites pour le "Render", mais pas moins de 0,5, ou donner des valeurs plus grandes à "Viewport" si vous avez des problèmes de ressources.
Dans le sous-panneau "Subdivision", nous voyons trois autres paramètres, tels que "Offscreen Scale" qui spécifie quelle doit être la définition des parties d'un maillage qui sont hors de la vue Camera. Pour des valeurs élevées de "Offscreen Scale", les parties hors de vue seront représentées en économisant des ressources, par exemple en faisant pivoter la Camera et en définissant la valeur "Offscreeen Scale" sur 25, il y a une économie dans les parties encerclées les plus éloignées de la vue,

tandis que pour les valeurs faibles, par exemple 1, les parties les plus cachées de la vue de la Camera sont plus définies.

Le paramètre "Max Subdivisions", en revanche, établit un plafond sur la définition du maillage: même si pour une certaine distance plus de divisions peuvent être effectuées que le paramètre entré, il n'en effectue aucune. En fait, si l'on compare la situation avec la valeur par défaut 12 avec une valeur de 5 pour "Max Subdivisions", on remarque que même si on se rapproche de la Camera le nombre de subdivisions n'augmente pas, mais à un certain point il s'arrête .

Dans le dernier paramètre "Dicing Camera", nous pouvons également insérer une Camera de référence pour le calcul des subdivisions, afin qu'aucun artefact ne soit créé pendant les animations.

Revenant à la réalisation de notre mur, comme dans le tutoriel concernant le modificateur "Displace" nous insérons, en tant que "Environment texture" dans les "World Properties", l'image hdr "neurathen_rock_castle_2k.hdr"

Puisque notre scène est simple et avec peu de sommets, afin de pouvoir observer notre objet plus facilement nous donnons également une taille de micro-polygones égale à 1px dans la viewport

On entre dans le mode de vue "Rendered" et on remarque que les briques sont trop saillantes

On va ensuite dans l'espace de travail "Shading" et dans le nœud "Displacement" on diminue la valeur de "Scale" en l'amenant à 0.015

obtenir un résultat plus correspondant à nos souhaits

En appuyant sur la touche 3 du pavé numérique dans la viewport, on regarde la paroi latérale et on remarque que les briques sont en relief mais déplacées "à l'intérieur" du maillage, alors qu'on veut qu'elles dépassent à l'extérieur.

puis on change la valeur de "Midlevel" (dans notre cas on la met à zéro)

pour amener les briques à niveau.

Depuis la vue Camera (obtenue en appuyant sur la touche 0 du pavé numérique) on peut déjà voir un mur de briques intéressant.

Reconnectons maintenant la texture de la "carte diffuse", changeons la valeur de "Specular"  en 0.177

et on obtient

Obtention, comme dans le cas du modificateur "Displace", d'une bonne forme pour les briques du mur.

La subdivision adaptative présente des avantages car elle vous permet d'économiser de la mémoire, vous permettant de rendre plus rapidement et de créer des scènes plus complexes avec les mêmes ressources matérielles, en optimisant les sommets avec la distance de la Camera, avec un maillage qui restera léger dans la modélisation phase. , en reportant les détails à la phase de rendu. Par contre, il a encore quelques défauts:

- Peut être utilisé avec le moteur de rendu Cycles, mais pas avec Eevee.
- En affichant les reliefs uniquement dans le rendu, le microdéplacement ne peut pas être utilisé pour les objets destinés à l'impression 3D (un plan avec un Adaptive Displacement associé, en Solid view il ne reste qu'un plan, sans les reliefs ajoutés avec cette méthode, et ainsi de suite se traduira par tout autre logiciel où il sera exporté)
- Dans la pile des modificateurs, le "Subdivision Surface" adaptative pour bien fonctionner doit être en bas, afin d'être le dernier modificateur utilisé avant le rendu; s'il est déplacé en premier il perdra certaines de ses propriétés: prenons comme exemple une "séquence d'astéroïdes"

fabriqué à partir de cet objet (un cube auquel un modificateur "Subdivision Surface" auparavant non adaptatif avait déjà été appliqué)

avec la version expérimentale de Cycles définie, un matériau avec l'option "Surface > Displacement:Displacement Only" et un matériau avec une texture "Noise Texture" avec un nœud "Displacement

et modificateur adaptatif "Subdivision Surface" après un modificateur "Array"

le résultat sera celui désiré

tandis que si nous faisons glisser le modificateur "Subdivision Surface" au-dessus du modificateur "Array", le faisant agir comme cela auparavant, il se transformera "par magie" en un modificateur non adaptatif, perdant toutes ses propriétés indiquées ci-dessus

Une dernière remarque: si vous créez des instances, pensez à placer la Camera devant l'objet d'origine.

Nous sauvegardons le fichier sous "adaptivesubdivision.blend".

Pour ce tutoriel sur la subdivision adaptative c'est tout; nous avons vu que c'est un outil très utile, même s'il a parfois des limitations et des comportements indésirables. Nous espérons qu'à l'avenir, il sera amélioré et deviendra également un standard pour Blender.
Rendez-vous au prochain tutoriel, où nous verrons comment donner à notre mur un matériau PBR (Physically Based Rendering) afin de le rendre le plus réaliste possible. Happy blending!

Si vous avez aimé l'article, partagez-le avec un ami:

 

Allez à la liste des tutoriels: > Blender <