Qué es y cómo aplicar Occlusion Culling en Unity (Eliminación selectiva)

Introducción — ¿Qué es Occlusion Culling en Unity?

El motor Uni­ty tiene un sis­tema lla­ma­do "Occlu­sion Culling" que per­mite ocul­tar automáti­ca­mente obje­tos que la cámara no está vien­do de man­era direc­ta, un nom­bre en español para este sis­tema es "elim­i­nación selectiva".

En este artícu­lo vamos a ver cómo preparar un proyec­to en Uni­ty para que se aplique Occlu­sion Culling, algunos detalles sobre su fun­cionamien­to y parámet­ros de configuración.

Detalle Importante — En Occlusion Culling se hacen precálculos (BAKE)

Occlu­sion Culling fun­ciona con los obje­tos que están mar­ca­dos como "estáti­cos" en la esce­na y es nece­sario pre­cal­cu­lar todos los datos, lo que se cono­cer como hac­er un "bake", esto impli­ca que cada vez que intro­duz­cas un nue­vo obje­to que deba ser apa­ga­do si la cámara no lo está vien­do, o si cam­bias la posi­ción de uno de estos obje­tos, deberás pre­cal­cu­lar nue­va­mente los datos para Occlu­sion Culling, si no lo haces algunos obje­tos que están detrás de cámara o detrás de algún obje­to podrían no desa­pare­cer o inclu­so peor, podrías ten­er obje­tos que desa­pare­cen frente a la cámara cuan­do deberían per­manecer visibles.

Dónde se encuentra la ventana de configuración de Occlusion Culling en Unity

La vetana de con­fig­u­ración de Occlu­sion Culling se encuen­tra en Win­dow > Ren­der­ing > Occlu­sion Culling, en mi caso sue­lo colo­car­la jun­to al inspec­tor para más como­di­dad, como se obser­va en la ima­gen 2.

Ima­gen 1: Cómo abrir la ven­tana Occlu­sion Culling en Unity.
Ima­gen 2: Ven­tana Occlu­sion Culling jun­to al inspec­tor en Unity.

Cómo agregar objetos al sistema de Occlusion Culling

Para que un obje­to pertenez­ca a los cál­cu­los de Occlu­sion Culling y por ende desa­parez­ca cuan­do la cámara no lo está vien­do, hay que mar­car cada obje­to que el parámetro "Estáti­co" en el inspec­tor, como se obser­va en la ima­gen 3. En gen­er­al los obje­tos impor­tantes para mar­car como estáti­cos son aque­l­los que tienen asig­na­do algún tipo de Ren­der­er, como un Mesh Ren­der­er o un Sprite Ren­der­er, ya que estos obje­tos son los que tienen una rep­re­sentación visu­al en pantalla.

Ima­gen 3: Propiedad "Sta­t­ic" de todo GameOb­ject que per­mite incluir­lo en el sis­tema de Occlu­sion Culling.

IMPORTANTE: Los obje­tos que for­men parte del sis­tema Occlu­sion Culling no deben cam­biar de posi­ción en ningún momen­to y de hac­er­lo es nece­sario volver a cal­cu­lar los datos como ver­e­mos más adelante.

VÍDEOS DEL CANAL CON MÁS BÚSQUEDAS

DE UNITY

DE BLENDER

Cómo aplicar Occlusion Culling en Unity

Una vez que el paso pre­vio de mar­car todos los obje­tos estáti­cos vamos a hac­er un "Bake" de la infor­ma­ción para aplicar Occlu­sion Culling, para esto vamos a la ven­tana "Occlu­sion" que se obser­va en la ima­gen 4, en caso de no ver la ven­tana con­sul­tar más arri­ba en este artículo.

En prin­ci­pio en esta ven­tana vamos a con­fig­u­rar dos parámet­ros, "Small­est Occlud­er" y "Small­est Hole", el primer parámetro hace ref­er­en­cia al obje­to más pequeño de la esce­na (en unidades de la esce­na) que podrá obstru­ir la cámara y hac­er que todo lo que está por detrás no se ren­derice, cuan­to más pequeño sea este parámetro más tiem­po tomarán los cál­cu­los por lo que habrá que hac­er algu­nas prue­bas para deter­mi­nar un val­or apropi­a­do, en prin­ci­pio se pueden con­sid­er­ar los val­ores de la ima­gen 4. 

PARA APLICAR LOS CÁLCULOS DE OCCLUSION CULLING EN UNITY HACEMOS CLIC EN EL BOTÓN BAKE A LA DERECHA DEL BOTÓN CLEAR.

Ima­gen 4: Ven­tana Occlu­sion para aplicar Occlu­sion Culling en Unity.

El parámetro "Small­est Hole" se usa en caso de ten­er espa­cios abier­tos en un mod­e­lo 3D, con­sid­er­e­mos el ejem­p­lo que se ilus­tra en la ima­gen 5‑A, en el cual se ha apli­ca­do Occlu­sion Culling con los parámet­ros de la ima­gen 4.

Ima­gen 5‑A: Esce­na mon­ta­da para ilus­trar Occlu­sion Culling.
Ima­gen 5‑B: Per­spec­ti­va de la cámara de la imá­gen 5‑A.

Como vemos en la ima­gen 5‑B la cámara puede ver a través del agu­jero, sin embar­go el cubo que está selec­ciona­do en la ima­gen 5‑A no es vis­i­ble, esto se debe a que el sis­tema de Occlu­sion Culling está con­sideran­do que ese cubo debería estar ocul­to, ya que el agu­jero más pequeño está con­fig­u­ra­do en un tamaño de 0.5 unidades de Uni­ty (ima­gen 4), mien­tras que el agu­jero de la ima­gen 5‑B tiene un ancho de 0.1 por 0.1 unidades de Unity. 

Mod­i­f­i­can­do un poco los parámet­ros tenien­do en cuen­ta estos mod­e­los en par­tic­u­lar y el hecho de que deberíamos ser capaces de ver obje­tos a través de ese agu­jero, hace­mos un nue­vo Bake con los parámet­ros de la ima­gen 6 y como se obser­va en la ima­gen 7 aho­ra el sis­tema de Occlu­sion Culling no ocul­ta ese obje­to porque la cámara podría ver­lo a través de ese agujero.

Ima­gen 6: Nuevos parámet­ros para cor­re­gir el prob­le­ma de obje­tos no vis­i­bles a través de agujeros.
Ima­gen 7: Con estos nuevos parámet­ros la cámara puede ver el cubo a través del agujero.

Scroll al inicio
Secured By miniOrange