Cómo ocluir las luces en Unity3D?

En primer lugar, poseo Unity Pro.

He estado buscando luces oclusivas cuando hace time que no se las ve para mejorar el performance. Los principales methods con los que corría eran usar ConvertibleVisible () y probar la camera frustum.

Mi problema principal era que si el jugador está viendo un área que estaría iluminada por la luz, igual quiero que la luz esté encendida.

Actualmente estoy usando un método que comtesting si el área iluminada está en la camera triturada, pero el problema es que algunas veces las luces están en el tronco sin ser realmente visibles por el jugador (por ejemplo, una panetworking entre ellas y el jugador). He intentado emitir rayos con ellos, pero nunca se puede get lo suficientemente detallado para el área real iluminada (lo mejor que pude imaginar fue usar renderer.bounds.extent y renderer.bounds.center para calcular los puntos máximos de iluminación de la luz).

¿Alguien sabe de una manera fácil en Unity Pro para ocluir luces? ¿O podría decirme una buena manera de usar ese método de camera fulcrum del que estaba hablando?

Podrías escribir tu propia secuencia de commands para ocluir las luces. Algo así como adjunto a la camera principal:

List<Light> Lights = new List<Light>(); const float OccludeDist = 100; void Update() { foreach (Light light in Lights) { if ((transform.position - light.transform.position).sqrMagnitude > OccludeDist * OccludeDist)) { light.enabled = false; } else{ light.enabled = true; } } } 

También podría verificar si el punto está dentro de un ángulo en el eje Y de la camera (los otros ejes le darán dolor). Sea un poco generoso con el ángulo, tal vez 2 veces el del techo de la camera, para que las luces no se apaguen cuando están iluminando áreas a la vista de la camera. Si opta por agregar esta optimization adicional (que probablemente no sea necesaria), asegúrese de utilizar la distancia como el ancho de banda porque es mucho less costosa.