Simulation de peinture à l'huile avec Blender 4.x

Techniques de rendu NPR sous Blender pour simuler de la peinture à l’huile.

Le Npr se propose de reproduire tous types de rendu non réaliste, notre projet consiste à reproduire un style de peinture à l’huile proche de celui de Rembrandt. Rembrandt

Pour le rendu imitant la peinture, nous développons des outils spécifiques au sein de Blender via le nouveau système de geometry node et le moteur de rendu EEVEE.

Nous utilisons tout particulièrement le shadertoRGB qui permet d’utiliser l’illumination de l’objet comme base de travail. shadertorgb

Nous commençons par poser une couche de peinture sur “la toile”, puis apposons les couches de peinture les plus sombres pour ajouter ensuite de nouvelles couches plus claires en fonction de l’illumination de la surface. couches

Une couche se compose comme suit : les coups de pinceau sont simulés par une mappe. pinceau

Une version noir et blanc de cette mappe est utilisée pour générer un bump sur un shader diffus de base. On soustrait à ce résultat le résultat d’un shader diffus identique mais sans le bump, récupérant ainsi le seul bump correspondant à la couche de peinture qu’on est entrain d’appliquer. On module ensuite la couleur de la couche de peinture pour en simuler l’épaisseur. couleur

Un masque en valeur de gris est calculé en mixant les interstices entre les coups de pinceau présents dans la mappe avec un calcul d’illumination de la surface. Plus le masque est blanc, plus la peinture s’applique, ici sur un fond vert. mix

Chaque couche de peinture se mélange à la précédente formant une pâte plus ou moins homogène.

Pour mixer une couche avec la précédente, nous varions la façon de récupérer l’illumination à la surface de l’objet, la faisant dépendre parfois de l’ambiant occlusion ou du degré de déformation de la surface, calculé via le Geometry node. illumination

La manière dont ensuite la peinture se dépose sur la peinture déjà présente est pour l’instant implémenté via une méthode de base :

Nous récupérons les mappes gèrant les bumps et les masques des 2 couches. On multiplie chacunes par une fraction de 1, le total des deux multiplicateurs valant 1, et on additionne ces mappes. addition

Le résultat final comporte 10 couches superposées. pate

La dernière couche, qui simule les touches de lumière les plus vives à la surface de la peau, ne se fond pas avec les autres, tel un frottis, consistant à déposer de la peinture sèche sur la pâte présente.

Les prochains développements consisteront à implémenter diverses méthodes de fusion des couches de peinture, comme tenir compte du mouvement de la brosse pour mixer les couches ou prendre en considération la fluidité de la peinture.

Premiers résultats.

Tête se déplaçant sous la lumière. visualisation

En situation. rendu

Le rendu manque de variation dans l’évolution des couches les unes par rapport aux autres, cela devrait s’améliorer avec les futures méthodes de fusion.

Le nombre de couches est limité par le nombre de textures que l’on peut mettre dans un shader sous Eevee.