Estoy usando eliminación selectiva de oclusión en Unity y funciona bien con la rotación de la cámara. Sin embargo, suponga que hay una gran pared frente a la vista de la cámara y detrás de la pared hay muchos objetos. Ahora, debido a que estos objetos están en la dirección de la cámara, no se descartan, aunque no sean visibles en la vista de la cámara. Mi pregunta es, durante tal situación, ¿puede el sacrificio de oclusión funcionar para incluso ocultar el objeto que está bloqueado en la vista de la cámara?
Para una explicación más completa, lea lo siguiente; si quieres ir directo al punto, salta a la conclusión al final.
explicación : Así es como funciona el sacrificio de oclusión de acuerdo con la documentación de la unidad:
La selección de oclusión genera datos sobre tu escena en el editor de Unity y luego usa esos datos en tiempo de ejecución para determinar lo que puede ver una cámara. El proceso de generación de datos se conoce como horneado.
Cuando hornea datos de selección de oclusión, Unity divide la escena en celdas y genera datos que describen la geometría dentro de las celdas y la visibilidad entre celdas adyacentes. Luego, Unity fusiona las celdas donde sea posible, para reducir el tamaño de los datos generados. Para configurar el proceso de cocción, puede cambiar los parámetros en la ventana Eliminación de oclusión y usar áreas de oclusión en su escena.
En el tiempo de ejecución, Unity carga estos datos horneados en la memoria y, para cada cámara que tenga habilitada su propiedad Eliminación de oclusión, realiza consultas en los datos para determinar qué puede ver esa cámara. Tenga en cuenta que cuando la selección de oclusión está habilitada, las cámaras realizan tanto la selección de frustum como la selección de oclusión.
Puede encontrar más información sobre el sacrificio de oclusión aquí . El documento de Unity sobre el sacrificio.
Entonces, básicamente, Unity usa estos datos horneados para determinar si el objeto del juego debe ser eliminado; pero eso es solo para objetos de juego estáticos. Echa un vistazo a cómo Unity también puede seleccionar objetos de juego dinámicos:
Para determinar si un GameObject dinámico actúa como ocluido, puede establecer la propiedad Oclusión dinámica en cualquier tipo de componente Renderer. Cuando la oclusión dinámica está habilitada, Unity descarta el renderizador cuando un oclusor estático lo bloquea de la vista de una cámara. Cuando la oclusión dinámica está deshabilitada, Unity no elimina el renderizador cuando un oclusor estático lo bloquea de la vista de una cámara.
Puede encontrar más información sobre cómo Unity selecciona objetos de juego dinámicos aquí: Uso de selección de oclusión con GameObjects dinámicos
Usando la ventana de eliminación de oclusión, debe hornear los datos requeridos por la unidad para habilitar la ventana de eliminación de oclusión de eliminación de oclusión
Conclusión: Entonces, para eliminar a tus enemigos que están detrás de la pared, la pared, el "Oclusor", debe ser un objeto de juego estático, tus enemigos, los "ocluidos" deben tener Dynamic Occlusion habilitada en su renderizador, la eliminación de Occlusion culling . debe activarse en su cámara y los datos de selección de oclusión deben hornearse para su escena.
Tuve el mismo problema con la unidad 2017,2019 y 2020.
Esto sucede cuando cada eje de la posición mundial del oclusor está en la línea azul y mi configuración de oclusor más pequeña es 2.
Resolví este problema haciendo que el oclusor no esté en la línea azul.