En este video corto, les mostraré cómo creé un efecto de Desenfoque Dinámico en Unity, enfocando solo los objetos en el centro de la vista de la cámara mientras se desenfocan los demás.



Transcripción del video

¡Hola a todos! En este video corto, les mostraré cómo creé un efecto de Desenfoque Dinámico en Unity, enfocando solo los objetos en el centro de la vista de la cámara mientras se desenfocan los demás.

 

En este momento, estoy mostrando el efecto final exagerando el desenfoque, pero este efecto es personalizable, y pronto les mostraré cómo hacerlo.

El video y el script fueron creados usando Unity 2022 y el Universal Rendering Pipeline.

Para usar correctamente el script, necesitas agregar un componente Volume a la Main Camera, de esta manera podrás acceder al subcomponente Depth of Field.

Debes cambiar el modo del componente de Desenfoque a Bokeh, ya que este modo te permite especificar la distancia del punto de enfoque y otros efectos, haciendo que el efecto final sea más realista.

Vamos a habilitar específicamente los parámetros Focus Distance y Aperture.

Para el parámetro Focus Distance, podemos usar el valor predeterminado, ya que modificaremos este valor durante el juego a través de un script en C#.

Con respecto al parámetro Aperture, vale la pena señalar que cuanto más bajo sea este valor, mayor será el efecto de enfoque selectivo, ya que la profundidad de campo será más reducida.

Para mostrarte el ejemplo inicial, donde el efecto fue intencionalmente exagerado, configuré el valor en 2.4, pero, por supuesto, necesitarás establecer un valor apropiado para tu proyecto después de hacer algunas pruebas.

Antes de mostrarte el código para implementar el script, describiré brevemente cómo funciona.

El script proyectará un rayo invisible llamado Raycast desde la cámara hacia el centro del cuadro en la escena virtual.

Cuando el rayo impacta un objeto con un componente Collider, calculará la distancia de ese objeto desde la cámara y escribirá este valor en el campo Focus Distance del subcomponente Depth of Field.

La operación es muy sencilla, pero es importante tener en cuenta que, para que los objetos sean detectados, deben tener un componente Collider, que también puede estar configurado en modo Trigger si deseas evitar que estos objetos obstruyan el movimiento del personaje.

Ahora veamos el script muy sencillo en C# que llamé Dynamic Defocus.

Para ejecutar el script correctamente, necesitas importar los módulos Rendering y Rendering Universal.

Las variables privadas que definí solo se usan para acceder al componente Volume y a su subcomponente Depth of Field, de modo que podamos modificar sus parámetros.

Específicamente, las variables Volume y Depth of Field se inicializan en la función Start del script.

Dentro de la función Update, que se ejecuta automáticamente en cada fotograma, se proyecta el rayo Raycast.

El objeto con el que colisiona se escribe en la variable hit, pero podría no existir, por ejemplo, si el usuario está enfocando el fondo o una parte de la escena donde no hay objetos con componentes Collider.

Por esta razón, antes de asignar el valor Distance de la variable hit al parámetro Focus Distance del componente Depth of Field, es necesario verificar que el Collider de hit no sea nulo.

El nombre del objeto interceptado por el rayo se puede recuperar accediendo al componente Collider de la variable hit y luego, desde ese componente, a su Game Object y finalmente a su nombre.

Después de guardar el script, haz algunas pruebas en tu proyecto y ajusta el valor del parámetro Aperture hasta que logres el resultado deseado.

¡Espero que este video corto te haya sido útil! ¡Nos vemos pronto!

Buscar en los Tutoriales

Ingresa una frase o varias palabras clave separadas por comas para buscar.

Este es un sitio web personal y no constituye un canal de venta. Las páginas dedicadas a los modelos 3D documentan una selección de mis trabajos y no contienen ofertas, precios, modalidades de compra ni enlaces comerciales. Actualmente no acepto solicitudes de trabajos personalizados, consultorías ni otras colaboraciones profesionales.


POLÍTICA EXTENDIDA DE PRIVACIDAD Y UTILIZACIÓN DE COOKIES