Le Blog à Guigui

Devenez artiste en herbe!

Posté en 3d, Blender, Graphisme, Tutoriel par Guillaume à 29 avril 2009
Créateur en herbe
"Après de nombreuses demandes, voici enfin le tutoriel de création d’herbe sous Blender."

Après avoir posté quelques tests sur la création d’herbe, j’ai eu de nombreuses demandes pour créer un tutoriel expliquant dans les grandes lignes le processus employé pour arriver à ce résultat. Ce dossier s’adresse à des utilisateurs confirmés en 3d, et s’adapte principalement à Blender à partir de sa version 2.46.

Influence Big Buck Bunny

Je ne m’en cache pas, j’ai repris exactement la même méthode que celle utilisée sur le film Big Buck Bunny pour réaliser l’herbe. Le film étant libre de droit et ses sources étant disponibles, n’importe qui peut analyser les fichiers de production (pour peut que vous ayez une configuration matériel assez robuste).

http://www.bigbuckbunny.org

Version 2.46

Blender 2.46

Pour les utilisateurs de Blender, il est indispensable d’être en possession d’une version supérieur ou égale à la 2.46. En effet, c’est depuis cette version que le système de particules à été réécrit, intégrant de nouvelles fonctionnalités aussi bien sur la génération des systèmes de particules mais aussi sur les shaders de ces derniers.

Pour les autres utilisateurs, il est naturellement possible de suivre ce tutoriel de manière théorique mais l’outil de création de particules de Blender ne ressemble en rien aux outils proposés par Maya, 3Ds Max ou XSI. Il vous faudra donc adapter.

Cahier des charges

Avant de nous lancer, nous devons définir le cahier des charges de ce que nous allons réaliser. Est-ce une image, une animation ? Quelles sont les contraintes techniques ? Quelles sont les contraintes de temps ? Quel est l’objet de ce travail ?

Prenons par exemple le cahier des charges suivant :

  • Objectif du projet : Réaliser une clairière
  • Type : Animation
  • Durée : 10 secondes
  • Format : HD1080 (25fps)

Ce cahier des charges est volontairement très simplifié. Dans un environnement de production, on prend en compte le budget initial, le temps de production, si il y a des personnages, du son… Ici, une société X nous demande de réaliser une petite séquence animée de 10 secondes mettant en scène une clairière. La production devra être rendu en full HD (1920×1080) à 25 images par secondes. Cela fait donc un total de 250 images à rendre.

Dès qu’on travail sur de l’animation, il faut avoir à l’esprit dès le début de la production le temps de rendu final. On va donc identifier une contrainte technique importante : l’optimisation des scènes pour le rendu. En effet, nous allons devoir réaliser des images très lourdes en particules. Or, cela est bien connu, ce genre de scène est très long à calculer. Cependant, il faudra se fixer une limite à ne pas dépasser : 2 minutes maximum par image.

"Une production résulte d’une alchimie entre le temps de création, la qualité et les moyens techniques & humains à disposition."

On le verra justement, de nombreux outils ont été développés pour accélérer les temps de rendus en conservant une bonne qualité.

Préparation de la scène

La première étape va consister à préparer les éléments de base de la scène. Commencez par vider votre scène de base (suppression de tous les éléments par défaut). Insérez dans un premier temps l’émetteur de particules. Cela peut être n’importe quel objet de type Mesh. Dans mon exemple, j’ai inséré un cercle que j’ai transformé en surface pleine (via le mode édition, sélection de tous les sommets, SHIFT + F).

La forme de l’émetteur de particules n’a en fait aucune importance tant que c’est un Mesh. Cependant, pour vos expérimentations, privilégiez des formes simples tel que des plans, des cercles pleins… Vous complexifierez la forme une fois que vous maitriserez la technique.

Scène de base

Créer le système de particules

Nouveau système de particule

Maintenant que nous avons créé notre émetteur de particules, il va falloir le connecter à un système de particules. Pour le moment, nous n’en avons créé aucun. Il va donc falloir en générer un nouveau grâce au panneau prévu à cet effet (« Object » (F7), sous-panneau « Particle buttons« ). Cliquez sur « Add New » pour créer le nouveau système. Celui ci est alors automatiquement connecté à l’objet sélectionné (notre émetteur) sous la forme d’un modificateur.

Par rapport aux versions précédentes de Blender, les possibilités sont bien plus importante en matière d’effet particules. Cela se matérialise naturellement par un nombre de fonctions beaucoup plus important.

Type Hair

Nous allons travailler sur des particules statiques (même si ces particules seront animés par la suite). Sélectionnez donc un système de particules de type « Hair » dans l’onglet « Particle System« . Il n’y a pour le moment aucun changement visible sur notre objet. En fait, Blender ne fait rien qu’on ne lui aurait pas demandé. Nous avons juste sélectionné un système de type Hair, mais nous n’avons pas spécifié encore la longueur des particules.

Pour faire pousser l’herbe, nous allons utiliser la glissière « Normal » dans l’onglet « Physics« . Les particules vont alors grandir selon les normales de la ou des faces sur lesquelles elles s’appliquent. Si vous constatez que les particules poussent à l’envers, au lieu d’entrer une valeur « Normal » négative, inversez les normales des faces qui posent problème.

"Une création passe d’abord par l’observation."

A ce titre, vous constaterez que notre système de particules ne ressemble en rien à des brins d’herbes aussi bien dans la vue 3D qu’au rendu final. Nous allons donc arranger ce système pour qu’il devienne plus naturel.

Dans un premier temps, si comme moi vous travaillez avec comme base un cercle ou une forme complexe, vous constaterez que les particules s’agglutinent sur certaines zones. En cause, la densité du maillage à ces endroits. Au lieu de tenter d’arranger le maillage, nous allons cocher « Even » & « Random » dans l’onglet « Particle System« . Even va disperser les particules de manière uniforme sur l’objet en Random fera une redistribution aléatoire.

Redistribution proportionnelle

Si vous passez dans une vue de face ou de coté, vous constaterez que les particules ont toute la même longueur. Pour remédier à cela, utilisons la valeur « RLenght » dans l’onglet « Visualization« . Les particules auront alors des longueurs aléatoires en se basant sur la longueur d’origine (spécifié par la valeur « Normal« ).

Le problème maintenant, c’est que tous les brins d’herbe poussent dans la même direction. Dans la nature, cela ne serait pas possible. Nous allons donc utiliser quelques valeurs dans l’onglet « Physics« .

  • RandomRandom : Cette valeur fera varier la direction des particules en modifiant de manière aléatoire la normale initiale. Attention à ne pas l’utiliser de manière excessive car l’herbe pousse quand même vers le haut.
  • brownBrown : Cette valeur va assouplir les particules en les courbant légèrement de manière aléatoire. Dans ce cas aussi, attention aux excès. L’herbe ne fait pas non plus des frisettes.

Pour finir, il va falloir augmenter le nombre de particules pour obtenir un bon résultat. Le cas qui vient le plus vite à l’esprit, c’est l’augmentation de la valeur « Amount » dans l’onglet « Particle System« . Cependant, cela pose trois problèmes :

  1. La limite est de 100 000 particules (ce qui serrait suffisant dans beaucoup de cas cela dit).
  2. Selon votre configuration, la vue 3D risque de devenir très lente car les 100 000 particules seront toutes affichées.
  3. Le temps de calcule sera long car chaque particules sera différente des autres. Il faudra que Blender calcule 100 000 particules indépendamment les unes des autres.

À la place, je vous propose de laisser une faible valeur (entre 1000 & 2000) et de vous rendre plutôt dans l’onglet « Children« . Cette onglet va vous permettre de faire des copies en instance des particules générées par la valeur « Amount » (on les appel les particules enfants). Avantages :

  1. Le nombre maximum d’enfant est de 10 000 par particules. Si vous avez 1 000 particules spécifiées pour la valeur « Amount« , vous en aurez 10 000 000 au rendu final.
  2. La totalité des enfants ne s’afficheront pas dans la vue 3D. Cela économisera les ressources.
  3. Les enfants sont des copies de particules générées par la valeurs Amount. Il ne sont pas re-calculés pour le rendu ce qui permet une économie de temps de rendu.

Dans l’onglet « Chidren » sélectionnez « Particles » du menu « Children From« . Vous aurez trois valeurs à régler :

  1. Amount : Le nombre d’enfants affichés dans la vue 3D. Laissez une faible valeur pour économiser les ressources de la carte graphique.
  2. Render Amount : Le nombre d’enfants sur le rendu final. C’est cette valeur qu’il faut modifier pour augmenter ou diminuer la densité de l’herbe au rendu.
  3. Rad (pour Radius) : Le rayon autour de la particule parente dans lequel les enfants sont générés.

Génération d'enfants

Création du shader

Cette partie est très certainement la plus complexe à réaliser. Sur le plan technique, nous allons exploiter des fonctions assez poussées de Blender. Sur le plan du rendu, il faudra certainement plus d’une tentative avant d’arriver à un résultat satisfaisant.

Connectez une nouvelle matière à votre objet via le panneau « Shading » (F5). En premier lieu, choisissez une couleur de base. Dans notre cas, ça sera un vert (si vous êtes à cour d’inspiration :  #587C15 . Pour les opérations suivantes, utilisez le mode de prévisualisation « Hair » dans l’onglet « Preview« .

Le rendu des particules

Dans l’onglet « Link and Pipeline« , localisez le sous-menu « Strand« . Celui-ci ouvre un panneau propre aux shaders de particules. Cochez « Surface Diffuse« . Cette option va adapter le shader aux particules. Les particules seront alors éclairées de manière uniforme. Cela à deux point positifs :

  • Ce shader est étudié spécialement pour les particules. On aura donc un rendu plus adapté, plus uniforme
  • Le temps de rendu sera très fortement divisé

Intéressons nous maintenant aux glissières :

  • Start : Cette valeur indique la taille de la particule à sa base (son diamètre)
  • End : Idem que l’option précédente, mais pour l’extrémité de la particule
  • Shape : Cette option change l’interpolation de la courbe. Lorsque la valeur est basse, la particule sera affinée très rapidement.

Dans notre cas, nous voulons faire de l’herbe, nous aurons donc une base importante et une extrémité très fine. Nous pourrons aussi jouer avec la valeur Shape pour affiner plus rapidement les brins d’herbe. Personnellement, j’ai tendance à utiliser les unités Blender en cochant « Use Blender Units« .

Note Si vous tentez de faire des rendus actuellement, vous constaterez que cela est démesurément long, quelque soit votre configuration. Cela est normal pour le moment. Pour les rendus intermédiaire, je vous conseil de désactiver ou de diminuer le nombre de particules enfant.

Nous allons maintenant nous intéresser aux canaux de textures. Nous n’utiliserons ici que des textures procédurales mais l’emploie d’images de votre conception donnera naturellement un bien meilleur effet. Nous allons utiliser 5 canaux de texture. L’ordre dans lequel se succèdent les canaux a une importance. En effet, a l’image des modificateurs, les canaux de texture récupèrent le résultat du traitement précédent. Ainsi, le canal 2 récupérera le résultat du canal 1 pour l’envoyer au canal 3 et ainsi de suite.

Canaux de textures

Le canal alpha

Assignation du colorband sur la particule

Vous avez très certainement pu constater que sur les images finales, l’extrémité des brins d’herbe est transparente par dégrader. Pour cela, nous allons utiliser un canal de texture qui fera office de canal alpha. Créez une nouvelle texture sur le premier canal de texture. Connectez lui une texture de type Blend dans le panneau « Texture« . Nous allons gérer notre canal alpha depuis l’onglet « Color » du panneau Texture. Activez « Colorband« . Vous avez alors un dégrader qui va de la transparence vers le cyan.

Le premier curseur (« Cur: 0« ) à gauche sera la base des particules. Le second curseur (« Cur: 1« ) à droite sera leur extrémité. Le dégradé doit donc être inversé de manière à ce que la transparence soit sur le curseur de droite. Utilisez la valeur Alpha (« A« ) pour spécifier l’opacité des curseurs. Le curseur 0 doit être 100% opaque, le curseur 1 100% transparent.

Comme nous souhaitons que seul l’extrémité des herbes soient transparente, faites en sorte que le curseur 0 soit placé au niveau du centre du dégradé (Pos entre 0.5 et 0.6). Il est ici inutile de se soucier des couleurs. Seul le canal alpha compte.

Le blend du canal alpha au final.

La texture Blend du canal alpha.

L'onglet colors

Retournez dans le panneau « Material« . Nous constatons que le dégrader est appliqué sur l’aperçu mais pas comme nous le souhaitons. Il faut juste indiquer à Blender que la texture doit suivre les particules et non être appliquée à l’objet global. Pour cela, rendez vous dans l’onglet « Map Input » et cochez « Strand« . Nous avons toujours un problème : les particules prennent la couleur de la texture et non sa transparence. Cela se gère via l’onglet « Map To« . Décochez « Col » pour désactiver la couleur et cochez « Alpha » pour que le canal alpha de la texture prenne le relai sur le canal alpha de la matière.

Les particules restent cependant opaque de leur base à leur extrémité. La encore, nous avons oublié de spécifier une information à Blender. En fait, le canal alpha de la texture va prendre pour base le canal alpha de la matière. Comme notre matière est opaque à 100%, les particules restent totalement opaque. Il faut donc changer la valeur alpha (« A« ) dans l’onglet « Material » (0 vous donnera un dégrader vers une transparence totale, ce qui est souhaité). N’oubliez pas de cocher Z-Transp dans l’onglet « Link and Pipeline » pour avoir une prise en compte que la profondeur (Z-Buffer) dans la transparence.

Le canal de couleur globale

Ce canal de texture va s’appliquer à l’objet dans sa globalité. Son but est d’obtenir des variantes dans la couleurs de base. Ainsi, certaines herbes seront un peut plus sombre, d’autre un peut plus clair. Cela permet de dé-uniformiser la couleur.

Ajoutez une nouvelle texture dans le second canal. Connectez un type clouds. En revenant dans le panneau « Material » vous constaterez que les particules ont des nuances de magenta. C’est en fait la couleur par défaut des textures lorsque rien est spécifié. Il suffit de la modifier dans l’onglet « Map To« . Assignez un vert légèrement différent de celui employé dans le canal « Diffuse » de la matière (par exemple :  #8EA518 ).

Le canal de couleur spécifique

Ce canal va nous permettre de colorer de manière aléatoire quelques particules en particulier.

Ajoutez une nouvelle texture dans le troisième canal. Connectez un clouds via le panneau des textures. Dans l’onglet « Clouds« , réduisez la valeur « NoiseSize » (0.010 par exemple) pour avoir un brouillage plus important. Via l’onglet « Color« , rapprochez les deux curseurs du Colorband relativement proche. La transparence doit être à gauche, l’opacité à droite. Colorisez le curseur opaque avec un vert qui tranche par rapport aux deux précédents ( #152707 ). Normalement, vous devriez avoir quelques petits points verts clairsemés dans l’aperçu de la texture.

Colorband du canal de couleur spécifique.

Le Colorband du canal spécifique.

Texture clouds du canal spécifique

Texture clouds finale du canal spécifique.

Le canal des ombres

Ce canal a pour but de simuler un ombrage sur les brins d’herbe (assombrissement de la base). Pour cela, nous allons reprendre la même technique que pour le canal alpha. Créez une nouvelle texture de type « Blend » dans le quatrième canal de texture. Activez le Colorband pour le régler. N’oubliez pas que la base de la particule (sombre) est à gauche alors que l’extrémité est à droite. Créez donc un dégrader du vert sombre ( #172108  vers la transparence relativement localiser à gauche (sur la base).

Dans le panneau « Material« , onglet « Map Input« , n’oubliez pas de cocher « Strand » pour appliquer le dégrader sur les particules.

Le colorband du canal des ombrages.

Le colorband du canal des ombrages.

Le canal vertical

Ce dernier canal est très important. Il va permettre de mieux différencier les particules les une des autres en appliquant un dégrader non plus horizontal mais vertical sur chaque herbe. En claire, on va mettre un dégrader autour des brins d’herbe. Nous faisons ceci en vue d’une grande économie de temps de rendu que j’expliquerai plus tard. En effet, si vous faite un rendu de votre image avec un éclairage, le résultat sera peut être satisfaisant mais prendra 1heure par image HD voir plus selon les configurations. Nous sommes donc loin du cahier des charges.

Créez donc un Blend dans le dernier canal de texture. Comme nous voulons que ce dégrader s’appliquer sur l’objet de manière vertical, nous allons faire une rotation à 90% en cochant « Flip XY » dans l’onglet « Blend » du panneau des textures. Ce dégrader doit avoir 3 curseurs (cliquez sur « Add« ).

  • Curseur 0 (coté gauche de la particule) : Choisissez un noir comme couleur. Rendez le légèrement opaque (A = 0.380).
  • Curseur 1 (centre de la particule) : Choisissez un vert qui se rapproche de la couleur de diffusion ( #709827 . Rendez ce curseur totalement transparent (A = 0)
  • Curseur 2 (coté droit de la particule) : Choisissez un noir. Rendez le légèrement opaque. Il peut être intéressant que son opacité diffère du curseur 0 mais ça n’est pas obligatoire. (Exemple : A = 0.650).

Une fois cette texture créée, vous n’avez plus qu’à activer « Strand » dans le panneau material onglet Map Input.

Le colorband du canal vertical.

Le colorband du canal vertical.

Optimisation du rendu

A l’heure actuelle, le rendu d’une seule image HD1080 sur mon ordinateur dur plus d’une heure. Et bien vous allez voir que en cochant quelques options, nous allons faire passer ce temps de rendu sous la barre de la minute (le temps va varier en fonction de votre configuration).

Options de visualisation

Retournez dans le panneau des particules, onglet « visualization« . 3 options vont nous intéresser :

  • La glissière « Render » (sous la glissière « Steps« ) : Elle va permettre de diminuer le nombre de subdivisions des particules au rendu. Plus cette valeur est élevé, plus les courbes des particules seront marquées, mais le temps de rendu augmentera en conséquence. Dans le cadre d’une animation, une valeur de 2 est suffisante. Notez que la valeur Steps réalise la même action mais dans la vue 3D. Donc si votre configuration graphique est basse, vous pouvez baisser Steps à 1 et laisser Render à 2.
  • Le bouton « B-Spline » : L’interpolation des particules se fera le long de courbe. Nous n’allons pas entrer dans des détails trop techniques mais cette option diminuera le temps de rendu en fonction du nombre de particules (plus il y a de particules, plus l’économie de temps de rendu avec cette option coché sera importante).
  • L’option « Strand Render » : C’est l’option la plus radicale. Techniquement, blender utilisera des primitives prévus pour les particules de type Hair pour faire le rendu. Sur ma configuration, je passe de presque 1h de temps de rendu à 20 secondes. Par ailleurs, il faut savoir que cette option n’est pas sans concession : Les particules seront exclues du Raytracing (donc pas d’ombre en Raytrace, Ambiant Occlusion ignorée…). C’est pour cette raison d’ailleurs que nous avons créer des canaux de textures assez complexes pour simuler les ombrages.

Éclairage & compositing

Trouver le bon éclairage pour ce type de système de particules est assez complexe. Il nécessite de nombreux tests. Souvent, le système d’éclairage des particules doit être dissocié du reste. Personnellement, j’ai utilisé un « Hemi » pour l’ambiance globale et un « Sun » pour bien marquer la forme des objets. Notez que l’angle de projection de la lumière a une grande importance dans le résultat final.

Pour avoir un résultat encore plus net et plus marqué, il vous faudra utiliser les outils de compositing de Blender, notamment pour ajuster les tons, les contrastes et les couleurs.

"C’est sur la phase d’éclairage qu’une image prend vie."
Télécharger le fichier

Télécharger le fichier

A cet effet, il vous faudra user de patience avant de trouver le bon réglage entre les lumières, les textures et le compositing.

Conclusion

Je n’ai plus qu’à vous remercier d’avoir pris le temps de lire ce tutoriel jusqu’au bout et j’espère vous avoir aider dans votre apprentissage de la 3D et du logiciel Blender. Vous pouvez télécharger le fichier final en cliquant sur le lien ci contre.

tuto-end

Copyright Guillaume Modard – 2009

Étiqueté :, , , ,

10 réponses

Souscrire aux commentaires via RSS.

  1. Vi. soumis, le 29 avril 2009 at 21:57

    Beau travail, mon cher internaute anonyme ! (:p)
    C’est du tuto de haut vol ça :
    - rigueur
    - démarche expliquée
    - explication de chaque action
    Déjà rien que pour ces 3 qualités, tu concurrences les meilleurs rédacteurs de tuto français. En effet, on trouve très peu de tutos avec ces 3 qualités, qui sont pourtant essentiels. Les tutos dans les computer arts en sont l’exemple récurent.

    En tout cas, merci beaucoup pour ce tuto ! En espérant que tu en feras d’autres ;)

  2. Guillaume soumis, le 29 avril 2009 at 22:07

    Merci de nouveau pour ce commentaire Vi.

    Ce tutoriel a m’a pris un certain temps pour le réaliser et le mettre en page (2 à 3 bonnes soirées).
    Donc je posterait surement d’autres dossiers complets (pas forcément exclusivement sur Blender) mais avec une modeste fréquence (je ne fait pas que ce Blog dans la vie :) ).

    De plus, je ne crée un tutoriel que lorsque j’ai explorer dans les moindres détails une méthode. Je ne me vois pas expliquer quelque chose que je ne maitrise pas totalement. C’est aussi pour ça que je prend pas mal de temps.

    A bientôt !

  3. stouckol soumis, le 30 avril 2009 at 13:51

    super tuto, très bien expliqué mon cher guillaume !
    merci, ça va bcp m’aider.

  4. Capitaine Haddock soumis, le 3 mai 2009 at 19:14

    Excellent, merci beaucoup !!!

  5. Quinlan soumis, le 3 mai 2009 at 21:37

    J’ai pas osé demandé un tutoriel, mais j’en avait vraiment envie !

    J’adhère à fond ! :D

    Merci ^^

  6. Typen soumis, le 2 septembre 2009 at 11:27

    Merci beaucoup pour ce tutorial, c’est vraiment bien expliqué, je suis impatient que tu en fasses un nouveau !

  7. Eddy soumis, le 7 septembre 2009 at 11:40

    Bravo et merci , il est vraiment super bien foutu ton tutoriel.

  8. Joël soumis, le 26 octobre 2009 at 15:17

    Excellent tuto très bien expliqué étape par étape !
    BRAVO !!!
    Ce serait cool de le trouver en pdf afin de le télécharger !
    MERCI Mille fois.
    Et bons blends !

  9. Yiyou soumis, le 5 janvier 2010 at 16:05

    Bravo, c’est la prmière fois que je suis un tuto Blender ET que je comprends ce que je suis en train de faire.
    Merki Monsieur !

  10. Guillaume soumis, le 6 janvier 2010 at 21:23

    Merci pour tout vos commentaires bien encourageants !

    Je suis en train de préparer un tutoriel sur le site du zéro qui va traîter le l’animation dans Blender 2.50. Ce tutoriel n’est pas encore en ligne, il permettra notamment la découverte de Blender, mais du point de vue de l’animation. On y verra des exercices de bases et d’autres plus poussés comme l’automatisation de tâche via Python, l’animation dynamique…

    Ne le cherchez pas, il n’est pas encore en ligne car il nécessite masse de travail (je fait une heure chaque soir dessus).

    @Yiyou : C’est ma philosophie quand je fait un tuto : je pense que les gens sont assez intelligent… et donc j’explique toujours ce qu’il faut faire pour parvenir au résultat, mais aussi et surtout POURQUOI on fait les choses comme ça. C’est beaucoup plus constructifs pour ceux qui lisent car ils pourront adapter à d’autres projets.


Laisser un commentaire