图像与设计
在 Blender 中为场景布光时,用三点布光、HDRI…
适用于任何 Blender 场景的布光需求:选灯、三点布光、HDRI、户外/室内/戏剧/影棚/产品/人像氛围、色温和阴影软硬调整。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Blender 中为场景布光时,用三特定
解决思路
- 使用 `mcp__blender__execute_blender_code` 执行 Blender Python 代码;用 `mcp__blender__get_scene_info` 和 `mcp__blender__get_object_info` 读取场景和对象信息;需要时用 Read 读取 `references/overview.md`,用 Bash 执行相关命令。
- 选择 AREA 灯:从矩形表面发光,自动产生软阴影;用于约 80% 情况,例如窗户、柔光箱、荧光板。
- 选择 SUN 灯:从无限远发出平行光线;用于阳光、月光、远距离方向光。
- 选择 POINT 灯:从一个点向全方向发光;用于灯泡、蜡烛、小全向光。
- 选择 SPOT 灯:锥形光并带衰减;用于舞台灯、车灯、聚焦光束。
- 选择 HDRI/World:用 360° 环境图照明;用于写实环境光、户外、产品摄影。
- 默认规则:除太阳外几乎都用 AREA 灯,软阴影会自然产生。
- 按 Studio/commercial 情绪布光:使用三点布光 key+fill+rim,再加 HDRI fill 0.3。
- 按 Outdoor/sunlit 情绪布光:使用 Sun 加 HDRI sky environment。
- 按 Indoor cinematic 情绪布光:使用 Sun through window 加 HDRI low 加 practicals,灯用 Point。
- 按 Dramatic/noir 情绪布光:使用 Single Spot at high angle,不加 fill。
- 按 Stylized/cartoon 情绪布光:使用三点布光加高对比,并给 key 使用饱和颜色。
- 不确定情绪时布光:使用三点布光加 HDRI grounding,适用于约 90% 情况。
- 如果目标是匹配参考图而非泛泛好看,链式加载 `reference-look-calibration`;由它测量 hue/saturation/value、object extent、glow/aura color、before/after look metrics,然后在本技能中按校准目标应用材质/灯光/渲染修改。
- 定义 `aim_at(light_obj, target)`:target 可为 Vector、tuple/list (x,y,z) 或 Blender object;若 target 有 location 则 target_pos=Vector(target.location),否则 Vector(target);direction=(target_pos-light_obj.location).normalized();light_obj.rotation_euler=direction.to_track_quat('-Z','Y').to_euler()。
- 定义 `compute_scene_bbox_center(meshes)`:用 bpy.context.evaluated_depsgraph_get() 取 deps;对每个 mesh 执行 evaluated_get(deps) 和 to_mesh(),把 o.matrix_world @ v.co 加入 all_verts;计算 xs/ys/zs 的 min/max;center 为各轴中点,extent 为 max(max(xs)-min(xs), max(ys)-min(ys), max(zs)-min(zs));最后 to_mesh_clear()。
- Recipe 0a:按 subject_class 调三点布光,调用 `apply_three_point(subject_class='metal')`。可选 class 与参数:`metal` 4:1:2、key warm 3200K、key_color=(1.0,0.95,0.85)、fill_color=(0.85,0.9,1.0)、rim_color=(0.7,0.85,1.0);`glass` 3:1:1.2、neutral 5500K、rim 用 AREA 且 size=1.5,避免强 rim 冲掉体积色;`wood` 4:1:1.5、warm 3000K;`fabric` 3:1:0.5、neutral 5500K;`skin` 4:1:1、warm 3500K;`product` 5:1:1.5、neutral 5000K;未指定则回退 Recipe 0b。
- Recipe 0a 执行步骤:从 `GEO-*` 的 MESH 对象计算场景 bbox;取 center、biggest=max(z范围,x范围);light_dist=max(biggest*1.5, 1.0);base_energy=100*(light_dist/1.5)**2;按 profile ratio 得 key_e、fill_e、rim_e;删除已有 `LGT-key`、`LGT-fill`、`LGT-rim`;创建 KEY AREA,energy=key_e、size=0.5、color=key_color,位置 center+(light_dist*0.7, -light_dist*0.7, light_dist*0.5),aim_at(center);创建 FILL AREA,energy=fill_e、size=1.0、color=fill_color,位置 center+(-light_dist*0.7, -light_dist*0.5, light_dist*0.3),aim_at(center);创建 RIM,glass 用 AREA 且 size=1.5,其余用 SPOT 且 spot_size=radians(50),energy=rim_e、color=rim_color,位置 center+(0, light_dist, light_dist*0.5),aim_at(center);打印 lighting:{subject_class} key:fill:rim={ratio} dist={light_dist:.2f}m。
- Recipe 0b:通用三点布光并对准主体。取 `GEO-*` MESH 计算 center 和 extent;light_dist=max(extent*1.5, 1.0);key_energy=100*(light_dist/1.5)**2;fill_energy=key_energy*0.3;rim_energy=key_energy*0.8。创建 KEY AREA:energy=key_energy、size=0.5、color=(1.0,0.95,0.85),位置 center+(light_dist*0.7, -light_dist*0.7, light_dist*0.5),aim_at(center)。创建 FILL AREA:energy=fill_energy、size=1.0、color=(0.85,0.9,1.0),位置 center+(-light_dist*0.7, -light_dist*0.5, light_dist*0.3),aim_at(center)。创建 RIM SPOT:energy=rim_energy、color=(0.7,0.85,1.0)、spot_size=radians(50),位置 center+(0, light_dist, light_dist*0.5),aim_at(center)。打印 lighting:three_point_aimed center=... extent=...m dist=...m。
- Recipe 0c:Practical lighting。当主体本身或包含发光源时:把 world background 调暗到 Strength 0.10–0.20,例如 Background Color=(0.02,0.02,0.03,1.0)、Strength=0.15;减少或移除标准 3-point fill/rim,让 practical 光主导;保留一个从相机方向来的微弱 ambient fill,8–15W AREA,例如 energy=8、size=1.0、color=(0.85,0.9,1.0)、location=(0.5,-0.8,0.5)、aim_at(Vector((0,0,0.3)));小 mesh emitter 的 emission strength 要调高,见 blender-materials Recipe 11b,bulb spheres 需 Strength 800–3000;Cycles 设 scene.cycles.max_bounces=16 或更高,确保灯罩内部弹射正确;验证结果参考 text-to-blender/assets/v1.1.0-validation/desk_lamp_emission.webp。
- Recipe 1:标准三点布光。创建 KEY AREA:energy=1000、size=1.0、color=(1.0,0.95,0.85),即 warm tungsten ~3200K,location=(3,-3,3.5),rotation_euler=(radians(35), radians(45), 0)。创建 FILL AREA:energy=300、size=2.0、color=(0.85,0.9,1.0),即 cool sky ~6500K,location=(-3,-2,2.5),rotation_euler=(radians(50), radians(-45), 0)。创建 RIM SPOT:energy=600、spot_size=radians(40)、color=(0.7,0.85,1.0),location=(0,4,3.0),rotation_euler=(radians(120), 0, radians(180))。打印 lighting:three_point。
- 三点布光标准比例:High-key/commercial 用 Key:Fill=2:1;Medium/portrait 用 4:1;Low-key/dramatic 用 8:1+;Rim 为 key 的 50–100%。
- Recipe 2:HDRI 环境。对 scene.world 设 use_nodes=True;清空原 world nodes;创建 `ShaderNodeOutputWorld`、`ShaderNodeBackground`,Strength=1.0;创建 `ShaderNodeTexEnvironment`、`ShaderNodeMapping`、`ShaderNodeTexCoord`;env.image=bpy.data.images.load('/path/to/your.hdr');连接 TexCoord.Generated -> Mapping.Vector,Mapping.Vector -> Environment.Vector,Environment.Color -> Background.Color,Background.Background -> Output.Surface;打印 lighting:hdri。免费 HDRI 来源 polyhaven.com/hdris,CC0。
- Recipe 3:阳光户外。创建 SUN:energy=5.0、color=(1.0,0.95,0.8),即 golden hour,angle=radians(0.5),真实太阳大小,越大越柔,location=(0,0,10),rotation_euler=(radians(45), radians(15), 0);打印 lighting:outdoor_sun;再配合 Recipe 2 的 HDRI sky 做自然环境补光。
- Recipe 4:室内窗户光。创建 SUN:energy=3.0、color=(0.85,0.9,1.0)、angle=radians(2.0),比直射太阳柔,location=(5,-3,4),rotation_euler=(radians(60), radians(-30), 0)。创建 PRACTICAL POINT:energy=60、color=(1.0,0.7,0.4),即 warm bulb,location=(-1,2,1.5);打印 lighting:indoor_window。
- Recipe 5:戏剧性单光源。创建 SPOT:energy=800、spot_size=radians(30)、spot_blend=0.3、color=(1.0,0.95,0.85),location=(2,-2,6),rotation_euler=(radians(60), 0, 0);打印 lighting:dramatic;全 noir 可再配强 volumetrics,即 atmosphere,见 references/overview.md。
- Recipe 6:色温速查。Candle 1850K=(1.0,0.6,0.3);Tungsten 3200K=(1.0,0.85,0.6);LED warm 3000K=(1.0,0.8,0.6);Sunset/golden 3500K=(1.0,0.85,0.65);Daylight noon 5500K=(1.0,1.0,1.0);Overcast sky 6500K=(0.95,0.95,1.0);Blue hour 8000K=(0.8,0.9,1.0)。专业混光:warm key,即 tungsten,加 cool fill,即 daylight,得到 golden/teal Hollywood look。
- Recipe 7:调节阴影软硬。更软:AREA 设 light_data.size=2.0 或更大;SUN 设 light_data.angle=radians(5)。更硬:AREA 设 light_data.size=0.1;SUN 设 light_data.angle=radians(0.5)。
- 灯光命名约定:`LGT-key` 主光/key;`LGT-fill` 补光;`LGT-rim` 或 `LGT-back` 轮廓光/背光;`LGT-sun` 太阳灯;`LGT-{name}` practical 灯,例如 lamp、candle、neon 等。
- 常见问题修复:半边模型全黑时加 fill,AREA 或 HDRI。
- 常见问题修复:渲染发平就提高 key:fill 比例并加 rim。
- 常见问题修复:阴影到处太硬就增大 AREA size 或 SUN angle。
- 常见问题修复:整体太暗就提高 View Transform exposure 或 HDRI strength。
- 常见问题修复:材质没有反射时始终设置 world environment,即 HDRI。
- 常见问题修复:灯在物体内部时检查 world position,灯必须从相机可见。
- 常见问题修复:背光把主体打爆时让 rim energy ≤ key energy。
- 需要加载 `references/overview.md` 的情况:用户要求的 setup 不在 recipes 中,例如 volumetric god rays、light groups、light linking;需要超过默认值的 HDRI rotation/strength tuning;多灯场景,5+ lamps,需要组织;color science 或 color management 涉及 AgX、Filmic。
- `references/overview.md` 覆盖:5 种 light types 的深入说明、完整 HDRI workflow、用于 compositor re-lighting 的 light groups,以及 product/portrait/architectural/character/animation looks 配方。
- 本技能与 `blender-materials`,灯光揭示材质,和 `blender-cameras`,灯光+构图=镜头,配合使用。
适用边界 · 注意事项
- 非 Blender 场景,或没有 Blender/MCP 执行环境时,不适用。
- 需要匹配特定参考图时,不应只依赖本技能,先链式加载 `reference-look-calibration` 做测量和校准。
- 需要 volumetric god rays、light groups、light linking、AgX/Filmic 深入配置或 5+ 灯组织时,应加载 `references/overview.md`,不要只按基础配方。