什么是NPR渲染?
NPR(Non-Photorealistic Rendering,非真实感渲染)是与写实渲染相对的一类渲染风格,目标不是模拟真实摄影效果,而是创造独特的艺术风格——卡通、漫画线稿、水彩、素描……这些在电影、游戏、动画、插画领域有广泛需求。
Blender 内置了强大的NPR工具集,核心是Freestyle引擎和Shader Editor中的卡通着色节点。本文重点介绍Freestyle——Blender官方文档称其为"基于边缘/线条的NPR渲染引擎",可以生成描边、线稿、技术图纸等多种风格。
Freestyle快速开启
Freestyle属于Blender的渲染后处理模块,开启方式:
- 在属性面板选择「渲染属性」(相机图标)
- 勾选「Freestyle」复选框
- 切换到「视图层属性」(叠层图标),找到Freestyle设置区域
开启后渲染时间会增加(Freestyle需要额外处理边缘检测),建议在测试阶段降低分辨率加快预览速度。
Freestyle的层级结构
Freestyle采用三层结构来控制线条效果,理解这个结构是掌握Freestyle的关键:
第一层:视图映射(View Map)
每个视图层对应一个视图映射,负责全局的边缘检测设置:
- 折痕角度:决定哪个角度的折痕被识别为线条,通常设置120~150°
- 面平滑度切换:控制平滑面是否参与边缘检测
- 材质边界:在不同材质的交界处自动生成线条
第二层:线集(Line Set)
一个视图映射可以包含多个线集,每个线集独立控制一类线条:
- 轮廓线(外轮廓描边)
- 折痕线(模型内部折痕)
- 材质边界线
- 视图边缘线
- 建议/几何边缘线
通过叠加多个线集,可以实现"外轮廓粗线+内折痕细线"的漫画效果。
第三层:线条样式(Line Style)
每个线集关联一个线条样式,控制线条的外观:
- 颜色(支持沿线渐变)
- 粗细(支持沿线变化、深度影响)
- 不透明度(Alpha)
- 虚线设置(控制虚线间隔和节奏)
- 几何修改器(扭曲、偏移、手绘感等)
基础卡通渲染配置:描边+色块
经典的"三渲二"卡通风格需要两个组件配合:Freestyle负责线条,着色器负责色块分色。
着色器设置:Toon BSDF
- 在Shader Editor中,将默认Principled BSDF替换为「漫射 BSDF(Diffuse BSDF)」
- 添加「颜色渐变(Color Ramp)」节点,连接到漫射BSDF的颜色输入
- 将渐变类型改为「常量(Constant)」,设置2~3个色阶,实现卡通分色效果
- 或者直接使用专为NPR设计的Goo Engine(基于Blender的卡通渲染增强版本)
Freestyle描边设置
- 开启Freestyle,在线集中勾选「轮廓(Contour)」
- 设置线条粗细为2~4 px(根据分辨率调整)
- 颜色设为深色(#1a1a1a比纯黑更自然)
- 在几何修改器中添加「扰动(Perturb)」,增加手绘感不规则性
Python预设线条样式
Blender内置了多种预设线条样式,可以在Freestyle设置面板直接调用:
- Cartoon:卡通风格描边,粗细变化模拟手绘
- Japanese Big Brush:日本大笔刷风格,充满书法感
- Blueprint:蓝图/技术图纸风格,均匀细线
- Thickness-Depth:线条粗细随深度变化,近粗远细
对于初学者,直接套用这些预设是快速出效果的最佳途径。
Freestyle的已知限制
使用Freestyle前需了解其局限性,避免踩坑:
- 内存消耗大:Freestyle会将视图层内所有网格对象一次性加载,场景复杂时内存占用极高
- 渲染速度慢:边缘检测和线条绘制会显著增加渲染时间
- 无Z深度信息:Freestyle渲染结果没有深度信息,无法在合成节点中使用深度雾等效果
- 面相交边缘无法检测:当两个网格面相互穿插时,交界边无法自动生成线条,需手动处理
- 不支持全景摄像机:使用全景/鱼眼镜头时Freestyle失效
替代方案:Grease Pencil与EEVEE自发光轮廓
Freestyle并非唯一的NPR工具,Blender还有两种常用替代方案:
- Grease Pencil(蜡笔):2D/3D混合的矢量线稿工具,线条控制更精细,适合动画短片和漫画风格
- EEVEE实时渲染+轮廓着色器:通过节点做实时NPR描边,速度比Freestyle快数倍,适合需要快速预览的场景
如果你在制作动画或需要频繁调整预览,建议优先考虑EEVEE路线;如果追求高质量静帧,Freestyle+Cycles的组合效果更精细。
参考来源:Blender 5.0 官方手册(docs.blender.org)
