Re: Shading de peau - pas loin du photoréalisme !

Posté par Pixelvore le 28/4/2008 19:09:21
Merci à tous pour vos commentaires
Sans plus attendre, voilà le .blend : *clic*
Quelques explications/commentaires :
* Sur la scène en elle-même :
- les ombres douces "raytracées" sont activées donc le .blend est à utiliser avec une version 2.46. Pour des rendus plus grands, augmenter le nombre d'échantillons des ombres.
- le format de sortie est l'Open Exr, un format hdr, donc les pixels "plus blancs que blancs" ne sont pas limités au blanc justement. Concrètement, ça veut dire que si j'ai une lampe trop forte qui "crame tout", rien ne m'empêche de corriger ça en post prod : si vous avez du jpeg avec un éclairage trop fort (des pixels avec des couleurs ultra-saturées) et que vous essayez de réduire l'exposition, ça ne fera pas disparaître les taches immondes, puisqu'il n'y a pas de différence entre un pixel blanc et un pixel qui, en sortant du moteur de rendu, était considéré "plus blanc que blanc" (ex : en jpeg, pas de différence entre un pixel d'une tache spéculaire blanche, et un pixel d'une face blanche dont l'Emit est au max). En revanche, avec de l'hdr, vous serez en mesure de garder toute la palette d'illumination que vous avez mise en place. J'espère que je suis clair... Je ne peux que vous conseiller de lire avec beaucoup d'attention (si si j'insiste) ce tutoriel dans son intégralité, de le digérer, et de l'appliquer à vos rendus. Après ça, ils ne seront plus jamais les mêmes
* Sur le shader :
- je pourrai expliquer l'arbre nodal en détail si ça vous intéresse, mais je pense pas qu'il y ait besoin : tout ce que le shader fait, c'est "superposer" des couches de peau : la couche de diffusion sans sss (unscattered diffuse) par-dessus l'épiderme, lui-même par-dessus le derme, et addition du "back scattering", sss de derrière (par exemple lorsque les oreilles apparaissent rouges quand elles sont éclairées par derrière). Et au-dessus de toutes ces couches, les spéculaires, mises à part sur d'autres shaders pour plus de contrôle (pour n'avoir que des spéculaires sur un shader, il suffit de mettre la diffusion à zéro, ou encore de décocher "diff" dans les nodes pour ce shader). J'ai inséré par endroits des contrôleurs "RGB Curves", parce que c'est beaucoup plus flexible de modifier les couleurs globales de cette manière, plutôt que d'avoir à traiter chaque couche séparément au sein du panneau des matériaux. Rien de bien compliqué en fin de compte, le tout est affaire de réglages et équilibrages plutôt agaçants, surtout que pour faire le rendu de 3 couches de sss, même sur les mêmes polygones, le moteur de rendu interne a besoin de 3 pass de préprocessing...
- à propos de certains réglages justement, voici ceux qui méritent d'être expliqués : pour les rayons de sss, pour me calquer sur des mesures physiques, j'ai mis le rayon sss du rouge deux fois plus large que celui du vert, lui-même deux fois plus large que celui du bleu, et ce pour toutes les couches de sss (c'est sûrement pas vrai pour l'épiderme dans lequel y'a pas de sang mais bon). Autre détail : j'utilise le shader diffus Oren-Nayar, car il prend en compte des phénomènes plus complexes que la diffusion "lambertienne" basique (réflectance déterminée par le cosinus de l'angle formé entre la normale à la surface et la direction de la lampe, car lorsque la surface n'est pas tournée parfaitement vers la lampe, elle reçoit moins d'énergie, proportionnellement à son inclinaison, d'où le calcul du cosinus de l'angle décrit). Oren-Nayar simule des micro-aspérités à la surface et permet un ombrage plus réaliste pour les surfaces rugueuses, en particulier l'argile. Dernier réglage à expliquer : j'ai affecté au sss du derme une couleur bleue (!) parce que ça permet d'obtenir des "terminateurs" (les zones de transition entre l'ombre et la lumière) colorés dans la teinte opposée au bleu, c'est-à-dire oranges. Enfin, les spéculaires sont en Cook-Torrance parce que ça simule un effet Fresnel : les lobes spéculaires sont plus brillants à des angles rasants. Voilà, je crois que j'ai fait le tour des réglages dignes d'intérêt (les autres dépendent du type de peau qu'on veut rendre, et aussi de la taille du mesh, concernant les rayons du sss)
* Et enfin, qu'est-ce qu'on pourrait améliorer sur ce shader :
- tout d'abord, des textures seraient les bienvenues. Et en passant, puisque la couche à texturer "officiellement" (en dehors des spéculaires), càd le shader "unscattered diffuse", est mixée au sss avec un facteur assez grand (60% de diffusion sss), il convient je pense de peindre sa texture en conséquence, autrement dit, de la peindre avec pas mal de contrastes, sinon elle appraîtra délavée Une idée est aussi de peindre cette texture de couleur quasiment en niveaux de gris : c'est le sss qui se charge de donner cette teinte rose saumon à la peau, en fait, je vous conseillerais de peindre votre color map comme si vous décriviez une peau cadavérique, exsangue quoi Peut-être texturer la couche "epidermis" aussi, puisque les couleurs sont dues à la mélanine. Et sinon, puisque grâce, ou à cause du sss, les couleurs rouges/oranges/roses viennent spontanément, en cas de maquillage, etc, je pense qu'il vaut mieux séparer ça sur une autre texture, éventuellement à appliquer en mode "Multiply" pour assombrir la peau. Autre idée pour texturer : on peut faire varier l'épaisseur, pour ainsi dire, de l'épiderme, en faisant varier grâce à une texture le facteur de "Screen" entre l'épiderme et le derme (sous les pieds, l'épiderme est épais donc la peau est plutôt jaune, sur les lèvres, elle est rouge ou presque, parce que le derme sous-jacent est plus visible, l'épiderme étant fin, etc). Bref, je crois que vous avez compris, pour texturer ne serait-ce que la couleur du shader, une color map suffit pas
- autre améliorations possibles, en vrac : ajouter du Fresnel pour décrire plus réalistement le comportement de la peau à des angles rasants : on voit beaucoup plus la surface à des angles rasants (donc la couche de "unscattered diffuse", ainsi que les spéculaires), alors que si on regarde la peau de face, on voit plus en profondeur, le derme et l'épiderme sont plus visibles. J'ai d'ailleurs mis en place une rapide "branche nodale" ( ) pour cet effet Fresnel entre la diffusion sss et la diffusion non sss (unscattered diffuse), mais j'ai eu la flegme de tester ; cette "branche" de Fresnel n'est reliée à rien dans l'arbre nodal. Les spéculaires Cook-Torrance quant à elles prennent déjà en compte l'angle de vue, pas besoin de s'embarasser de quelques nodes supplémentaires donc :) 2ème amélioration qui me vient à l'esprit : pour une peau duveteuse (genre peau douce), on peut utiliser un effet Fresnel aussi, ou bien tant qu'à faire, rajouter un système de particules avec des poils qui auraient pas mal de "translucidité" pour pouvoir être éclairés par derrière. Ca joue vraiment un rôle important, j'ai remarqué, ce léger duvet sur la peau. Autre idée : faire bon usage de l'occlusion ambiante, puisque la peau a tendance à s'illuminer elle-même dans les zones où les surfaces sont proches les unes des autres, et donc à se saturer elle-même, en faisant tourner à l'orange les endroits où 2 bouts de peau sont en face de l'autre. L'occlusion ambiante permet d'obtenir des informations de "distance" en quelque sorte entre les faces de l'objet, donc utilisée pour rajouter de l'orange par endroits, je pense que ça peut produire bon effet. Et dernière idée, que j'ai mise en oeuvre d'ailleurs, se servir des réflexions floues raytracées pour remplacer les spéculaires incorrectes physiquement (c'est flagrant aux angles rasants, essayez ) Les réflexions floues plantent avec les nodes de matériaux malheureusement, donc à utiliser en compositing.
BON, je crois que j'ai fait le tour, mon dernier conseil, si vous êtes arrivés à la fin de ce post, serait de ne jamais perdre patience
Et à propos, Weilinn, du tutoriel : j'ai écrit un article pour le Blender Art Mag, je verrai bien le moment venu s'il a été accepté. Au pire, je pourrai vous le passer sous la forme du doc open office que j'ai rédigé, pas de problème (je connais pas la procédure pour "officialiser" un tuto)
Voilà voilà, j'espère ne pas vous avoir fatigués, @+ et bon Blend !
(et sur ce, je m'en retourne à mes devoirs, dernière ligne droite avant le Bac... Si c'est pas malheureux... )

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=5&topic_id=13341&post_id=167469