Niagara es el sistema VFX de próxima generación de Unreal Engine. Con Niagara, el artista técnico tiene la capacidad de crear funciones adicionales por su cuenta, sin la ayuda de un programador. El sistema es adaptable y flexible. Los principiantes pueden comenzar modificando plantillas o ejemplos de comportamiento, y los usuarios avanzados pueden crear sus propios módulos personalizados.
Componentes principales de Niagara
En el sistema Niagara VFX, hay cuatro componentes principales:
- Sistemas
- Emisores
- ModulOS
- Parametros
Sistemas
Un sistema Niagara es un contenedor para todo lo que necesitará para crear ese efecto. Dentro de ese sistema, puedes tener diferentes bloques de construcción que se acumulan para ayudarte a producir el efecto general.
Puedes modificar algunos comportamientos a nivel del sistema que luego se aplicarán a todo en ese sentido.
El panel Línea de tiempo en el Editor del sistema muestra qué emisores están contenidos en el sistema y se puede utilizar para administrar esos emisores.
Emisores
Los emisores son donde se generan las partículas en un sistema de Niágara. Un emisor controla cómo nacen las partículas, qué les sucede a estas a medida que envejecen y cómo se ven y se comportan.
El emisor está organizado en un grupo. Dentro de esa grupo hay otros dentro de los cuales puedes colocar módulos que realizan tareas individuales. Los grupos son los siguientes.
-
Generación del emisor
Este grupo define lo que sucede cuando se crea por primera vez un emisor en la CPU. Utiliza este grupo para definir configuraciones iniciales y valores predeterminados.
-
Actualización del emisor
Este grupo define los módulos a nivel de emisor que ocurren en cada cuadro en la CPU. Utiliza este grupo para definir como aparecen las partículas en cada fotograma.
-
Generación de partículas
Este grupo se llama una vez por partícula, cuando esa partícula nace primero. Aquí es donde querrás definir los detalles de inicialización de las partículas, como la ubicación donde nacen, de qué color son, su tamaño y más.
-
Actualización de partículas
Este grupo se llama por partícula en cada fotograma. Querrás definir aquí cualquier cosa que necesites cambiar cuadro por cuadro a medida que las partículas envejecen. Por ejemplo, si el color de las partículas cambia con el tiempo. O bien, si las partículas se ven afectadas por fuerzas como la gravedad, el ruido de rizos o la atracción puntual. Incluso puedes querer que las partículas cambien de tamaño con el tiempo.
-
Administrador de eventos
En el grupo Administrador de eventos, puedes crear eventos de Generar en uno o más emisores que definen ciertos datos. Luego puedes crear eventos de Escucha en otros emisores que desencadenan un comportamiento en reacción a ese evento generado.
-
Renderizar
El último grupo es el grupo Renderizar. Aquí es donde defines la visualización de la partícula y configuras uno o más renderizadores para sus partículas. Es posible que desees utilizar un renderizador de malla si deseas definir un modelo 3D como base de tus partículas, sobre el cual podría aplicar un material. O bien, es posible que desees utilizar un renderizador de sprites y definir tus partículas como sprites 2D. Hay muchos renderizadores diferentes para elegir y experimentar.
Módulos
Los módulos son los componentes básicos de los efectos en Niagara. Agrega módulos a grupos para hacer una pila. Los módulos se procesan secuencialmente de arriba a abajo.
Puede pensar en un módulo como un contenedor para hacer algunos cálculos. Pasas algunos datos al módulo, luego dentro del módulo haces algunos cálculos con esos datos y luego vuelves a escribir esos datos al final del módulo.
Los módulos se construyen utilizando Lenguaje de sombreado de alto nivel (HLSL), pero se pueden construir visualmente en un gráfico utilizando nodos. Puedes crear funciones, incluir entradas o escribir en un mapa de valores o parámetros. Incluso puedes escribir código HLSL en línea, utilizando el nodo CustomHLSL en el gráfico.
Puedes hacer doble clic en cualquier módulo de un emisor en Niagara para ver las matemáticas que están sucediendo en su interior. Incluso puede copiar y crear sus propios módulos. Por ejemplo, si haces doble clic en el módulo Añadir Velocidad para echar un vistazo al interior, puedes inspeccionar el flujo de datos.
Haz clic en la imagen para ampliarla.
El script comienza recuperando entradas: la entrada de velocidad y el espacio de coordenadas. Luego obtienes la velocidad actual de las partículas, así como un factor de escala ingresado. Luego, la velocidad de entrada se escala, se transforma en el espacio de coordenadas correcto y se suma a la velocidad actual de las partículas. Una vez que se completa ese trabajo, la nueva velocidad de la partícula se vuelve a escribir para que cualquier módulo que necesite información de velocidad más abajo en el grupo pueda recuperarla.
Todos los módulos están construidos con esa metodología básica, aunque para algunos las matemáticas internas pueden ser más complejas.
Parámetros y tipos de parámetros
Parámetros son una abstracción de datos en una simulación de Niagara. Los tipos de parámetro se asignan a un parámetro para definir los datos que ese parámetro representa. Hay cuatro tipos de parámetros:
- Primitive: Este tipo de parámetro define datos numéricos de precisión variable y anchos de canal.
- Enum: Este tipo de parámetro define un conjunto fijo de valores con nombre y asume uno de los valores con nombre.
- Struct: Este tipo de parámetro define un conjunto combinado de tipos Primitive y Enum.
- Data Interfaces: Este tipo de parámetro define funciones que proporcionan datos de orígenes de datos externos. Pueden ser datos de otras partes de UE4 o datos de una aplicación externa.
Puedes agregar un módulo de parámetros personalizado a un emisor haciendo clic en el icono Signo más (+) y seleccionando Establecer parámetro nuevo o existentente. Esto agrega un módulo Establecer parámetro al grupo. Haz clic en el ícono Signo más (+) en el módulo Establecer parámetro y selecciona Agregar parámetro para establecer un parámetro existente, o Crear nuevo parámetro para establecer un nuevo parámetro.
Plantillas, asistentes y ejemplos de comportamiento
Cuando creas por primera vez un emisor de Niagara o un sistema de Niagara, aparece un cuadro de diálogo que ofrece varias opciones para el tipo de emisor o sistema que deseas crear.
Puede cambiar cualquiera de los parámetros en la plantilla. Puedes agregar, modificar o eliminar cualquiera de los módulos. En una plantilla de sistema, también puedes agregar, modificar o eliminar cualquiera de los emisores. Las plantillas están ahí para impulsar tu creatividad y brindarte algo con lo que puedas trabajar de inmediato.
Asistentes de sistema
Para crear un nuevo sistema Niagara, haz clic con el botón derecho en Explorador de contenido y busca FX > Sistema Niagara.
Haz clic en la imagen para ampliarla.
El asistente del sistema ofrece las siguientes opciones para crear un nuevo sistema:
-
Nuevo sistema de emisores seleccionados: Si seleccionas esta opción y haces clic en Siguiente, aparecerá una lista de emisores disponibles. Esta lista incluye emisores existentes en tu proyecto y emisores de plantilla. Selecciona los emisores que deseas incluir en el nuevo sistema y haz clic en el ícono verde Signo de más (+) para agregarlos. Luego haz clic en Finalizar para crear el sistema. Si eliges un emisor existente, el sistema heredará de esos emisores. Si elige un emisor de plantilla, el sistema no tendrá herencias. Además, el emisor de plantilla es una instancia que puede ser estrictamente local para ese sistema o puedes guardarlo como un recurso de emisor separado.
Haz clic en la imagen para ampliarla.
-
Nuevo sistema a partir de una plantilla o ejemplo de comportamiento: Si seleccionas esta opción y haces clic en Siguiente, puedes elegir entre una lista de plantillas o ejemplos de comportamiento que representan varios sistemas de efectos de uso común. Al igual que con las plantillas de emisores, esta lista puede ser seleccionada por líderes artísticos o directores creativos. Si eres nuevo en UE, esta opción te dará un ejemplo de cómo se construyen los sistemas FX en Niagara. Los ejemplos de comportamiento son ejemplos simples diseñados para presentar un aspecto aislado del sistema Niagara que puedes examinar para ayudar a desmitificar ese comportamiento.
Haz clic en la imagen para ampliarla.
-
Copiar sistema existente: Si seleccionas esta opción y haces clic en Siguiente, aparecerá una lista de los sistemas existentes. Elige uno de ellos para copiar, luego haz clic en Finalizar.
Haz clic en la imagen para ampliarla.
-
Crear sistema vacío: Si seleccionas esta opción, tu sistema no contiene emisores ni plantillas de emisores. Esta opción es útil si deseas crear un sistema que sea totalmente diferente de tus otros sistemas.
Haz clic en la imagen para ampliarla.
Asistente de emisores
Para crear un nuevo emisor, haz clic con el botón derecho en Explorador de contenido y selecciona FX > Emisor Niagara.
Haz clic en la imagen para ampliarla.
El Asistente de emisores ofrece las siguientes opciones para crear un nuevo emisor:
-
Nuevo emisor a partir de una plantilla: Si selecciona esta opción, puedes elegir entre una lista de plantillas que presentan varios tipos de efectos de uso común. En un gran estudio de desarrollo, los líderes artísticos o los directores creativos pueden seleccionar la lista de plantillas, asegurándose de que las mejores prácticas de la empresa se integren en las plantillas. Estas plantillas también ofrecen un excelente punto de partida si eres nuevo en UE.
Haz clic en la imagen para ampliarla.
-
Heredar de un emisor existente: Si seleccionas esta opción, puedes crear un nuevo emisor que herede las propiedades de un emisor existente. Esta opción convierte al nuevo emisor en un elemento secundario del emisor existente que seleccionaste. Si necesitas muchos emisores que tengan ciertas propiedades en común, esta es una buena opción para elegir. Puedes realizar cambios en el emisor principal y todos los emisores secundarios reflejarán esos cambios. Selecciona desde un emisor principal para utilizar esta opción.
Haz clic en la imagen para ampliarla.
-
Copiar emisor existente: Si seleccionas esta opción, puedes crear un emisor nuevo que sea una copia de un emisor que ya creaste. Esto puede ser útil si necesitas crear varios emisores similares. Haz clic en Siguiente después de seleccionar esta opción y aparecerá una lista de emisores disponibles. A continuación, puedes elegir cuál deseas copiar.
Haz clic en la imagen para ampliarla.
Flujo de trabajo de VFX de Niagara
Crear sistemas
Primero crea un Sistema Niagara en el que pueda agregar uno o más emisores. A continuación, puedes configurar las propiedades de cada emisor.
Crear o agregar emisores
En el Editor de Niagara, puedes ajustar tu emisor cambiando las propiedades de los módulos que ya contienes, o agregar nuevos módulos para lograr el efecto deseado. También puedes copiar emisores y agregar varios en un solo sistema Niagara. Para ver un ejemplo de esto, consulta el tutorial de Sparks.
Crear o agregar módulos
En tu emisor, puedes agregar módulos existentes de Niagara haciendo clic en el Más (+) del grupo donde deseas agregar el módulo. Niagara incluye muchos módulos preexistentes y, en la mayoría de los casos, podrás crear tus efectos sin necesidad de diseñar ningún módulo personalizado.
Sin embargo, si deseas crear tus propios módulos, puede ser útil comprender cómo fluyen los datos a través de un módulo.
Flujo de datos a través de un módulo. Haz clic en la imagen para ampliarla.
- Los módulos se acumulan en un espacio de nombres temporal, luego puedes apilar más módulos juntos. Mientras contribuyan al mismo atributo, los módulos se apilarán y acumularán correctamente.
- Al escribir un módulo, hay muchas funciones disponibles para su uso:
- Operadores Boolean
- Expresiones matemáticas
- Expresiones trigonométricas
- Funciones personalizadas
- Nodos que facilitan las funciones repetitivas
- Una vez que creas un módulo, cualquier otra persona puede utilizarlo.
-
Todos los módulos usan HLSL. El flujo de lógica es el siguiente:
Flujo de lógica HLSL. Haz clic en la imagen para ampliarla.
RecuerdA que cada módulo, emisor y sistema que creas utiliza recursos. Para conservar recursos y mejorar el rendimiento, consulta los módulos que ya se incluyen en Niagara para ver si puedes lograr tu objetivo sin crear un nuevo módulo. Entradas dinámicas se pueden utilizar con gran efecto aquí.
Paradigmas de Niágara
Herencia
- Con una jerarquía plana, no puedes ubicar y utilizar de manera efectiva los recursos que ya tienes en tu biblioteca, lo que lleva a las personas a recrear esos recursos. La duplicación de esfuerzos reduce la eficiencia y aumenta los costos.
- La herencia jerárquica aumenta la capacidad de descubrimiento y permite la reutilización eficaz de los recursos existentes.
- Cualquier cosa heredada se puede anular para un emisor secundario en un sistema.
- Los módulos se pueden agregar o se pueden revertir al valor principal.
- Esto también es cierto con los comportamientos a nivel de emisor, como la generación, la vida útil, los bucles, las ráfagas, etc.
Entradas dinámicas
- Las entradas dinámicas se construyen de la misma manera que se construyen los módulos.
- Las entradas dinámicas brindan a los usuarios una extensibilidad infinita para la herencia.
- En lugar de actuar sobre un mapa de parámetros, las entradas dinámicas actúan sobre un tipo de valor.
- Cualquier valor puede ser impulsado por la lógica gráfica y los valores orientados al usuario.
- Las entradas dinámicas tienen casi la misma potencia que la creación de módulos, pero se pueden seleccionar y colocar en el grupo sin crear nuevos módulos.
- Los módulos existentes se pueden modificar y personalizar de muchas maneras usando y encadenando entradas dinámicas; esto puede reducir la sobrecarga del módulo y mejorar el rendimiento.
Microexpresiones
- Cualquier valor en línea se puede convertir en un fragmento de expresión HLSL.
- Los usuarios pueden acceder a cualquier variable en la partícula, el emisor o el sistema, así como a cualquier HLSL o función VM.
- Esto funciona bien para funciones pequeñas y únicas que no necesitan un módulo nuevo.
Eventos
- Los eventos son una forma de comunicación entre elementos (como partículas, emisores y sistemas).
- Los eventos pueden ser cualquier tipo de datos, empaquetados en una carga útil (como una estructura) y enviados. Entonces cualquier otra cosa puede escuchar ese evento y tomar acción.
- Opciones que puedes utilizar:
- Ejecuta el evento directamente en una partícula usando Particle.ID.
- Ejecutar el evento en cada partícula en un Sistema.
- Configura las partículas para que aparezcan en respuesta al evento, luego tome alguna acción sobre esas partículas.
- Los eventos son un nodo especial en el gráfico (estructuras). Cómo utilizar el nodo Evento:
- Nombra el evento.
- Agrega los datos que desees.
- Agrega un administrador de eventos en el grupo de emisores.
- Establece las opciones para el administrador de eventos.
- Hay un grupo de ejecución separado para eventos.
- Puedes poner un gráfico de lógica elaborado en los administradores de eventos.
- Puedes configurar un sistema de partículas completo, con una lógica compleja, y luego tener un conjunto completo de comportamientos separados que ocurren cuando se desencadena el evento.
Interfaces de datos
- Hay un sistema extensible para permitir el acceso a datos arbitrarios.
- Los datos arbitrarios incluyen datos de malla, audio, información DDC externa, objetos de código y contenedores de texto.
- Las interfaces de datos se pueden escribir como complementos para una mayor extensibilidad en el futuro.
- Los usuarios pueden obtener cualquier dato asociado con una malla esquelética mediante la utilización de una interfaz de datos de malla esquelética.
Houdini
- Con Houdini puedes calcular puntos de división, ubicaciones de generación, posiciones de impacto, velocidad de impacto, normales, etc.
- Luego puedes exportar esos datos de Houdini a un formato de contenedor común (CSV).
- Puedes importar ese CSV a Niagara en tu proyecto UE4.