用途
本技能面向 Blender 5.2 的渲染环节,负责引擎选择、质量与性能调参、色彩管理、输出格式以及命令行/渲染农场批量渲染。执行模型位于 blender-core,场景灯光与摄像机相关内容位于 blender-lighting-lookdev。
快速调用
脚本 scripts/render_batch.py 支持一次调用完成渲染:
- scripts/render_batch.py -- --engine CYCLES --preset final --res 1920 1080 --out //render/hero_#### --frames 1
- scripts/render_batch.py -- --preset preview --frames 1-120 --format MP4 --out //render/turntable
- scripts/render_batch.py -- --cameras CamA CamB CamC --format EXR_MULTI --out //render/shots/
预设
- preview:Cycles 64 spp、阈值 0.05、分辨率 50%;EEVEE 16。
- final:512 spp、0.01;EEVEE 128 并启用光线追踪。
- product:1024 spp、透明背景。
GPU 自动选择顺序为 OptiX > CUDA > HIP > Metal > oneAPI,降噪器随之匹配(OptiX 或 OpenImageDenoise)。
引擎选择
- Cycles:最终质量、产品、建筑可视化、玻璃/SSS/焦散、烘焙。路径追踪器,需设置 GPU,使用自适应采样加降噪。
- EEVEE(5.x,原 "Next"):快速 look-dev、风格化、动态图形、预览。支持光线追踪反射/GI(use_raytracing)、虚拟阴影贴图;即使无头运行也需要 GPU。
- Workbench:播放预览、黏土/matcap 审查、QA 图。速度快,但无光照准确性。
引擎标识符:CYCLES、BLENDER_EEVEE、BLENDER_WORKBENCH。
Cycles 质量杠杆(按影响排序)
- 自适应采样(adaptive_threshold:final 0.01 / preview 0.05)加降噪(OIDN,使用 albedo+normal 通道,denoising_input_passes="RGB_ALBEDO_NORMAL")。仅提高采样数是最低效的做法。
- 光路:室内需要漫反射反弹 ≥ 4;产品镜头总计 12、光泽 4、玻璃透射 8–12。Clamp indirect 5–10 可消除萤火虫,代价是少量能量损失。
- 灯树(use_light_tree,开启)适合多灯光场景。路径引导(仅 CPU)用于困难间接光。
- 少量大光源优于多个小光源。自发光网格比面光源噪点更多。
- 持久数据(render.use_persistent_data)可加速动画与转台渲染。预览时可使用 simplify(最大细分、纹理限制)。
- 5.2:纹理缓存(render.use_texture_cache、use_auto_generate_texture_cache)通过生成 .tx mip 贴片,降低纹理密集场景的内存占用。
色彩管理(每个项目决定一次)
- AgX(默认):摄影风格,能处理高亮。外观包括 AgX - Punchy、- Base Contrast 等。
- Khronos PBR Neutral:忠实呈现 albedo。用于产品/电商与资产审查,并与 three.js NeutralToneMapping 匹配。
- Standard:需要与像素值一致的图形/UI/纹理输出。
- ACES 1.3 / 2.0:VFX 管线(素材、其他 DCC)。
全局亮度调整应使用曝光(view_settings.exposure),而非灯光功率。显示设备为 sRGB,或对 HDR 交付使用 Display P3 / Rec.2100。
输出格式
- 静帧:PNG 8/16 位(胶片透明时使用 RGBA)或 JPEG 用于网页预览。
- 合成/VFX:EXR 多层(EXR_MULTI、DWAA 16 位)并包含通道(Denoising Data、Cryptomatte、AO、Mist、Z)。5.0 重命名了通道:Diffuse Color、Depth 等。
- 视频:先渲染帧(PNG/EXR),再编码(FFmpeg 或 VSE),因为 MP4 中途崩溃会丢失全部内容。预览可直接输出 MP4。在 5.0+ 中先设置 image_settings.media_type 再设置 file_format。
- 透明:film_transparent=True 加 PNG/EXR。仅玻璃透明需要 film_transparent_glass。
合成器(5.0+ API)
示例:
ng = bpy.data.node_groups.new("Comp", "CompositorNodeTree"); scene.compositing_node_group = ng ng.interface.new_socket("Image", in_out="OUTPUT", socket_type="NodeSocketColor") rl, glare, out = ng.nodes.new("CompositorNodeRLayers"), ng.nodes.new("CompositorNodeGlare"), ng.nodes.new("NodeGroupOutput") ng.links.new(rl.outputs["Image"], glare.inputs["Image"]); ng.links.new(glare.outputs["Image"], out.inputs[0])
不再有 Composite 节点:组输出即最终图像。许多节点选项现在是输入插槽(Glare Type、Threshold、Strength),可用 blender-geometry-nodes/scripts/gn_builder.py 查看/描述。File Output 节点包含 directory、file_name、file_output_items。
命令行渲染(渲染农场、CI)
blender -b scene.blend -E CYCLES -o //out/frame_#### -F PNG -s 1 -e 120 -a 可渲染动画。-f 10 渲染单帧。Python 参数放在 -- 之后。
-- --cycles-device OPTIX(或 CUDA/HIP/METAL/ONEAPI)可在不使用 Python 的情况下选择设备。
用 -s/-e 跨机器拆分帧,或在共享存储上使用 Placeholders + No Overwrite(render.use_placeholder、use_overwrite=False)。
注意事项
- 添加引擎时 scene.render.engine 枚举报告不全。应在 try/except 中赋值(脚本已处理)。
- EEVEE 在后台仍需要 GPU 上下文。CI 无 GPU 时,使用 Cycles CPU 或 Workbench。
- bpy.ops.render.render(write_still=True) 会写入 render.filepath。不加 write_still,结果只存在于 Render Result 中。
- 玻璃/焦散噪点:仅在需要时启用焦散(caustics_refractive),提高透射反弹,或对窗户使用 Thin Wall(5.2)伪造。
- 萤火虫:clamp indirect、filter glossy / blur glossy(blur_glossy 0.5–1),以及更大的光源。