Encapsular como componente y "congelar" usando delayRender()
y useCurrentFrame()
Paso 1: Exporta RadialChart
como componente configurable
Ya lo tienes como:
export const RadialChart: React.FC = () => { ... }
Modifícalo así:
export const RadialChart: React.FC<{ freezeAt?: number }> = ({ freezeAt }) => {
const rawFrame = useCurrentFrame();
const frame = freezeAt !== undefined ? Math.min(rawFrame, freezeAt) : rawFrame;
const { fps } = useVideoConfig();
...
// usa `frame` en lugar de `useCurrentFrame()` directamente
};
Así podrás “congelarla” después de cierto frame.
🧩 Paso 2: Usarla en una composición padre
import { AbsoluteFill, Sequence } from 'remotion';
import { RadialChart } from './RadialChart';
export const FullScene: React.FC = () => {
return (
<AbsoluteFill>
{/* Animación de entrada de la gráfica */}
<Sequence from={0} durationInFrames={40}>
<RadialChart />
</Sequence>
{/* Mantener congelada después */}
<Sequence from={40} durationInFrames={Infinity}>
<RadialChart freezeAt={40} />
</Sequence>
{/* Aquí puedes decidir cuándo eliminarla, por ejemplo en frame 150 */}
{/* <Sequence from={150}> */}
{/* Aquí ya no la muestras */}
{/* </Sequence> */}
</AbsoluteFill>
);
};
freezeAt={40}
asegura que los valores y frames se detienen, y no se recalculan animaciones.
✅ Resultado
- La animación de las barras se reproduce normalmente hasta el frame 40.
- A partir del frame 41 en adelante, todo se ve igual (congelado).
- Puedes removerla, reemplazarla o transicionar a otra escena cuando quieras.