品牌循环(无缝液态背景) 是做什么的?
scripts/scene.py 在 Blender 中构建整个场景并渲染:
- 水珠: 属于两族的元球,仅与自身融合。表面光滑、具液态质感,双色调色彩随每个水珠的挤压变化。
- 背景: 暖米白色墙壁,中心向外扩散的涟漪环,每循环两个。
- 灯光: 椭圆形主光,带柔和阴影,外加用于液态光泽的反射柔光箱。
- 相机: 50 mm 镜头,f/2 光圈,营造浅景深效果。
每个运动都是每循环完整周期的正弦波,因此第 N 帧与第 0 帧完全一致。画面中央保留空白位置,用于放置标志或标题。视频不包含文字和声音。
要求:Blender 4.2+(自带 EEVEE,已在 5.2 版本、Apple Silicon GPU 上测试),以及支持 libx264 和 libx265 的 ffmpeg。
工作流程
1. 颜色
冷色系使用 5 种深浅不同的色调(从深到浅)用于大水珠。暖色系使用 3 种色调用于点缀水珠。可以通过以下两种方式获取:
- 从标志提取:
python3 scripts/palette.py logo.png会打印其主要颜色以及建议的--cool/--warm组合。也可以直接将--logo logo.png参数传递给loop.sh。 - 从品牌十六进制值: 颜色数量较少也可以,因为脚本会进行插值。
确保两族颜色有明显区别,例如蓝色与橙色,或青色与珊瑚色。混合颜色会在水珠合并处变成灰色,因此保持分离。--paper "#fcfbf8,#f2eae0" 设置背景的中心和角落颜色。
2. 预览(约 1 分钟)
<skill>/scripts/loop.sh --name acme --cool "#0b3d91,#1565c0,#1e88e5,#42a5f5,#80d8ff" --warm "#ff6f00,#ffa000,#ffca28" --preview
查看 <name>/<name>-preview.png,它展示了整个循环中六个瞬间的画面,并检查:
- 颜色是否准确体现品牌色调。
- 背景不是灰色。
- 两族颜色从未相互切入。
3. 渲染(时间长:请在后台运行)
<skill>/scripts/loop.sh --name acme --cool ... --warm ... # 4K 60 fps, 10 秒
<skill>/scripts/loop.sh --name acme --res 1920x1080 ... # 1080p, 约快 4 倍
在 M1 Pro 上,一个 10 秒的 4K60 循环大约需要 95 分钟(600 帧,每帧约 9.5 秒,使用 2 个 Blender 进程),1080p 大约需要 25 分钟。如果渲染中断,它会从停止处继续渲染。除非传递 --keep-frames,否则帧在编码后会被删除。
输出在 <name>/ 目录中:
<name>-4k60-loop.mp4:H.264 编码,可在所有播放器播放。-loop-hevc10.mp4:10 位编码,渐变最平滑,适用于后期剪辑。-1080p60-loop.mp4:适用于网络。-still.png和-keyframes.png。
4. 检查
- 脚本会打印 无缝检查 结果。最后一帧与第一帧之间的 PSNR 值必须接近正常相邻帧的 PSNR 值;如果远低于正常值,则说明某些部分不是周期性的。
- 查看
-keyframes.png。 - 告知用户视频是无缝循环的,并提醒他们在播放器或编辑器中开启循环播放。
调节参数
可以通过编辑 loop.sh 的 LOOK 数组或直接运行 Blender,将以下任意参数传递给 scene.py:
--key、--fill和--wash:光照强度。--emit和--world:背景亮度。--ringamt和--ringbump:涟漪强度。--fstop:模糊程度(值越小越模糊)。--glow:水珠鲜艳度。--dur:循环长度;在任何长度下运动都保持周期性。
水珠的布局、大小和路径由 scene.py 中的 BLOBS 列表控制。位置单位为米,对焦平面上的画幅尺寸为 0.864 × 0.486 米。移动水珠后,请检查两族水珠之间的距离是否始终大于它们各自的尺寸之和。