Gallery
Techniques / Scripts
 
 
 
BACK TO MAIN MENU
 
 
Depth-Buffer avec antialiasing


- Tour d'horizon / Les outils standard de Lightwave

- Les différentes solutions


 
 
 

Les solutions:
Faites le rendu de votre animation (en une série d'images) et laissez de coté le Depth pour l'instant. Ensuite faites une copie de votre fichier scène et une copie de tous les objets(.lwo). Vous pouvez utilisez le "Content Manager" pour aller plus vite (Generics > Content Manager)
Ouvrez votre nouvelle scène.
Le rendu que nous allons faire concerne uniquement le Depth. Nous pouvons donc très facilement optimiser la scène.
Désactivez toutes les options de Raytracing. Supprimez toutes les lights (même l'Ambiant), le motion blur etc...
Supprimez aussi toutes les textures et appliquez une seule surface à tout vos objets (sans bump, transparence, specular etc...)

1er Méthode:
Activez le Depth Buffer Export. Doublez la résolution de votre caméra, laissez l'antialiasing sur Off et lancez le rendu.
Une fois calculé, il vous faudra réduire la résolution par 2, ce qui aura pour effet d'atténuer le crénelage de l'image.
Même si la qualité est meilleure, ça n'est toujours pas l'idéal. De plus la résolution ralenti considérablement le calcul.


2em Méthode:
- Créez un Null_Object et nommez le "Far". Placez le juste derrière l'objet le plus éloigné de la caméra. Dans le cas d'un animation vérifiez bien sur toutes les frames quel est l'objet le plus loin.
Une fois placé, appliquez lui un "Range Finder" (Object Properties > Geometry > Range Finder) et définissez votre Caméra comme "Item".
"Range Finder" calcule la distance entre les deux objets et l'affiche aussi dans le viewport.

- Appliquez une couleur blanc pure a votre unique surface, et dans l'onglet Shader choisissez "Z-Sader"
Dans les options entrer la distance renvoyée par le RangeFinder dans la case "Distance Max" (dans mon cas 107m) et laissez le Min à 0.

 

 

Désactivez "Specularity" et activez "Luminosity" avec Min=0% Max=100%

Au plus l'objet sera proche de la distance maximale au plus il sera blanc. N'ayant aucune Light dans la scène le reste sera noir.
Passez l'Antialiasing sur "Low" et faites un rendu.

En comparant le résultat avec un vrai Depth Buffer, on remarque rapidement que l'antialiasing est parfait pour des temps de calcul record !
Toutes fois l'image est nettement plus claire et, même si nous pourrions nous en servir en retouchant luminosité/contraste, elle risque de ne pas refléter la profondeur de champ réelle de la scène.


3em Méthode:
- Supprimez votre Zshader.
- Dans "luminosity" de votre surface appliquez un Gradiant en mode "Distance to Camera" et en entrant votre distance dans "End"

 

Faites un rendu avec antialiasing et comparez:

 
  Le résultat est incomparable avec le Depth Buffer Standard de Lightwave pour des temps de calcul ridiculement bas puisque seuls les polygones sont calculés.
     
 

CONCLUSION:
Bien souvent le Depth Buffer standard suffit. Cependant dans certaines scènes (comme celle que j'ai utilisée)la différence est flagrante en animation.
On peut avoir recours à un très léger blur sur le Depth Buffer standard mais cela ne convient pas dans tous les cas.
Il n'y a pas de règles miracles... à vous de juger lorsque cette méthode est utile.

J'ai fait quelques exemples de compositing avec les deux Depth Buffer (le standard et celui issu du gradiant) afin que vous puissiez juger du résultat.
Mais je le rappelle... le résultat est surtout visible en animation.