Brand loop (fundo líquido contínuo)
scripts/scene.py constrói todo o estúdio no Blender e renderiza:
- Blobs: metaballs em duas famílias que se mesclam apenas entre si. São brilhantes e líquidos, com um tom duplo que acompanha a deformação de cada blob.
- Fundo: uma parede em tom off-white quente com anéis de ondulação se expandindo a partir do centro, dois por loop.
- Iluminação: uma luz principal elíptica com sombras suaves, além de softboxes de reflexão apenas para o brilho do líquido.
- Câmera: lente de 50 mm em f/2, proporcionando profundidade de campo rasa.
Cada movimento é um seno de ciclos completos por loop, de modo que o quadro N é exatamente igual ao quadro 0. O centro do quadro permanece livre para um logotipo ou título sobreposto. O vídeo não tem texto nem som.
Requisitos: Blender 4.2+ com EEVEE (testado no 5.2, GPU Apple Silicon) e ffmpeg com libx264 e libx265.
Fluxo de trabalho
1. Cores
A família fria usa 5 tons, do escuro ao claro, para os blobs grandes. A família quente usa 3 tons para os blobs de destaque. Você pode obtê-los de duas formas:
- De um logotipo:
python3 scripts/palette.py logo.pngimprime suas cores principais e um par--cool/--warmsugerido. Você também pode passar--logo logo.pngdiretamente paraloop.sh. - A partir de valores hexadecimais da marca: menos tons são aceitáveis, pois são interpolados.
Mantenha as duas famílias claramente diferentes, como azul e laranja ou verde-azulado e coral. Cores misturadas ficariam cinzentas onde os blobs se encontram, por isso são mantidas separadas. --paper "#fcfbf8,#f2eae0" define as cores do centro e dos cantos do fundo.
2. Pré-visualização (cerca de 1 minuto)
<skill>/scripts/loop.sh --name acme --cool "#0b3d91,#1565c0,#1e88e5,#42a5f5,#80d8ff" --warm "#ff6f00,#ffa000,#ffca28" --preview
Leia <name>/<name>-preview.png, que mostra seis momentos ao longo do loop, e verifique:
- As cores representam a marca.
- O fundo não está acinzentado.
- As duas famílias nunca se sobrepõem.
3. Renderização (longa: execute em segundo plano)
<skill>/scripts/loop.sh --name acme --cool ... --warm ... # 4K 60 fps, 10 s
<skill>/scripts/loop.sh --name acme --res 1920x1080 ... # 1080p, cerca de 4x mais rápido
Em um M1 Pro, um loop de 10 s a 4K60 leva cerca de 95 minutos (600 quadros, ~9,5 s cada com 2 processos Blender), e 1080p cerca de 25 minutos. A renderização retoma de onde parou se for interrompida. Os quadros são excluídos após a codificação, a menos que você passe --keep-frames.
Saída em <name>/:
<name>-4k60-loop.mp4: H.264, reproduz em qualquer lugar.-loop-hevc10.mp4: 10 bits, gradientes mais suaves, para editores.-1080p60-loop.mp4: para a web.-still.pnge-keyframes.png.
4. Verificação
- O script imprime uma verificação de continuidade. O PSNR da transição do último para o primeiro quadro deve ser próximo ao PSNR de um quadro normal; se for muito menor, algo não é periódico.
- Leia
-keyframes.png. - Informe ao usuário que o loop não tem emendas visíveis e lembre-o de ativar o modo de repetição no player ou editor.
Ajustes
Passe qualquer um destes diretamente para scene.py, editando o array LOOK do loop.sh ou executando o Blender você mesmo:
--key,--fille--wash: níveis de luz.--emite--world: brilho do fundo.--ringamte--ringbump: intensidade das ondulações.--fstop: desfoque (menor valor = mais desfocado).--glow: vivacidade dos blobs.--dur: duração do loop; o movimento permanece periódico em qualquer duração.
Layout, tamanhos e trajetórias dos blobs estão na lista BLOBS em scene.py. As posições são em metros, e o quadro no plano focal tem 0,864 × 0,486 m. Após mover os blobs, verifique se as duas famílias nunca se aproximam mais do que a soma de seus tamanhos.