L’Adaptive Subdivision est une technique de subdivision intelligente qui ajuste automatiquement la densité du mesh en fonction de la distance à la caméra. Les zones proches reçoivent plus de polygones, les zones éloignées moins. Idéal pour le Displacement sans exploser la mémoire.
Le principe
Avec une subdivision classique, tout le mesh reçoit le même niveau de détail, même les parties invisibles ou lointaines. C’est du gaspillage de ressources.
L’Adaptive Subdivision résout ce problème :
- Près de la caméra → subdivision élevée, beaucoup de détails
- Loin de la caméra → subdivision basse, peu de polygones
- Hors champ → minimum de géométrie
Le calcul se fait au moment du rendu, pas dans le viewport.
Pourquoi l’utiliser
L’Adaptive Subdivision est essentielle pour :
- Terrains avec displacement (montagnes, sols)
- Océans et surfaces d’eau
- Gros plans sur des surfaces détaillées
- Scènes massives avec beaucoup de géométrie
- Micro-détails visibles uniquement de près
Sans elle, un terrain réaliste avec displacement demanderait des milliards de polygones.
Subdivision classique vs Adaptive
| Classique | Adaptive |
|---|---|
| Même densité partout | Densité variable |
| Défini manuellement (niveaux) | Calculé automatiquement |
| Gourmand en mémoire | Optimisé |
| Viewport + Rendu | Rendu uniquement |
| Tous les moteurs | Principalement Cycles |
Paramètres clés
- Dicing Rate : taille cible des polygones en pixels à l’écran (plus bas = plus de détails)
- Max Subdivisions : limite haute pour éviter les calculs infinis
- Distance : peut aussi se baser sur la distance caméra en mètres
Dans les logiciels 3D
- Blender Cycles : Experimental Feature Set + Subdivision Modifier en Adaptive
- Pixar RenderMan : inventeur du concept (micropolygon rendering)
- Arnold : Adaptive Subdivision intégrée
- V-Ray : Displacement avec subdivision adaptive
- Houdini/Karma : Adaptive subdivision native
Focus Blender
L’Adaptive Subdivision dans Blender nécessite quelques étapes :
1. Activer le Feature Set Experimental
- Va dans Edit → Preferences → Render
- Ou dans Render Properties → Feature Set
- Change de Supported à Experimental
2. Configurer le modifier Subdivision
- Ajoute un Subdivision Surface Modifier
- Change le type de Catmull-Clark à Simple (si displacement pur)
- Coche Adaptive Subdivision
3. Configurer le Dicing
Dans Render Properties → Subdivision :
- Dicing Rate Render : taille en pixels (1px = très détaillé, 4px = standard)
- Dicing Rate Preview : pour le viewport (plus haut pour la fluidité)
- Offscreen Scale : multiplicateur pour les zones hors champ
- Max Subdivisions : limite de sécurité (12 par défaut)
4. Ajouter le Displacement
Dans le shader :
- Ajoute une texture (Image ou Noise)
- Connecte-la à un node Displacement
- Connecte le Displacement au Material Output → Displacement
- Dans Material Settings → Surface, mets Displacement sur « Displacement Only » ou « Displacement and Bump »
Dicing Rate : quelle valeur ?
- 0.5 px : ultra détaillé, très lent, gros plans extrêmes
- 1 px : haute qualité, rendu lent
- 2 px : bon compromis qualité/temps
- 4 px : rapide, détails moyens
- 8 px : preview, peu de détails
Commence à 2-4 px et ajuste selon le résultat.
Exemple : terrain avec displacement
Setup complet pour un terrain réaliste :
1. Plan simple (1 seul quad)
2. Subdivision Modifier → Adaptive coché
3. Texture de heightmap → Displacement Node
4. Material Settings → Displacement Only
5. Dicing Rate → 2 px
6. Max Subdivisions → 12
Résultat : un terrain avec des millions de polygones générés uniquement au rendu, là où c’est nécessaire.
Limitations
Cycles uniquement
- Eevee ne supporte pas l’Adaptive Subdivision
- Pour Eevee, utilise le Bump ou un mesh pré-subdivisé
Viewport
- L’adaptive ne fonctionne qu’au rendu
- En viewport, tu vois une version simplifiée
Motion Blur
- Peut causer des artefacts sur les animations
- Augmente Max Subdivisions si problème
Mémoire
- Même optimisé, les très gros Dicing Rates consomment beaucoup
- Surveille la VRAM avec des textures 8K+
Adaptive vs Multiresolution
| Adaptive Subdivision | Multiresolution |
|---|---|
| Calculé au rendu | Stocké dans le fichier |
| Basé sur la caméra | Uniforme partout |
| Idéal pour displacement | Idéal pour sculpt |
| Pas de viewport preview | Preview temps réel |
Utilise Adaptive pour les terrains/environnements, Multiresolution pour le sculpt de personnages.
Erreurs courantes
Rien ne se passe
- Vérifie que tu es en Experimental Feature Set
- Vérifie que Adaptive Subdivision est coché dans le modifier
Mesh tout noir ou bizarre
- Displacement trop fort : réduis le Scale du node Displacement
- Normales inversées : Shift+N en Edit Mode
Rendu très lent
- Dicing Rate trop bas : monte à 2-4 px
- Max Subdivisions trop haut : limite à 10-12
Cracks/trous dans le mesh
- Assure-toi que les UVs sont corrects
- Vérifie que la texture est bien tileable