Vídeo explicativo de artigo (estilo painel)
Use isto quando o usuário pedir um vídeo explicativo, animação ou "vídeo como o FAS" para um artigo, uma seção (modelo do sistema, um teorema, uma figura de resultado) ou um conceito para ensino.
Como é a saída
Um quadro 16:9 (1920x1080, 30 fps, fundo branco, colorido):
- Topo: uma pequena linha de crédito cinza, um título em negrito e um resumo roxo de uma linha sobre a configuração.
- Esquerda (cerca de 40% de largura): uma cena física animada (ondas, antenas, nós, usuários, circuitos). Move-se a cada quadro, com marcadores que mostram as decisões ou resultados.
- Direita: um grid 2x2 de painéis ao vivo. Curvas estáticas são desenhadas uma vez; uma linha pontilhada vertical e pontos movem-se ao longo delas. Um painel pode ser totalmente redesenhado a cada quadro (por exemplo, um gráfico de barras de uma realização).
- Fundo: uma caixa de legenda amarela arredondada. Ela muda de 4 a 6 vezes enquanto o parâmetro varrido cruza limiares, depois mostra um resumo com os números-chave durante uma pausa final.
- Uma inserção opcional na cena (por exemplo, uma seta no plano complexo) para a quantidade-chave.
Procedimento
- Leia a seção do artigo. Escolha UM parâmetro varrido que conte a história (horizonte, SNR, velocidade, inclinação, número de blocos, etc.). Escreva a mensagem de uma frase que o vídeo deve mostrar.
- Reimplemente o modelo em numpy/scipy, usando as próprias equações e valores de parâmetros do artigo. Verifique os números-chave (formas fechadas vs. integração numérica, valores da tabela, limites) antes de desenhar qualquer coisa. Informe o usuário se algo não coincidir.
- Pré-calcule as partes caras: curvas Monte Carlo em uma grade fina (cerca de 21 pontos, cerca de 20k sorteios), e armazene em cache.
- Para painéis de realização, use UM sorteio aleatório fixo que varie suavemente com o parâmetro (por exemplo, uma soma finita de ondas planas com caminhos fixos e ruído sorteado uma vez). Varie as sementes e escolha uma que conte a história claramente; diga isso nas notas de narração.
- Linha do tempo: pausa inicial (cerca de 2 s), uma varredura suave (0.5 - 0.5 cos(pi x)) e uma pausa final (cerca de 3 s). Padrão 17 s; para narração, faça cerca de 60 s (por exemplo, 8 / 42 / 10 s).
- Escreva o script com argparse:
--out,--preview(escreve 3 quadros PNG),--dpi. Coloque os parâmetros no topo (CREDIT, valores do modelo, SEED, temporizações). Renderize com matplotlib FFMpegWriter (libx264, yuv420p, bitrate 6000), usando um loop grab_frame. - SEMPRE renderize as prévias primeiro e olhe para elas. Corrija sobreposições, depois renderize o vídeo completo. Depois, extraia 4 quadros com ffmpeg e verifique-os.
- Entregue o .mp4, o .py e uma narração .md (tempo | legenda | o que dizer em inglês simples | guia dos painéis | configurações | edições fáceis). Numere as versões v1, v2, ...
Lições de layout (evite esses bugs)
- Para os eixos da cena, use
set_aspect('equal', adjustable='datalim')e centre o xlim no conteúdo, senão a cena encolhe e é cortada. - Coloque rótulos longos da cena onde nada se move; verifique que os eixos da inserção não cobrem os rótulos.
- Legendas: coloque-as em regiões vazias (geralmente
lower rightpara curvas do tipo outage). Usencol=2para painéis de barras e deixe espaço no ylim para marcadores. - Mantenha o topo do gridspec em cerca de 0.86, para que o subtítulo não bata nos títulos dos painéis, e o fundo em cerca de 0.155, para que uma legenda de duas linhas não bata nos rótulos do eixo x.
- Texto de fórmula vai dentro dos eixos em uma área vazia, não sobre uma curva.
- Redesenho completo (cla) é apenas para a cena e um painel de realização; os outros usam set_data. Cerca de 4 minutos para 510 quadros em 1080p é normal.
Constantes de estilo
Azul #1c7ed6, laranja #e8590c, verde #2f9e44, vermelho #e03131, verde-azulado #0c8599, roxo #7048e8, cinza #868e96, tinta #212529, dourado #f59f00. Títulos em negrito a 11.5 pt, fonte base 10 pt, bordas superior/direita removidas.
Idioma
Legendas e narração usam inglês simples (B2 ou inferior), com frases curtas e etapas de legenda numeradas ("1 ·", "2 ·", ...).