Trabajando con Reflexiones Avanzadas en UDK

En este tutorial aprenderemos cómo configurar un material de Reflexión Dinámico (en tiempo real) y Estático en Unreal Development Kit, y crearemos un Interruptor de Parámetros para cambiar de Reflexiones Dinámicas a Estáticas, o viceversa en UDK. Para el tutorial usaré la versión de febrero de 2011 de UDK.


Descarga imágenes de alta resolución para este tutorial..



Reflejo en UDK

En UDK, las reflexiones no son más que entornos que se capturan y proyectan de manera inversa en la superficie de los objetos, y se capturan mediante el uso de actores de captura de pantalla en UDK. Debe colocar este actor para capturar la escena o el entorno de su mapa y almacenarlo en un formato de textura especial llamado Render to Target, esta textura debe estar en el navegador de contenido. Podría ser una textura en tiempo real o estática que se puede usar en un material y configurarlo en consecuencia para obtener reflejos en ciertas mallas como metal o vidrio.

Para comprender mejor y para que funcione correctamente el Actor de Reflexión, necesitamos tener una Escena o un Mapa completamente desarrollados, para que capture los objetos del entorno circundante. Cargue UDK y abra el mapa "VCTF-Necropolis.udk" (o cualquier mapa de su elección), pero asegúrese de que su mapa esté cargado con muchas texturas de objetos e iluminación, debe estar en la carpeta UT3 en el directorio instalado de UDK, es decir UDKGame \ Content \ Maps \ UT3. Así que solo prepara tu mapa.


Ir Ver-> Ventanas del navegador y luego Clases de actores. Simplemente fusionemos esta ventana Clases de actores con la ventana del navegador de contenido, de modo que podamos ir a la ventana Clases de actores directamente desde la ventana del navegador de contenido. Para hacerlo, simplemente haga clic en el menú Acoplar junto a la opción de menú Archivo y haga clic en Acoplado. Una vez que haga clic en la opción acoplada, la ventana debería desaparecer y ahora podemos cargarla directamente desde el navegador de contenido..


En la ventana Clases de actores, vaya a Uncategorized-> SceneCaptureCubeMapActor Seleccione y arrástrelo y suéltelo en su escena, como en la siguiente imagen. Solo asegúrate de colocar a este actor justo en el centro de muchos objetos con buena iluminación, para que obtengas un buen reflejo. O bien, es posible que veas algunos parches oscuros en este actor, o una Esfera simple de color negro. Este actor no se puede ver en el juego cuando jugamos este mapa.

Después de arrastrar y colocar el actor anterior en tu escena, obtendrás un objeto de esfera de color negro u oscuro en tu escena. Es para capturar el medio ambiente y se reflejará como un espejo. Pero ahora el color es negro, porque este actor almacena toda la reflexión en un mapa de textura especial llamado Scene Render to Target, que es dinámico y aún no está asignado. Vamos a crear esa textura dinámica entonces.


Vaya al navegador de contenido y cree un nuevo paquete llamado "Advanced_Reflection" (o el nombre que desee). Haga clic con el botón derecho en el navegador de contenido y cree un nuevo TextureRenderTargetCube. La diferencia entre Target 2d y Target Cube es que Cube capturará todos los ejes del entorno y los almacenará en formato Cubemap. Donde el objetivo 2d es capturar solo un lado de la cara, lo que es bueno para una malla de superficie plana de un solo lado, como una malla de suelo o suelo.

Después de hacer clic en el nuevo TextureRenderTargetCube desde las opciones de clic derecho, aparecerá una ventana como en la imagen para establecer la resolución de la textura. Asegúrate de establecer la resolución lo más baja que puedas o, de lo contrario, podría agotar mucha memoria si la estás utilizando para una escena en tiempo real. Pero por el momento la estableceremos en 1024 para capturar la alta resolución Reflexión estática de textura y luego la revertiremos a 256 más tarde. No olvides nombrar esta textura como "RT_reflection". Presione OK y guarde el paquete. Después de presionar OK, verá una textura verde en el navegador de contenido, que es su textura dinámica que llamamos RT_reflection en el navegador de contenido.

Ahora que tenemos nuestra textura dinámica lista, apliquémosla al actor de mapa de cubos de captura de escena en la escena.


Seleccione esa textura dinámica recién creada llamada RT_reflection en el Navegador de contenido, y ahora vuelva a su escena y seleccione el actor de SceneCaptureCubeCubeMap (la esfera negra) y presione F4 para abrir sus Propiedades. Simplemente contrae el actor de captura de escena-> Captura de escena-> Propiedades de captura y asigne el objetivo de textura haciendo clic en la flecha verde que está justo al lado. Obtendrá la mitad de la reflexión y la mitad de negro en la Esfera, para renderizar todo lo que necesita para establecer el rango que está configurando el valor de FarPlane en 999999 (o tan alto como puedas) como en la imagen de arriba. También marque / Marque Habilitar niebla y Habilitar proceso posterior si tiene alguno en su escena, o Marque / Marque el valor de Usar configuración de proceso de postajes principal. He habilitado todos los valores resaltados en la imagen de arriba..

Ahora, si abre su Navegador de contenido, verá que la Textura verde en el navegador de contenido ahora muestra algo de información de Textura y que la información de Textura es el reflejo dinámico de su escena. Con esta textura puede simplemente configurar un material, así como crear una nueva Textura estática. Configuremos un material pero necesitamos tener una malla estática para aplicar este material a.


Para este tutorial he creado dos mallas de geometría simple que son una esfera y un cilindro, como se muestra arriba. Usaré el cilindro para reflexiones dinámicas en tiempo real y la esfera para reflexiones estáticas. Así que vamos a crear una textura de reflexión estática ahora.


Haga clic derecho en esa textura dinámica en el Navegador de contenido y luego haga clic en Crear nueva textura estática. Aparecerá una ventana emergente para nombrar la nueva textura estática que creará. Solo tiene que nombrarlo como desee, pero para este tutorial lo llamaré "ST_reflection" y como se muestra arriba en el campo Agrupación. Simplemente escriba "Texturas", por lo que colocará la nueva textura en una subcategoría denominada Texturas de paquete de reflexión avanzada. Después de presionar OK, tomará algún tiempo crear la textura Static Cubemap en el navegador de contenido, esperar un poco y luego guardar el paquete..


Después de crear la textura estática del mapa de cubos llamada ST_reflection, también debería tener algunas otras texturas con el mismo nombre, simplemente no las elimine porque es una textura de soporte que tiene los 6 lados de la información de reflexión. Esto es, desde menos X a X positivo, por ejemplo (con el sufijo de Neg y Pos) compilados en su textura ST_reflection. Ahora que tenemos texturas dinámicas y estáticas que son RT_reflection y ST_reflection, es hora de crear su material.


Haga clic derecho en el Navegador de contenido y cree un nuevo material llamado "Reflexión" (o cualquier nombre que desee).


Haga doble clic en el material recién creado que es el material de Reflexión. Configurar el material de Reflexión en la ventana del editor de materiales es fácil, pero aquí estaré configurando dos tipos de reflexión. Eso es Reflexión Dinámica y Estática, como puede ver la configuración en la imagen de arriba. Esto es útil cuando desea reflexiones estáticas en paredes específicas, techos o, a veces, en el suelo cuando crea un material de instancia o un elemento secundario de este material, que lo haremos más adelante. Así que configuremos el material de Reflexión para Estático y Dinámico..

El siguiente método es solo la configuración del parámetro Reflexión dinámica y estática con un interruptor para habilitar o deshabilitar el tipo de reflexión que deseamos en la instancia de material. Puede usarlo con su configuración de material actual o mezclarlo con su Diffuse Metal, Glass o cualquier material que desee..

Configuración dinámica del material: En la imagen anterior, la configuración dinámica tiene tres conexiones y va por ReflectionVector> Transforms> RT_reflection. Primero configuremos la reflexión dinámica, importemos la textura dinámica (RT_reflection) en la ventana del editor de materiales y busquemos las expresiones Transform y ReflectionVector. Y luego conecte el nodo de Reflexión vectorial en el nodo de Transformación vectorial, luego, finalmente, conecte el nodo de transformación Vector en los UVs del nodo Muestra de textura, que es la textura RT_reflection. Seleccione todos los nodos y comente Dyanmic_reflection (haga clic con el botón derecho y Nuevo comentario) luego haga una copia de toda esta configuración de reflexión dinámica.

Configuración de material estático: La configuración del material estático es casi la misma, excepto por el Nodo de muestra de textura, que es la textura RT_Reflection. Reemplácelo con la textura ST_reflection de la configuración de Dynamic_reflection copiada. Cambie el comentario de Dynamic_reflection a Static_reflection, al igual que la configuración en la imagen de arriba.


Ahora necesitamos un interruptor para cambiar de dinámico a estático o viceversa. Para hacer eso, simplemente busque el parámetro del interruptor Estático en la ventana Expresión del material y arrástrelo a su pantalla, o simplemente haga clic con el botón derecho en el editor de material y luego seleccione FunciónUtilidad-> Nuevo interruptor estático. Conecte el ST_reflection a False, y RT_reflection a True para este interruptor. Ahora puede enchufar este Interruptor en el canal Difuso o Emisivo, o incluso puede combinarlo con su configuración de material actual utilizando el nodo de expresión Lerp (interpolación lineal).

Parámetro de interruptor estático: Este interruptor tiene dos entradas, VERDADERO y FALSO. Aunque se explica por sí mismo, pero solo se procesará como FALSO como un valor predeterminado y se ignorará el valor de entrada verdadero. Entonces, para cambiar eso, haga clic en el parámetro Interruptor estático y luego en la ventana de propiedades a continuación, marque o habilite el Valor predeterminado, como en la imagen de arriba y asígnele un nombre de parámetro como Estático / Dinámico. Ahora guarda y cierra la ventana del editor de material.


Simplemente vaya al Explorador de contenido y haga clic con el botón derecho en este material de reflexión recién creado y haga clic en Crear nueva instancia de material (constante). Después de eso aparecerá una ventana para nombrar la nueva instancia de material. Simplemente asígnele el nombre "Static_reflection" y siga de nuevo el proceso anterior, pero esta vez con el nombre "Dynamic_reflection" para la segunda instancia de material.


Ahora tiene dos instancias del material en el navegador de contenido, haga doble clic en ambas instancias de material.
Como en la imagen anterior, en el lado izquierdo es el material estático y en la derecha es el material dinámico. En Grupos de parámetros hay una casilla de verificación Estático / Dinámico, solo asegúrese de que la casilla de verificación de la izquierda esté marcada para el Material estático. Y la casilla de verificación derecha está marcada para el Material dinámico como se muestra en la imagen de arriba. Este parámetro estático / dinámico se crea solo por el cambio que creamos en la ventana del editor de materiales anterior. Una vez que haya terminado con la configuración, es hora de asignar estos materiales a nuestras mallas estáticas. Entonces, solo cierra esas ventanas de editor de material.


Vaya al Navegador de contenido y busque una malla de Cylinder and Sphere que creé para este tutorial. Aplique el material dinámico al cilindro y el material estático a la malla de la esfera, como se muestra en la imagen de arriba. ¡Eso es! Ya casi has terminado, solo coloca estas dos mallas en tu mapa ahora.


Coloque la malla del cilindro justo encima del actor de Reflexión en tiempo real y coloque la malla de la Esfera en cualquier lugar que desee, o puede colocarla al lado del cilindro, una al lado de la otra. Ahora prueba el juego dentro de tu Editor.


Como se puede ver en la imagen de arriba. Si miras el cilindro, verás un poco de reflejo distorsionado de tu personaje, eso es debido a la curvatura del cilindro. Cuanto más suave sea la malla, mejor será el reflejo, pero no habrá cambios en el reflejo de la Esfera. Lo que aún parece real, por lo que es una buena manera de simular una reflexión como esta y también optimizarla. Las reflexiones dinámicas en tiempo real se utilizan muy raramente y utilizan una gran cantidad de GPU y CPU para renderizar cada fotograma. Tenga cuidado con el actor de reflexión en tiempo real y su configuración, UDK puede fallar a menudo si realiza cambios constantemente en el actor de reflexión en tiempo real que es el actor de captura de escena. Asegúrese de guardar cada paso, o con cualquier cambio que realice. Pruebe el juego en su ventana gráfica cada vez y realice los cambios necesarios para obtener el efecto deseado.


Conclusión:

El uso de Reflexiones dinámicas en tiempo real en un mapa tan grande con una gran escena exterior o entorno, agotará su memoria e incluso puede fallar mucho. Así que úsalo sabia y eficientemente. La Reflexión dinámica se usa a menudo en un mapa interior, que tiene salas pequeñas con una gran cantidad de espejos que reflejan los interiores (como la puerta del espejo y las ventanas o los metales de Chrome). Es una forma inteligente y mejor de hacerlo..

Gracias por leer y que tenga un gran día!


Hemos publicado algunos tutoriales relacionados que también podrían interesarte:

Artículos Relacionados
  • Consejo rápido: Optimización de texturas en Unreal Development Kit
  • Sugerencia rápida: Introducción al mapeo de luz en UDK
  • Una guía completa para principiantes de UDK
  • Maya a UDK: Importando mallas estáticas usando ActorX y FBX
  • Speedtree a UDK: creando una palmera en Speedtree e importándola en UDK