Faire une pass de Z optimisé ?

Bonsoir,

Petit tutorial pour vous montrer comment faire une pass de Zdeph lorsqu’une caméra est animé.

Le but étant d’avoir toujours les bonne valeur de profondeur.

1) Ce qu’il vous faut :

- Maya (version 7 minimum)

- Le shader p_Z qui se trouve dans le pack shaders_p de Puppet, ici : http://www.puppet.tfdv.com/

- Vous avez dans ce tutorial 2 scène d’exemple, la scène de départ et de fin pour vous entraîner.

2) La pratique :

Après avoir installé les shaders MegaTK, vous devriez avoir comme matériau « p_Z » dans les shaders MentalRay dans l’hypershade.

J’ai créé une petite scène d’exemple que vous pouvez télécharger ici (a partir de Maya 8 ) : cliquez ici

Sur cette scène, la camera fait un mouvement de rotation tout en zoomant sur les sphères.

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_01

Allez dans « Create », « Measure Tool », « Distance Tool ».

Vous allez créer une distance entre l’objet le plus éloigné de la caméra et la caméra. De même entre l’objet le plus près et la caméra.

Pour cela, appuyer sur V (pour snaper) puis cliquer sur la sphère la plus loin de la caméra (tout en laissant V appuyé).

Ensuite, toujours en laissant V appuyé, cliquez sur la caméra.

Faites les même manips pour la sphère la plus près.

Vous devriez avoir ceci :

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_03

Maintenant, sélectionnez le locator qui est sur votre caméra et mettez le en enfant de votre caméra.

On doit faire cela pour que la valeur du distance tool soit toujours bonne, même quand la caméra bouge :

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_04

Maintenant, vous pouvez voir que même si vous bougez la caméra, il y aura toujours les bonnes valeurs entre les objets et la caméra.

Allez dans l’hypershade et créez le matériau « p_Z », puis appliquez le sur tout le objets.

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_02

On va maintenant récupérer les valeurs de distances des measures tool.

Pour cela sélectionnez l’un des measure tool, allez dans l’attribut éditor (ctrl+A), et relevez le nom qui est ici : distanceDimensionShape1.distance

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_05

Allez maintenant dans l’attribut éditor de votre matériau p_Z.

« Near Clip Plane » étant à la valeur la plus proche, « Far clip Plane » étant la valeur la plus loin à mettre. Ce shader fait une dégradé de blanc vers noir entre c’est 2 valeurs.

Moi je veux inversé le dégrader et dire que plus c’est près, plus c’est blanc. Plus c’est loin, plus c’est noir.

Du coup, il vous faut cocher « Invert Result » dans « Output » du shader.

Pour que les valeurs (« Near Clip Plane » et « Far Clip Plane ») soit « dynamique » d’après le mouvement de la caméra, on va créer une expression et récupérer les valeurs des measures tools =) !

Comme ça ces valeurs se mettront à jour automatiquement, quelques soit le mouvement de la caméra =).

Faites un clique droit sur « Near Clip Plane » et cliquez sur « Create expression ».

Dans l’expression éditor, mettez comme expression : p_z1.near = distanceDimensionShape2.distance – 5

Pourquoi mettre – 5 ?

Car il nous faut quand même une petite marge et ne pas avoir toujours l’objet le plus près « cramé » en blanc.

J’ai mis 5 mais cela varie cela la taille de votre scène, à vous de voir.

Faites de même pour le « Far Clip Plane » : p_z1.far = distanceDimensionShape1.distance + 5

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_06

Vous devriez avoir ceci dans le shader :

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_07

Voilà !

Vous pouvez voir que quand vous faite un rendu, sur cette scène, même si la caméra bouge, votre pass de Z est toujours parfaite.

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_08

powered by WordPress Multibox Plugin v1.3.5

tuto_Z_09

Voici la scène de fin : cliquez ici

J’espère que vous avez compris le principe.

Toute fois, il est aussi possible de faire la même chose avec une caméra qui bouge, ainsi qu’une objet.

Il suffit juste de mettre les autres locators en enfant sur l’objet.

Le but étant de comprendre ma logique de fonctionnement, le workflow.

Bon courage à vous !

Comments

Jordan

Great and so useful! Merci beaucoup :)

Post you comment here





Contact Information

BATAILLE Damien

Phone : + 33 6 84 17 36 78

Mail: deex@deex.info

URL: http://deex.info/

Deex

Le blog de Damien BATAILLE