No dibujes lo que no aporta#
Una escena 3D grande tiene mucho más de lo que la cámara ve o necesita en detalle. Dibujarlo todo, siempre, a máxima calidad, es tirar rendimiento. Dos ideas lo arreglan: bajar el detalle de lo lejano (LOD) y no dibujar lo oculto o fuera de cámara (culling).
Culling: descartar lo que no se ve#
Culling es descartar objetos antes de dibujarlos. Hay dos tipos:
- Frustum culling (automático): Unity ya no dibuja lo que queda fuera del cono de visión de la cámara. Gratis, siempre activo. Por eso el far plane de la cámara importa: cuanto más cerca lo pongas, menos dibujas (combínalo con niebla).
- Occlusion Culling (hay que prepararlo): descarta lo que está dentro de la cámara pero tapado por algo (una sala detrás de una pared). Esto Unity no lo hace solo; hay que hornearlo.
Occlusion Culling paso a paso#
- Marca como Occluder Static las cosas que tapan (paredes, edificios) y como Occludee Static lo que puede quedar tapado, en el desplegable Static del Inspector.
- Abre Window → Rendering → Occlusion Culling y pulsa Bake.
- Unity calcula qué se ve desde cada zona. En juego, lo tapado no se dibuja.
El Occlusion Culling da mucho en escenas con muchas paredes que tapan (edificios, mazmorras, ciudades): te ahorras dibujar habitaciones enteras que no ves. En un descampado abierto, donde casi todo se ve, aporta poco. Mídelo con el Profiler antes y después.
LOD: menos detalle a distancia#
Un modelo con 50.000 triángulos a 200 metros ocupa 4 píxeles: no tiene sentido su detalle. Un LOD Group cambia automáticamente a versiones más simples según lo lejos que esté de la cámara:
- LOD 0: el modelo detallado (cerca).
- LOD 1, 2...: versiones con menos polígonos (a media/larga distancia).
- Culled: tan lejos que ni se dibuja.
Añades un componente LOD Group, le asignas las versiones del modelo y ajustas a qué porcentaje de pantalla cambia cada una. Los artistas exportan estas versiones (o se autogeneran).
Para bosques y mundos abiertos, más allá de los LOD por objeto, existen técnicas como los impostors (billboards que sustituyen a un árbol lejano) y sistemas de HLOD (agrupar zonas lejanas). El Terrain ya aplica LOD a árboles y hierba automáticamente.
Cómo se combinan#
Culling y LOD son complementarios: el culling decide si dibujas algo; el LOD, con cuánto detalle. Juntos, con un far plane ajustado y niebla, mantienen los FPS en escenas grandes.
No pongas LOD y Occlusion "por si acaso": tienen coste de preparación y memoria. Usa el Profiler y el Frame Debugger para ver qué se está dibujando de más, y ataca eso. Optimizar a ciegas gasta tiempo sin resultados.
Errores frecuentes#
- Esperar que Unity descarte lo tapado sin hornear el Occlusion Culling.
- No marcar los objetos como Static (Occluder/Occludee) → el bake no sirve.
- Far plane de la cámara enorme dibujando kilómetros que la niebla ya tapa.
- Modelos lejanos a full detalle sin LOD (polycount disparado).
- Optimizar sin medir con el Profiler (esfuerzo en el sitio equivocado).
Ponte a prueba#
Resumen#
Para que una escena 3D grande rinda: no dibujes de más. El culling descarta objetos — el frustum culling (fuera de cámara) es automático, el Occlusion Culling (tapado por otros) hay que hornearlo con objetos marcados Static y brilla en interiores/ciudades. Los LOD bajan el detalle de lo lejano con un LOD Group. Combínalos con un far plane ajustado y niebla, y mide siempre con el Profiler antes de optimizar. Junto a reducir draw calls, son la base del rendimiento 3D.