二、三点布光法:主光、补光、背光的定位与参数设置,硬表面场景的实战应用
三点布光,说白了就是给场景打三盏灯。听起来简单吧?但很多新手一上来就乱打光,结果模型细节全没了,或者影子硬得像刀切。我刚开始做硬表面渲染时也踩过这个坑——明明模型做得很精细,一打光全糊了。
今天我就把这三盏灯的定位、参数,以及我在实际项目中总结的套路,一次性讲清楚。
2.1 三点布光的底层逻辑
先看一张我手绘的结构图,帮你快速建立空间感:
从图上你能看到,三盏灯分别从不同方向包围物体。主光决定整体氛围,补光负责暗部细节,背光则把物体从背景里「抠」出来。嗯,这个顺序很重要——先定主光,再补光,最后加背光。
2.2 主光:场景的灵魂
主光就是最亮的那盏灯。它决定了阴影的方向和画面的基调。我个人习惯把主光放在相机左侧或右侧,水平角度大约45°,垂直角度30°左右。
核心参数参考:
- 强度:800-1500W(或亮度值 5-10)
- 距离:距物体 2-3 个物体高度
- 阴影:开启,软阴影(Size 0.3-0.5)
- 颜色:暖色(5600K 或略偏暖)
我在做机械装甲项目时遇到过一个问题:主光太硬,导致金属表面出现刺眼的高光斑块。后来我把灯光面积调大(Area Light 尺寸从 0.5m 增加到 1.5m),高光立刻柔和了。你想想看,硬表面材质越光滑,灯光面积就要越大,不然反射会像镜子一样扎眼。
2.3 补光:暗部的救星
补光的作用不是照亮整个场景,而是把主光留下的阴影区域「提亮」一点。说白了,就是让暗部还能看到细节。
补光的位置一般在主光的对侧,角度略低一些。强度通常是主光的 1/3 到 1/2。我见过很多人把补光开得太亮,结果画面变得扁平,失去了立体感。
| 参数 | 主光 | 补光 | 背光 |
|---|---|---|---|
| 强度比例 | 100% | 30%-50% | 60%-80% |
| 水平角度 | 45° | 135°(对侧) | 180°(正后) |
| 垂直角度 | 30° | 15°-20° | 45°-60° |
| 阴影 | 开启 | 关闭 | 关闭 |
| 颜色 | 暖色 | 冷色(补色) | 暖色或中性 |
我的小技巧:补光用冷色(比如淡蓝色),主光用暖色,这样冷暖对比会让金属质感更突出。我在渲染科幻枪械时经常用这个套路,效果立竿见影。
2.4 背光:轮廓的魔术师
背光也叫轮廓光或边缘光。它从物体后方打过来,在物体边缘形成一条亮边。这条亮边能把物体和背景彻底分开,让画面更有层次。
背光的位置在物体正后方偏上,角度大约45°-60°。强度可以比主光略低,但也不能太弱,否则边缘光不明显。
注意:背光不要直接照到相机镜头,否则会产生眩光。我曾经在渲染一个机器人模型时,背光角度没调好,结果画面出现大面积光晕,修了半天才发现是背光的问题。
2.5 硬表面场景的实战应用
理论说完了,咱们直接上手。下面是一个硬表面机械零件的布光流程,我一步步拆给你看。
步骤一:搭建基础场景
先放一个模型,加一个地面。地面用灰色材质,不要太亮,否则会反射干扰。
// Blender 中的灯光创建示例(Python 脚本)
import bpy
# 创建主光
key_light = bpy.data.lights.new('Key_Light', 'AREA')
key_light.energy = 1000
key_light.color = (1.0, 0.95, 0.85) # 暖色
key_obj = bpy.data.objects.new('Key_Light', key_light)
bpy.context.collection.objects.link(key_obj)
key_obj.location = (3, -3, 4)
key_obj.rotation_euler = (0.8, 0, 0.8)
# 创建补光
fill_light = bpy.data.lights.new('Fill_Light', 'AREA')
fill_light.energy = 400
fill_light.color = (0.85, 0.9, 1.0) # 冷色
fill_obj = bpy.data.objects.new('Fill_Light', fill_light)
bpy.context.collection.objects.link(fill_obj)
fill_obj.location = (-2, 2, 2)
fill_obj.rotation_euler = (0.4, 0, -0.6)
# 创建背光
back_light = bpy.data.lights.new('Back_Light', 'AREA')
back_light.energy = 700
back_light.color = (1.0, 0.98, 0.95)
back_obj = bpy.data.objects.new('Back_Light', back_light)
bpy.context.collection.objects.link(back_obj)
back_obj.location = (0, 4, 5)
back_obj.rotation_euler = (1.2, 0, 3.14)
步骤二:调整主光位置
把主光放在相机左侧45°,高度略高于物体。观察阴影——阴影应该清晰但不生硬。如果阴影边缘太锐利,增加灯光面积或开启软阴影。
步骤三:添加补光
补光放在主光对侧,强度降到主光的40%左右。注意看暗部——如果暗部完全漆黑,说明补光不够;如果暗部亮得和亮部差不多,说明补光太强了。
步骤四:布置背光
背光从正后方打过来,高度比物体高一些。观察物体边缘——应该有一条明亮的轮廓线。如果轮廓线太宽,降低背光强度或拉远距离。
实战检查清单:
- 主光阴影方向是否统一?
- 暗部细节是否可见?
- 物体边缘是否有轮廓光?
- 高光是否集中在金属表面?
- 整体画面是否有立体感?
2.6 常见问题与避坑
我总结几个新手最容易犯的错误,你对照着检查一下:
- 灯光太多:三盏灯就够了,别再加什么辅助光、环境光。灯越多,阴影越乱。
- 补光太亮:补光只是辅助,不是主角。暗部保留一点阴影反而更真实。
- 背光角度不对:背光太低会照到物体正面,变成「正面光」,失去轮廓效果。
- 忽略材质反射:硬表面材质(金属、塑料)对灯光位置非常敏感。稍微移动一下灯光,高光位置就会大变。
我曾经在做一个汽车渲染项目时,主光和补光都调好了,但背光怎么打都不对。后来发现是模型背后的散热孔太深,背光被挡住了。解决办法是把背光稍微偏移一点,让光线从侧面擦过散热孔边缘。
嗯,三点布光法就讲到这里。记住一个原则:少即是多。三盏灯,调好位置和强度,硬表面的质感自然就出来了。
最后提醒:每次调整灯光后,记得渲染一张小图看看效果。别等到最终渲染才发现问题,那太浪费时间了。
公众号:蓝海资料掘金营,微信deep3321