SuperAPI AI 工具集

blender-film

设计与创作

查看项目

更新于 11-04 16:19

技能介绍

概述 blender-film 记录了一套在 Blender 中借助 Claude 完成写实电影级短镜头的工作流,示例是一个 10 秒的夜间城市 FPV 无人机穿越镜头。资料中每一步都对应 scripts/ 目录下实际运行过的脚本,脚本文本中的对象名(如 Drone Empty、Street Asphalt、Building_1 等)来自示例场景,用于其他项目时需要改名。

环境与工作方式 需要 Blender 4.4 及以上版本(示例在 5.2 上制作)、用于 Cycles 的 GPU,以及 PATH 中的 Python 3 与 ffmpeg,音效步骤另需 numpy 和 scipy。

提供两种工作方式。其一是实时桥接:在 Blender 的文本编辑器中运行 tools/bridge.py,它会监听 127.0.0.1:9876;然后在终端执行 python tools/send.py scripts/06_night.py,或用 python tools/send.py -c "print(bpy.data.filepath)" 发送单条命令,Claude 即可驱动已打开的 Blender,使用者可以旁观。

需要设置 FILM_ROOT 指向项目目录(默认 ~/blender-film),scene/、render/、audio/、research/ 位于其下;每个脚本都会加载 tools/lib.py,其中包含 coll()、save()、snap() 等辅助函数。资料特别提醒要基于副本工作:在重放或重新运行任何修改材质的脚本之前先复制 .blend,因为部分处理步骤在中途崩溃后并非幂等。

制作流程 第一步是分镜:在打开 Blender 之前先让 Claude 产出 10 秒分镜,包含每个镜头的时长、相机、主角位置和观众感受,再用任意图像模型做成一张分镜图板,后续决策都对照它检查。

第二步搭建城市:使用自有或 CC0 城市资产,从顶视图沿 +X 方向布置一条大道和一个路口,保持主角路径无遮挡,再添加车辆、路灯、树木、消防栓等,并把所有外部资产打包进 .blend。

第三步用物理而非手 K 曲线生成运动:01_swing_sim.py 模拟重力、空气阻力、不可拉伸的绳索和分镜中的锚点,搜索锚点时间使路径穿过街道;02_path_empty.py 将其转为路径曲线与跟随路径的空物体,逐帧设置偏移以得到真实速度;主角绑定到该空物体,相机沿自己的路径运动(03_camera.py),03b_camera_noise.py 添加细微抖动。

第四步处理主角。最初的方案是用 Mixamo 动画驱动的蜘蛛侠角色,但失败:动作捕捉在地面录制,腾空时姿态僵硬,画面中角色也太小。资料建议角色看起来不对时就更换主角而保留城市、相机与路径;最终采用了 FPV 无人机,04_drone_attitude.py 按真实四旋翼逻辑飞行:推力轴等于加速度加重力,机头沿速度方向,因此加速时前倾、急转时大幅侧倾、刹车时抬头;在路径弹道段切断油门并叠加自由式动作(动力翻转、桶滚、后空翻);刹车悬停后缓慢偏航凝视镜头,并加入旋转桨叶与青/品红 LED 灯带。

第五步写实细节(05_realism.py):AgX 曝光(不做调色)、薄雾体积、带断裂纹理重复的沥青、车辙、车道油滴线、修补痕迹、磨损标线、墙脚污渍与淡流水痕。

第六步夜景(06_night.py):原则是夜间天空不照亮场景,由实际灯光照明;使用带城市辉光的暗色渐变天空、LED 路灯、亮灯窗户、车头车尾灯、红色交通信号、带微弱自发光的偏蓝雾气和有水洼的湿沥青。资料提到首次尝试失败(橙色雾弥漫、发光的方块而非窗户),修复方法是利用立面纹理自带信息:玻璃光滑、墙面粗糙,用粗糙度贴图作为窗户遮罩(粗糙度小于 0.3),再对每个窗户单元随机分配暖色、冷色或关闭。

第七步相机抖动(07_shakify_cams.py):用 Shakify(免费、含真实录制的相机运动)替换程序化噪声;并增加近景镜头,例如湿路面上方约 0.45 米的街面相机,无人机朝镜头俯冲后停在正前方;08_lens_look.py 添加灯光泛光、轻微桶形畸变和色散,不做调色。

第八步基于运动设计音效:使用 CC0 录音(无人机、夜间城市、湿路交通、喇叭、远处警笛、风、雨落水洼、空调外机);11_motion_data.py 逐帧读取动画数据(无人机距离、径向速度、侧向、油门、附近车辆)写入 audio/motion.json,12_build_sfx.py 据此驱动混音:油门映射电机转速与音高,径向速度映射多普勒,侧向映射等功率声像,另有距离增益与空气吸收、油门骤增时的桨洗、低空悬停于湿路面时的水花、仅在屋顶镜头出现的空调外机、车辆最近经过时的掠过声与街道峡谷混响;建议制作平静夜晚与城市喧嚣两个版本试听选择,最终平静版胜出,响度 -14 LUFS。

第九步安全地通宵渲染:09_render_opt.py 删除隐藏的重复几何体(示例中树木资产带有额外副本)、对远离所有镜头的物体使用更轻的 LOD、启用 GPU 降噪,画面无可视变化;先用最终质量渲染六张测试静帧检查;10_render_edit.py 只渲染剪辑实际使用的帧(镜头表为相机加帧范围),可断点续渲并写入 render/status.json,tools/render_window.ps1(Windows)显示进度面板(百分比、剩余时间、最后完成帧)。渲染后需逐帧检查文件存在、无全黑或损坏帧(按帧亮度判断,跳变只应出现在计划的剪辑点),声音符合已批准的混音,响度满足 YouTube,再编码并按需关机。

第十步是黏土堆积揭示(证明是真实 3D):13_aerial_cam.py 在大道上方增加高机位;在场景的新副本上,14_clay_build.py 把所有物体变成白色黏土,冻结相机与交通在某一帧,按顺序隐藏各部件后再从天空落下:先是车辆,然后离相机最近的建筑,再到远景城市,最后是路灯与消防栓(约 500 个部件),每个下落加速并在落地时轻微反弹。tools/clay_assemble.sh 把夜景、硬切、黏土堆积、0.25 秒划像、夜景串联在同一相机同一帧;黏土与夜景的对比静帧适合做缩略图。

资料中总结的耗时教训包括:屏幕录制器窗口参数不对会录成黑屏,离开前先检查首帧;视口录制中 Material Preview 需关闭运动模糊并断开体积,Cycles 视口需要降噪器;blender -b 中的相对输出路径会解析到驱动器根目录,始终使用绝对路径;任何长时间 GPU 任务前先询问,先低质量测试,最后再最终质量。

许可与作者 资料标注许可为 MIT,作者为 Mr omi with Claude。关于价格、平台兼容性等其它信息暂未提供。