Ir al contenido

GraphBlender

Las propiedades Color y Transparency de un Beam son propiedades espaciales. No son gráficas en el tiempo — son degradados a lo largo de la longitud del beam, desde el attachment 0 hasta el attachment 1. Establece Color como un ColorSequence de rojo a azul y el beam pinta rojo en un extremo, azul en el otro, con un degradado en el medio. El degradado permanece igual durante toda la vida del beam.

Eso es un problema si quieres que los colores cambien a medida que el beam envejece. Solo hay un ColorSequence en la instancia Beam. No hay lugar para colocar un “segundo degradado de color” para un momento posterior.

GraphBlender resuelve eso. Cada estado es una instantánea del degradado en un momento del tiempo. El estado A dice “este es el degradado en la edad 0”. El estado B dice “este es el degradado en la edad 0.5”. El motor mezcla entre estados consecutivos a medida que el beam envejece, produciendo un degradado nuevo en cada fotograma. El Color y Transparency espaciales del Beam se reescriben al instante.

Tú creas los degradados por tiempo. El motor se encarga de la transición entre ellos.

Abre el panel de propiedades de un Beam transformado. Desplázate hasta la sección Blender cerca de la parte inferior. Hay un botón + Add State. Haz clic en él.

Aparece un nuevo estado en el panel. Cada estado obtiene su propia fila con tres elementos:

  • Time — un número del 0 al 1 que indica cuándo este estado está activo.
  • Color — una gráfica de color para este estado.
  • Transparency — una gráfica numérica para este estado.

Haz clic en Color y se abre el editor estándar de secuencia de colores; elige paradas y colores. Lo mismo para Transparency con el editor gráfico estándar.

Haz clic en + Add State de nuevo para añadir otra fase. La mayoría de los autores terminan con dos o tres estados. Se admiten muchos estados, pero rara vez son necesarios.

El Time de cada estado es una posición en la vida del beam:

  • Time = 0 — el momento en que nace el beam.
  • Time = 0.5 — exactamente a la mitad de su vida.
  • Time = 1 — el momento en que muere.

Un Beam de dos estados con el estado A en Time = 0 y el estado B en Time = 1 mezcla suavemente desde el aspecto de A hasta el aspecto de B durante toda la vida útil. A mitad del camino, el color renderizado es “a mitad de camino entre el color de A y el color de B” — igual para la transparencia.

Un Beam de tres estados con el estado A en Time = 0, el estado B en Time = 0.4 y el estado C en Time = 1 realiza dos mezclas consecutivas: A → B durante el primer 40% de la vida, luego B → C durante el 60% restante. La transición entre A→B y B→C ocurre exactamente en la edad 0.4.

Puedes colocar estados en cualquier momento. Time = 0, 0.3, 0.7, 1 está bien. Los tiempos no tienen que estar espaciados uniformemente. Tienen que ser ordenables — dos estados con el mismo Time es un comportamiento indefinido (el motor aún funciona, pero el resultado depende de cuál fue creado primero).

Cada estado contiene un degradado completo a lo largo del beam (un ColorSequence y un NumberSequence) más un Time que indica cuándo ese degradado está activo.

Configura un beam de rayo de tres estados:

  • Estado A (Time = 0): el degradado es un núcleo blanco brillante que se desvanece hacia una punta luminosa. Ambos extremos totalmente opacos.
  • Estado B (Time = 0.5): el degradado es azul pálido a lo largo de toda la longitud. Principalmente opaco.
  • Estado C (Time = 1): el degradado es azul oscuro en la base que se desvanece hasta nada en la punta. Totalmente transparente.

Si congelases el beam en la edad 0, verías el degradado de A pintado a lo largo de su longitud. En la edad 0.5, el degradado de B. En la edad 1, el de C.

En el intermedio, el degradado en sí mismo es la mezcla de dos estados. En la edad 0.25 (a mitad de camino entre A y B), cada punto a lo largo del beam muestra un color que está a mitad de camino entre el color de A en ese punto y el color de B en ese punto. Todo el degradado transforma desde la forma de A hasta la forma de B durante la primera mitad de la vida, luego transforma desde la de B hasta la de C durante la segunda mitad.

La transparencia se mezcla de la misma manera. El NumberSequence de cada estado también es un degradado a lo largo del beam. El motor mezcla por posición, exactamente como Color.

Esa es toda la funcionalidad: cada estado es un degradado espacial en un momento. El motor transforma suavemente de un degradado instantáneo al siguiente a medida que el beam envejece.

Tres estados. Tiempos 0, 0.25, 1. El Color de cada estado es un ColorSequence pintado a lo largo del beam.

  • Estado A (Time = 0): el degradado es blanco sólido en toda la longitud. Totalmente opaco.
  • Estado B (Time = 0.25): el degradado es azul pálido en toda la longitud. Totalmente opaco.
  • Estado C (Time = 1): el degradado se desvanece desde azul oscuro en la base hasta nada en la punta. Totalmente transparente.

Resultado durante la vida del beam:

  • Edades 0 a 0.25 — el degradado transforma desde blanco brillante en todas partes hasta azul pálido en todas partes. Destello rápido y dramático. El primer cuarto de la vida útil.
  • Edades 0.25 a 1 — el degradado transforma desde azul pálido en todas partes hasta desvanecerse en la nada. Apagado lento y atmosférico. Los tres cuartos restantes.

El mismo beam, dos etapas visuales. El Color y Transparency espaciales del Beam se reescriben en cada fotograma mientras el motor produce el degradado intermedio.

Puedes dejar de leer aquí si “el motor mezcla suavemente entre estados” es suficiente. El resto de este capítulo describe lo que el motor produce visualmente en cada fotograma, por si tienes curiosidad.

Cuando un beam está en la edad t entre dos estados, el motor produce un degradado que está en algún punto entre los degradados de los dos estados — más cercano a cualquier estado que esté más próximo en el tiempo. En el momento exacto en que el Time de un estado coincide con la edad del beam, el degradado de ese estado se renderiza sin modificaciones. Entre dos estados adyacentes, el degradado renderizado es una mezcla suave.

La misma idea para la transparencia: cada estado contiene su propio degradado de transparencia, y el motor produce una versión intermedia en cada fotograma.

Los beams multiestado están bien optimizados pero no son gratuitos. El motor reutiliza los tiempos fusionados precalculados entre mezclas, pero cada fotograma aún produce un NumberSequence y un ColorSequence nuevos por cada beam GraphBlender activo. Con cantidades ordinarias el coste es aceptable; con cantidades muy altas el trabajo de secuencia por fotograma se manifiesta como presión en el GC. Si un único Color y Transparency estáticos cubren tu efecto, prefiere eso — consulta Rendimiento para la guía transversal.

Algunos detalles que coinciden con lo que la experiencia te diría de todas formas, pero más fácil leerlos una vez que descubrirlos por accidente.

  • Caso de un solo estado. ¿Solo un estado en la carpeta? No ocurre ninguna interpolación. El motor lee ese único estado directamente. Mismo efecto que un Beam normal con Color y Transparency configurados.
  • Carpeta vacía. Transform siempre inicializa un estado, así que una carpeta vacía solo aparece si los estados fueron eliminados manualmente o la carpeta fue editada a mano. Con cero estados el Beam recurre a su Color/Transparency nativo (lo que hayas configurado en el Beam de origen en la ventana de Properties de Studio). GraphBlender no sobreescribe nada.
  • Tiempos fuera del rango 0–1. Si el Time de algún estado es mayor que 1, el motor normaliza toda la lista al emitir (divide el Time de cada estado por el máximo) para que la línea de tiempo siga abarcando 0–1. Útil cuando has creado estados como Time = 1, 2, 3 y quieres que aterricen en 0.33, 0.66, 1.0 automáticamente. Para una creación predecible, mantén los tiempos directamente en [0, 1].
  • Dos estados en el mismo Time. No lo hagas. El resultado depende de cuál fue creado primero, lo cual es difícil de razonar.

Profundidades Ocultas cubrió cuatro patrones avanzados: anidamiento, edición nativa, fijación de texturas y GraphBlender. La siguiente sección — The Toolbench — cubre las herramientas de edición masiva que operan sobre una selección de Studio: Resize, Retime, Hue, Clipboard, Shifter, más cuatro utilidades (Scan, Insert, Emit Code, Optimization Indicator).