type
status
date
slug
summary
tags
category
comment
icon
password
虚幻引擎中常用的材质和光照模型
兰伯特(Lambert)
- 作用:模拟漫反射(Diffuse Reflection)的基本光照模型。用于基础颜色,模拟物体明暗面
- 原理:根据表面法线与光源方向的夹角计算光照强度,夹角越小(光直射表面)越亮,夹角越大(光斜射)越暗。
- 公式:
光照强度 = max(0, dot(法线, 光源方向))
- 特点:
- 适用于粗糙、无光泽的表面(如纸张、石头)。
- 光照过渡平滑,但阴影区域可能过于暗黑(如夹角超过90°时直接变黑)。
- 应用:基础材质、布料、非金属物体。
半兰伯特(Half-Lambert)
- 作用:改进兰伯特模型,解决暗部细节丢失的问题。在物体上形成从0-1的明暗过渡(Power为可选项,可以使明暗变化更大)
- 原理:通过数学调整将光照范围从
[0,1]
扩展到[0.5,1]
,使暗部区域仍然保留可见细节。
- 公式:
光照强度 = 0.5 * dot(法线, 光源方向) + 0.5
- 特点:
- 暗部不会完全变黑,适合卡通风格或需要柔和过渡的场景。
- 由Valve在《半条命》中提出,常用于游戏角色渲染。
- 应用:低多边形风格(Low Poly)、卡通渲染(Cel Shading)。

兰伯特与半兰伯特蓝图

兰伯特

半兰伯特

半兰伯特+Power
菲涅尔(Fresnel)
- 作用:模拟物体表面在不同视角下的反射强度变化。常用于边缘光,可通过更改乘值和指数更改菲涅尔的效果
- 原理:菲涅尔效应指出,当视线与表面夹角越小时(如看向地平线),反射越强;视线垂直表面时,反射最弱。
- 公式:
反射强度 = 基础反射值 + (1 - 基础反射值) * pow(1 - dot(视线方向, 法线), 指数)
- 特点:
- 增强真实感,常用于水面、玻璃、金属等材质。
- 可控制边缘高光(如水面边缘更亮)。
- 应用:水面、金属、玻璃、边缘光(Rim Lighting)


Matcap(Material Capture)
- 作用:通过预渲染的环境贴图快速模拟复杂材质效果。
- 原理:将材质的高光、反射、环境光等信息烘焙到一张球形贴图上,根据法线方向直接采样贴图颜色。
- 特点:
- 无需复杂光照计算,性能高效。
- 静态效果优秀,但缺乏动态光照变化。
- 常用于快速预览、插画风格或移动端渲染。
- 应用:角色展示、产品可视化、非真实感渲染(NPR)。


高光(Specular)
- 作用:模拟光滑表面的镜面反射,形成亮斑(高光点)。
- 原理:根据视线方向、光源方向和表面法线计算反射光的集中程度。
- 常见模型:
- Phong模型:基于反射方向与视线方向的夹角。
- Blinn-Phong模型:优化计算,使用半角向量(Halfway Vector)。
- 公式(Blinn-Phong):
高光强度 = pow(max(0, dot(半角向量, 法线)), 光泽度)
- 特点:
- 光泽度(Glossiness)控制高光范围,金属或塑料通常有明显高光。
- 高光颜色可能与光源颜色一致(如金属)或与材质颜色混合(如塑料)。
- 应用:金属、塑料、陶瓷等光滑材质。


展示蓝图和效果并非Blinn-Phone
总结
材质/模型 | 核心作用 | 典型应用场景 |
兰伯特 | 基础漫反射 | 粗糙表面(布料、石头) |
半兰伯特 | 保留暗部细节 | 卡通渲染、Low Poly风格 |
菲涅尔 | 视角相关的反射强度 | 水面、金属边缘光 |
Matcap | 快速预烘焙材质效果 | 角色展示、移动端渲染 |
高光 | 模拟镜面反射亮斑 | 金属、塑料、光滑表面 |
这些材质和光照模型通常结合使用(如兰伯特+高光+菲涅尔),以实现更复杂的真实感或风格化渲染。
以上就是虚幻中常用的材质和光照模型
- 作者:LiQingBa
- 链接:https://blog.liqingba.com/article/1c3a69f5-f1f3-80db-93ae-fbfd6b38cd6d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。