Ir al contenido

Avanzado

Usado por: todos los tipos de emisor excepto Trail. Beam expone únicamente Anim. Steps y Timescale; todos los demás tipos (Part, Attachment, Model, PointLight, Blur, Bloom, ColorCorrection, Atmosphere, ImageLabel) tienen el conjunto completo: Anim. Steps, Linger, Timescale.

No recurrirás a estas propiedades el primer día. Están en la sección Advanced del panel de propiedades por una razón: ajustan con precisión el comportamiento de la simulación, corrigen casos específicos y equilibran resolución frente a coste. La mayoría de los trabajos de autoría funcionan bien con sus valores predeterminados.

Pero cuando los necesitas, saber qué hace cada uno importa. Este capítulo cubre las tres propiedades avanzadas compartidas.

Una nota sobre VelocityVectored: los emisores guardados en versiones anteriores pueden tener un atributo booleano VelocityVectored = true. El plugin lo lee por compatibilidad con versiones anteriores — es equivalente a DirMode = "Local" (tratado en Motion). Los nuevos emisores establecen DirMode directamente; el atributo antiguo persiste solo en datos heredados.

Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
Anim. StepsTotalKeyFramesnumber100Cuántos pasos de muestreo discretos usa el simulador por partícula
LingerPartLifenumber0Segundos que una partícula persiste después de que expire su Lifetime
TimescaleTimescaleNumberSequence1Escalado temporal por fotograma sobre los gráficos de apariencia

Etiqueta en la UI: Anim. Steps. Atributo de datos: TotalKeyFrames.

El número de pasos de simulación discretos que el motor realiza a lo largo de la vida de cada partícula.

Así está la situación. Una partícula vive durante cierta duración — digamos, dos segundos. Durante ese tiempo, el motor tiene que evaluar su gráfico Speed, sus gráficos Size y sus gráficos RotSpeed para avanzar el CFrame de la partícula. Realizar ese trabajo en cada fotograma a una alta tasa de fotogramas resulta costoso cuando hay muchas partículas activas.

El plugin resuelve esto cuantizando la simulación. Divide la vida de cada partícula en TotalKeyFrames pasos discretos — 100 pasos por defecto. En cada fotograma, el motor calcula en qué paso se encuentra actualmente la partícula y solo avanza la simulación cuando el paso cambia realmente. Dentro de un único paso, el visual interpola suavemente entre los dos CFrames extremos, pero las consultas al gráfico subyacente ocurren una vez por paso, no una vez por fotograma.

Un valor mayor de TotalKeyFrames significa una granularidad temporal más fina — más muestras del gráfico a lo largo de la vida, un movimiento más suave que sigue los gráficos con mayor fidelidad. Un valor menor implica pasos más gruesos que cuestan menos, pero muestran un escalonado visible en partículas de larga vida.

100 es el punto óptimo para la mayoría de las partículas. Una partícula de larga vida (5+ segundos) podría beneficiarse de 200 o 300 si puedes ver cambios de paso en el movimiento. Una partícula de vida muy corta (menos de un segundo) puede bajar a 50 sin que nadie lo note — su vida ya es demasiado corta para que la resolución del muestreo importe.

Reducirías TotalKeyFrames solo cuando tengas muchas partículas y necesites cada microsegundo. Lo aumentarías solo cuando puedas ver un escalonado visible en efectos de larga vida.

Etiqueta en la UI: Linger. Atributo de datos: PartLife.

Segundos que una partícula persiste después de que expire su Lifetime, antes de que el motor la destruya.

Espera, ¿no era Lifetime quien decidía cuándo muere la partícula?

Sí. Pero a veces quieres que el visual persista un momento después de que la simulación se haya detenido — la partícula permanece en su lugar, congelada en su último estado, y luego desaparece. Humo que se queda en el aire después de que el viento ha dejado de empujarlo; chispas que permanecen un instante antes de desvanecerse.

PartLife te da esa ventana de persistencia. Con PartLife = 0 (el valor predeterminado), la partícula se destruye inmediatamente cuando termina su Lifetime. Con PartLife = 0.5, permanece medio segundo adicional después — congelada en el estado en que terminaron los gráficos — y luego se destruye.

Esto es puramente una extensión visual. La simulación se ha detenido; nada se actualiza durante la persistencia. Es el equivalente a hacer una pausa en el último fotograma.

Un PartLife pequeño de 0.1 a 0.3 a menudo hace que los efectos se sientan más arraigados — las partículas no desaparecen en el instante en que termina su movimiento; tienen un momento de quietud antes.

PartLife está restringido a valores no negativos. El Randomizer respeta esto — aleatorizar Linger producirá un valor entre 0 y el límite superior configurado, nunca uno negativo.

Etiqueta en la UI: Timescale. Atributo de datos: Timescale.

Un gráfico NumberSequence que escala la tasa de reproducción de cada partícula a lo largo de su vida. El valor constante 1 es reproducción normal. 0.5 reproduce los gráficos de apariencia (Color, Transparency, Size, RotSpeed y todos los demás gráficos por vida) a media velocidad. 0 congela la animación en el fotograma en el que esté cada partícula. Los valores negativos rebobinan la reproducción.

El gráfico se muestrea por partícula, por fotograma, en tiempo real — así que cambiar la curva de Timescale a mitad de emisión surte efecto inmediato sobre cada partícula viva, sin esperar a la siguiente emisión. La mayoría de los trabajos de autoría dejan esto en el valor constante 1; recurre a él cuando quieras un grupo de partículas a cámara lenta dentro de una ráfaga más rápida, cuando un grupo deba pausarse y reanudarse en pleno vuelo, o cuando quieras un barrido “invertido” que vuelva a recorrer su propio movimiento.

Las partículas solo desaparecen cuando se cumplen ambas condiciones: el gráfico ha terminado de reproducirse y el tiempo efectivo está en un límite de la vida (efectivo ≥ Lifetime para reproducción hacia adelante, o efectivo ≤ 0 para reproducción inversa). La compuerta de dos condiciones implica:

  • Timescale = 0 congela una partícula indefinidamente — sin auto-despawn. La partícula permanece congelada en su estado actual hasta que cambies Timescale fuera de 0 y la dejes correr hasta un límite.
  • Timescale negativo rebobina sin matar prematuramente la partícula. Mientras el gráfico la mantenga dentro de [0, Lifetime], sigue viva. Si toca el límite 0 yendo hacia atrás, desaparece; cambia Timescale de nuevo a positivo antes de eso y sobrevive.
  • Para la reproducción positiva del día a día (Timescale > 0), la compuerta se comporta como en cualquier otro sistema de partículas: la partícula alcanza Lifetime, la partícula muere.
  • Beam también expone Timescale. El gráfico Timescale de un Beam escala el muestreo de los gráficos de apariencia (Width, CurveSize, ciclado de estados de GraphBlender) en cada clon Beam emitido.
  • TrailEmitter tiene un hueco Timescale en su sección Avanzado también — misma semántica que los demás tipos transformados.
  • Se permiten valores negativos. El Randomizer no restringe Timescale a no-negativo como hace con Linger.
  • La sobrescritura por script SetTimescale (tratada en Métodos por tipo) gana frente al gráfico durante su ventana activa — útil para cinemáticas a cámara lenta donde quieres que toda partícula viva quede pausada o ralentizada durante un compás.

Las propiedades de ajuste fino avanzadas están ahora cubiertas. El cuarto y último capítulo compartido es Mesh Flipbooks — animación de textura fotograma a fotograma, usada por los tipos Part y Beam.

¿Buscas “Rotation” (rangos de rotación inicial)? La rotación inicial vive en la sección Motion del panel, junto a Rotation Mode y Rotation Speed — no en Advanced. Consulta Motion → Rotation (initial).