Fr Microdisplacement - LuxRender Wiki
Luxrender GPL Physically Based Renderer

Fr Microdisplacement

Personal tools

From LuxRender Wiki

Jump to: navigation, search

Contents

Micro-déplacement

Une des nouvelles fonctionnalités de LuxRender r0,8 est le "micro-déplacement". Il subdivise le maillage, à la volée, pendant le rendu, au lieu de le pré-calculer pour l'ensemble en mémoire-tampon. Comme les résultats ne sont pas stockés, cela allège considérablement la mémoire en temps de rendu CPU.

Réglages

  • nsubdivlevels: Ce paramètre contrôle le nombre de subdivisions qui auront lieu au cours du micro-déplacement. Plus le nombre de niveaux de subdivision est grand, plus il sera lent. Notez qu'il ne fonctionne pas comme la "boucle de subdivision", donc on a besoin de beaucoup plus de niveaux de micro-déplacement pour obtenir le même niveau de subdivision en comparaison. Si vous utilisez X boucles de niveaux de subdivision , vous aurez besoin de N = sqrt(4^X) de niveaux de micro-déplacement pour obtenir le même résultat qu'avec une boucle.
  • dmscale: Ce paramètre contrôle la hauteur de déplacement pour chaque triangle, et quand les déplacements augmentent, la boîtes englobantes augmente également. Plus le réglage augmente, plus le déplacement se produira. L'inconvénient à cela est que la zone de délimitation croît avec la quantité de déplacement, plus de triangles pourraient être affectés pour permettre l'augmentation du déplacement. Une grande déficience de vitesse est perceptible en raison de l'augmentation du nombre de triangles qui pourraient être inclus dans le déplacement.
  • dmoffset: Ce paramètre agit comme un modifieur "contracter/envelopper".

Utiliser le Micro-déplacement

Maintenant vient la partie la plus délicate en utilisant le micro-déplacement. La chose la plus importante à retenir, c'est que tout est relatif.
Mais ne vous inquiétez pas, il y a quelques règles simples pour vous aider.

Si vous réduisez la taille de votre maillage, vous devez réduire le micro-déplacement.
Par exemple, si vous créez une sphère de 1 mètre de diamètre et que vous lui appliquez une texture non modifiée en utilisant un dmscale = 0,01 m c.a.d. un déplacement de 1 centimètre, la performance ne devrait pas être trop affectée.
Maintenant, si vous diminuez l'échelle du maillage de 10% c.a.d. à une taille de 10 cm, alors vous devrez diminuer l'échelle de votre texture de 10% et diminuer l'échelle de dmscale de 10%. Donc dmscale passera de 0,01 à 0,001 pour obtenir le même effet.

Lors de l'utilisation du "micro-déplacement", le déplacement est contrôlé par la formule suivante:

  • Déplacement = (Echelle x Valeur) + Décalage (ou "valeur" est la texture brute).

Donc, si vous voulez inverser la tendance, il suffit d'utiliser

  • "Echelle" = -1 (ou n'importe quelle valeur négative appropriée), et régler "Décalage" en conséquence:
    • "Décalage" = 0 pour que la partie blanche sculptée dans la surface, ou...
  • "-Echelle" pour avoir la partie blanche que la ligne de base, ou...
  • "-Echelle / 2" pour avoir un gris moyen comme base de référence.

Dans LuxBlend (c.a.d. l'exporteur pour Blender 2.5+), le micro-déplacement se trouve maintenant dans l'intercalaire "Mesh" de l'objet (car c'est une option du maillage), et non dans celui des matériaux comme autrefois.

Exemples

Dans le premier exemple suivant, on ne double que le dmscale.
Le maillage de base est d'environ 500 triangles avec 3 niveaux de subdivision "Catmull-Clark", appliquées avant le micro-déplacement. L'amélioration du temps de rendu en doublant la quantité de dmscale était presque inversement linéaire, environ 40% à 50%. En plus, la quantité de niveaux de subdivision joue un rôle dans le temps de rendu. Si nous avions subdiviser entièrement le maillage de 10 niveaux, il posséderait 6 297 600 triangles.

Avec seulement 2 niveaux de subdivision réalisé avant le micro-déplacement, le nombre tombe à 15 744 triangles de base. Pour obtenir le même effet, cela exigerait alors 20 niveaux de subdivision.

62 976 triangles de base,
nsubdivlevels=10,
dmscale=0.0005,
environ 100-110 kC/s
62 976 triangles de base,
nsubdivlevels=10,
dmscale=0.001,
environ 50-60 kC/s


Microdisplacement Example.jpg

Voici un exemple de ce qui peut être réalisé avec un micro-déplacement. Les chiffres sur le cadran de la radio ont été créés en utilisant le "micro-déplacement". Le cadran lui-même a 2 niveaux de subdivision dans Blender et un micro-déplacement avec nsubdivlevels = 50, dmscale = 0,0003.
Image de Moure.