Que fait Brand Loop (fond liquide sans couture) ?
scripts/scene.py construit tout le studio dans Blender et le rend :
- Gouttes : métaballes en deux familles qui ne fusionnent qu'entre elles. Elles sont brillantes et liquides, avec une couleur bicolore qui suit l'écrasement de chaque goutte.
- Fond : un mur blanc cassé chaud avec des ondulations qui s'étendent depuis le centre, deux par boucle.
- Éclairage : une lumière clé elliptique avec ombres douces, plus des softboxes sans ombre (reflets uniquement) pour le brillant du liquide.
- Caméra : objectif 50 mm à f/2, donnant une faible profondeur de champ.
Chaque mouvement est une sinusoïde de cycles entiers par boucle, donc l'image N est exactement égale à l'image 0. Le centre de l'image reste libre pour y placer un logo ou un titre. La vidéo n'a ni texte ni son.
Prérequis : Blender 4.2+ avec EEVEE (testé sur 5.2, GPU Apple Silicon), et ffmpeg avec libx264 et libx265.
Flux de travail
1. Couleurs
La famille froide utilise 5 nuances, du foncé au clair, pour les grosses gouttes. La famille chaude utilise 3 nuances pour les gouttes d'accentuation. Deux méthodes pour les obtenir :
- Depuis un logo :
python3 scripts/palette.py logo.pngaffiche ses couleurs principales et une paire--cool/--warmsuggérée. Vous pouvez aussi passer--logo logo.pngdirectement àloop.sh. - Depuis des valeurs hex de marque : moins de nuances suffisent, car elles sont interpolées.
Gardez les deux familles clairement distinctes, par exemple bleu et orange ou turquoise et corail. Des couleurs mélangées tourneraient au gris là où les gouttes fusionnent, donc elles sont séparées. --paper "#fcfbf8,#f2eae0" définit les couleurs du centre et des bords du fond.
2. Aperçu (environ 1 minute)
<skill>/scripts/loop.sh --name acme --cool "#0b3d91,#1565c0,#1e88e5,#42a5f5,#80d8ff" --warm "#ff6f00,#ffa000,#ffca28" --preview
Lisez <nom>/<nom>-preview.png, qui montre six instants répartis sur la boucle, et vérifiez :
- Les couleurs correspondent à la marque.
- Le fond n'est pas gris.
- Les deux familles ne s'emmêlent pas.
3. Rendu (long : lancez‑le en arrière‑plan)
<skill>/scripts/loop.sh --name acme --cool ... --warm ... # 4K 60 fps, 10 s
<skill>/scripts/loop.sh --name acme --res 1920x1080 ... # 1080p, environ 4× plus rapide
Sur un M1 Pro, une boucle 4K60 de 10 s prend environ 95 minutes (600 images, environ 9,5 s chacune avec 2 processus Blender), et la 1080p environ 25 minutes. Le rendu reprend là où il s'est arrêté si interrompu. Les images sont supprimées après l'encodage sauf si vous passez --keep-frames.
Sortie dans <nom>/ :
<nom>-4k60-loop.mp4: H.264, lisible partout.-loop-hevc10.mp4: 10‑bits, dégradés les plus lisses, pour les éditeurs.-1080p60-loop.mp4: pour le web.-still.pnget-keyframes.png.
4. Vérification
- Le script affiche une vérification de couture. Le PSNR du passage dernière‑vers‑première image doit être proche du PSNR d'un pas normal ; s'il est beaucoup plus bas, quelque chose n'est pas périodique.
- Lisez
-keyframes.png. - Dites à l'utilisateur que la boucle est parfaite (aucune couture visible) et rappelez‑lui d'activer la lecture en boucle dans son lecteur ou éditeur.
Réglages
Transmettez directement ces options à scene.py, soit en modifiant le tableau LOOK dans loop.sh, soit en lançant Blender vous‑même :
--key,--fillet--wash: niveaux lumineux.--emitet--world: luminosité du fond.--ringamtet--ringbump: force des ondulations.--fstop: flou (plus bas = plus flou).--glow: vivacité des gouttes.--dur: durée de la boucle ; le mouvement reste périodique quelle que soit la durée.
Le positionnement, les tailles et les chemins des gouttes sont définis dans la liste BLOBS de scene.py. Les positions sont en mètres, et le cadre au plan focal fait 0,864 × 0,486 m. Après avoir déplacé les gouttes, vérifiez que les deux familles ne s'approchent jamais à moins de la somme de leurs tailles.