After Effects script para reproducir a 2 frames por cuadro

Sparky - 26/03/2009 16:06
Hola gente. ¿Qué tal? Tengo una pregunta para ustedes que no sé si la respuesta estaría en este hilo o en otro mensaje del foro. Pero yo pruebo.

Veamos, tengo una partícula que se mueve de forma ideal mediante esbozo de movimiento o motion capture.

El caso está en que el movimiento que deseamos obtener del objeto es ideal, pero, demasiado real, puesto que se reproduce a 25 fotogramas por segundo y a unos (es decir, que la imagen está en cuadro una vez por cada fotograma). Lo ideal, lo que deseamos es conseguir que se reproduzca a 25 fotogramas por segundo (como es lógico), pero, a doses, (es decir que una imagen se mantenga en pantalla durante dos 2 fotogramas).

Intento que sea mediante programación, por aligerar la cantidad de renders y de capas que se acumulan de forma infinita en el After. Y mis conocimientos de programación en After, no llegan para cosas tan complicadas para que llegue yo solo a una programación así.
¿Alguna sugerencia? ¿alguna idea?
LaUrA-28 - 04/01/2026 03:40
Existe una solución directa con expresiones en After Effects que no requiere scripting complejo. Puedes usar la expresión posterizeTime() para reducir la frecuencia de cuadros de la capa. En la propiedad de posición (o cualquier propiedad animada) de tu capa de partícula, añade esta expresión: posterizeTime(12.5). Esto forzará a la animación a actualizarse solo 12.5 veces por segundo, haciendo que cada posición se mantenga durante 2 cuadros en una composición a 25 fps.

Si necesitas que el efecto aplique a toda la capa y no solo a una propiedad, puedes precomponer la capa con la animación y aplicar un efecto de tiempo. Ve al menú Efectos - Tiempo - Congelar fotograma de posterización. En los controles de efecto, ajusta el parámetro Frecuencia de fotogramas a 12.5. Esto logrará exactamente lo que buscas: la animación original se reproducirá a 25 fps, pero cada estado de movimiento durará 2 cuadros.

Para un control más avanzado y evitar posibles problemas con interpolación, considera usar la expresión Math.floor() en el tiempo. Una expresión robusta para la propiedad de posición sería: valueAtTime(Math.floor(time [i] 12.5) / 12.5). Esta expresión toma el tiempo, lo multiplica por la nueva frecuencia (12.5), redondea hacia abajo para obtener el índice del cuadro congelado, y luego lo divide de nuevo para obtener el tiempo exacto al que debe ir a buscar el valor. Así garantizas que la animación se muestre en intervalos de 2 cuadros sin suavizado no deseado.

Puedes aplicar esta última expresión a cualquier propiedad animada, o crear un control deslizante en la capa para controlar la frecuencia de forma centralizada. Añade un control deslizante de efectos (Efecto - Controles de expresión - Control deslizante) y nómbralo "FPS". Luego, en la expresión de posición, escribe: valueAtTime(Math.floor(time [/i] effect("FPS")("Deslizador")) / effect("FPS")("Deslizador")). Finalmente, establece el valor del deslizador a 12.5. Esto te permitirá ajustar la velocidad de cuadro congelado fácilmente.