lundi 27 octobre 2008

Tutoriel Blender sur le GLSL et les ombres en temps réel

Comme je le disais dans l'article précédent, beaucoup de nouveautés on été implantées dans la nouvelle version de Blender (la 2.48). Je vais tenter de vous en expliquer quelques unes rapidement dans cet article...

Matériaux GLSL en temps réel

Désormais, vous pouvez voir dans la fenêtre 3D ou lors d'un jeu, les matériaux tels qu'ils sont au rendu. Bien sûr, tout n'est pas pris en charge, mais toute les fonctionnalité suivantes sont compatibles :

  • Tout types de shaders 'diffuse' et tout type de 'specular'
  • Les 'ramps' de type 'col' et 'spec'
  • Les nodes, à quelques exceptions près
  • Les textures images
  • Toute les lampes sauf 'area'
Malheureusement, tout ceci nécessite une carte graphique assez récente qui supporte les shaders GLSL. sans ça, vous ne pourrez pas vous en servir.

Avant de commencer, voici une petite démonstration de ce que peuvent faire les GLSL et les autres nouveautés de Game Blender avec cette vidéo où l'on peut voir une salle de bain en temps réel, réalisée par un blenderien : martinsupitis.



Mise en place


Alors, comment on s'en sert ? Et bien dans un premier temps on va faire un scène de base, disons Suzanne lissée par un 'subsurf' de 'level' 1 voir 2 (appuyez sur 'apply' pour que le modificateur soit pris en compte lors d'un jeu). N'oubliez pas le 'set smooth' !


Maintenant, activons cette fonctionnalité, en allant dans 'Game' et en cliquant sur 'Blender GLSL materials'.


Si vous avez un message d'erreur c'est probablement que votre carte graphique ne les supporte pas.

Mettez vous en mode 'textured'


Utilisation

Matériel

Zoomez et tournez autour de votre 'suzanne'. Normalement vous voyez quelques taches de lumière se déplacer, c'est le 'speculaire', réglé par les paramètres 'spec' et 'hard'.

Diffuse:
Commencez par changer la couleur du matériel, mettez le en bleu par exemple. Sans surprise, on peut voir que suzanne a changé de couleur.


Specular:
Maintenant, changez la couleur de 'spe' (en dessous du paramètre pour changer la couleur du materiel), en rouge par exemple :

Sans surprise aussi. Remettez la en blanc.

Allons voir du coté des paramètres du spéculaire :

Changez la valeur de 'spec', vous pouvez voir l'intensité de la tache de couleur augmenter ou diminuer.

Avec 'spec' élevé

Modifiez 'hard' : augmentez le et la tache de lumière prend des contours plus 'abrupts' ce qui donne l'impression que suzanne est mouillée où recouverte d'une matière lisse. Baissez le et la tache de lumière sera plus étalée. Si vous voulez, changez de point de vue, modifiez l'emplacement de votre lampe, vous pouvez aussi en créer d'autres aussi pour voir ce que ça donne.

Avec 'hard' élevé

Avec 'hard' faible

Changez de type de 'spec' mettez 'WardIso' par exemple et changez un peu les paramètres... Vous pouvez arriver à ces trucs assez sympa :

Vous pouvez aussi changer le type de diffusion :


Mettez 'Fresnel', celui ci peut donner des résultats assez sympa, et touchez aux paramètres de celui ci...

Avec Fresnel'

Avec 'toon'

Hé bien c'est déjà pas mal hein ? N'oubliez pas que ce que vous voyez dans la fenêtre 3D est pareil à ce que vous pourrez voir si vous lancer le jeu (touche 'p').

Ramps:
Attaquons maintenant les 'ramps' qui vont donner des résultats surprenants.
Allez dans l'onglet 'ramps' et cliquez sur 'Show Col Ramp' puis 'Colorband'. Là pas de secret : faites vos tests ! Déplacez les battons, changez les couleurs, les modes... Cela donne des trucs assez sympa. Bougez la lampe, faites tourner l'objet et vous verrez que tout cela change en temps réel. Recliquez sur 'Colorband' pour désactiver. Quelques résultats ci dessous :


Cliquez sur 'Show Spec Ramp' puis 'Colorband'. Comme tout à l'heure, touchez à tout, vous verrez que tout celà change l'aspect du spéculaire, et ce de manière plus précise que les paramètres 'spec' et 'hard' par exemple.

Textures images

On attaque les textures images, créez une texture de type 'image' et chargez une texture image, comme par exemple celle ci :

Elle sera appliquée à votre modèle. Vous pouvez ajuster avec les paramêtres 'size x, y ou z'
Attention ! Seul le mode de projection 'Flat' fonctionne en temps réel, si il ne vous convient pas, vous être obligé d'UVmapper.
Les modes 'col', 'csp', 'spec' marchent pleinement, les autres en général ne tiennent pas compte de l'image. 'nor' fonctionne dans le cas d'une 'normal map' (voir plus bas).

Normal Maps:

Les 'normal maps' sont des images spéciales qui permettent d'appliquer une impression de relief à un objet, en temps réel. C'est un peu le même principe que le 'bump mapping' sauf qu'ici on ne résonne plus avec la profondeur mais avec la direction des face... Concrètement une normal map ça ressemble à ça :

Cette image montre bien l'usage que l'on en fait :

Il aurait été impensable de modéliser tout les cheveux pour du temps réel... Avec la normal map on a un super résultat sans rajouter forcément des faces...

On ne va pas rentrer dans le détail de la création de 'normal maps', je vais directement vous donner les deux images :

Cliquez sur les images pour agrandir puis enregistrez



Appliquons les tout de suite ! Commencez par appliquer l'image normale, celle qui va juste 'colorer', en ajoutant une texture de type 'image' et en chargeant la première image.
Pour le relief, créez une deuxième texture de type 'image' (toujours) et chargez la 'normal map'.
Cliquez sur 'normal map' pour indiquer que l'image est une 'normal map'.
Retour dans les paramètres du matériel, désactivez 'col' de la texture puis activez 'nor'. Réglez 'nor' sur 4.34 pour que l'effet soit plus marqué.


Et ça donne ça :

Sympa non ? Pour comparer : sans normal mapping :

Essayez aussi de retirer la texture 'normale' pour voir concrètement l'effet du normal mapping.

Les ombres en temps réel

Ici ça va être plus court. Pour faire des ombres dynamiques en temps réel, il faut une lampe 'spot' avec 'buf shadow' d'activé :

Une fois correctement inclinée vous devriez voir les ombres :

J'ai aussi ajouté un 'hemi' pour que ça soit plus beau... Vous pouvez également toucher aux différents paramètres tels que 'SpotSi' et 'SpotBl'.

Attention ! Il ne faut pas en abuser de trop, n'utilisez cette technique que pour les objets mobiles, pour les objets statiques, contentez vous d'un 'bake' . C'est aussi simple que ça !

Voilà, j'espère que ces quelques explications vous auront été utiles :) ... N'hésitez pas à me laisser vos impressions dans les commentaires !

2 commentaires:

nIlBaN a dit…

Très intéressant !! je vais voir ce que je peux en faire, merci pour cette recherche ;)

Vianney

Anonyme a dit…

Merci bien, ce fut tres instructif.