Chunky材质属性详解¶
在Chunky中,每个方块和实体都由材质定义。材质属性控制光线与表面的相互作用方式,直接影响渲染效果的真实感和美感。
材质属性概览¶
Chunky提供以下五个可编辑的材质属性:
| 属性 | 用途 | 数值范围 | 说明 |
|---|---|---|---|
| 自发光 | 光源强度 | 0 ~ 无限 | 越高材质越亮;取决于方块表面积 |
| 镜面反射 | 镜面光程度 | 0 ~ 1 | 0=完全漫反射,1=完全镜面 |
| 光滑度 | 表面平整度 | 0 ~ 1 | 0=粗糙,1=光滑;控制反射发散度 |
| 折射率 | 光线弯曲程度 | 1.0 ~ 2.5+ | 控制透明材质的光学效果 |
| 金属度 | 金属性光泽 | 0 ~ 1 | 0=非金属,1=金属;反射会被纹理着色 |
自发光(Emittance)¶
定义:材质自身发出的光的强度。
原理¶
自发光材质会主动向场景中发光。发射的光颜色取决于材质纹理的平均颜色。例如: - 火焰的发光是橙黄色 - 青色陶土的自发光是青色 - 草方块(如果被设为自发光)会发出绿光
计算公式¶
根据方块在游戏中的亮度和表面积计算自发光值:
简化后:
实例¶
- 发光石块(游戏亮度15,1536像素表面):自发光值 = 1.0
- 火把(游戏亮度14,少量表面):自发光值 ≈ 2 ~ 3
- 荧石块(游戏亮度15,自定义纹理):自发光值可调
常见误区¶
表面积很重要
不要以为所有亮度为15的方块的自发光值都相同。表面积小的发光体(如火把、蜡烛)的自发光值需要更高,才能与同亮度的完整方块一样明亮。这在路径追踪中会产生显著差异。
镜面反射(Specular)¶
定义:表面反射的光线中,有多少比例以镜面方式反射(即类似镜子的反射)。
效果示意¶
- Specular = 0:材质表现为完全漫反射,看起来哑光、无光泽,如石头、泥土
- Specular = 0.5:混合反射,既有漫反射又有少量镜面反射,如微微反光的石头、潮湿的表面
- Specular = 1:完全镜面反射,表现为闪闪发光,如水面、光滑的冰面
物理解释¶
光线与表面相交时: - 表面越粗糙,光线散射越多(漫反射) - 表面越光滑,光线反射方向越集中(镜面反射)
实际应用¶
设置镜面反射值的场景:
| 材质 | 推荐值 | 原因 |
|---|---|---|
| 干燥泥土、砖块 | 0 ~ 0.1 | 吸收光线,无反光 |
| 石头、木头 | 0.1 ~ 0.2 | 自然表面,轻微反光 |
| 潮湿的表面 | 0.2 ~ 0.4 | 水分增加反光性 |
| 冰块、水面(部分) | 0.4 ~ 0.7 | 高度反光的自然材料 |
| 玻璃、抛光金属 | 0.8 ~ 1 | 极度光滑,强烈反光 |
湿润效果
想让一个表面看起来被雨淋湿或刚下过雨?增加镜面反射值到 0.2 ~ 0.4,同时保持原有的粗糙度,就能营造出湿润的视觉效果。
光滑度(Smoothness)¶
定义:表面的光学平整程度。数值越高,表面越光滑,反射越集中;数值越低,表面越粗糙,光线散射越多。
与粗糙度的关系¶
Chunky内部使用线性粗糙度做计算,但UI中显示感知光滑度(更符合人类视觉)。这两者的关系是:
\[\text{线性粗糙度} = (1 - \text{感知光滑度})^2\] 这意味着: - 光滑度 0.5 的表面看起来不是光滑度 0.25 的两倍光滑 - 而是大约两倍光滑(符合人眼感受)
效果对比¶
- Smoothness = 0:完全粗糙,如砂纸、毛毯,反射非常发散
- Smoothness = 0.5:中等粗糙,如普通布料、旧木板
- Smoothness = 1:完全光滑,如镜子、新打磨的金属
与镜面反射的交互¶
光滑度和镜面反射常常配套使用:
| 组合 | 效果 | 例子 |
|---|---|---|
| 低镜面 + 低光滑 | 哑光无光,表面粗糙 | 旧泥砖 |
| 低镜面 + 高光滑 | 哑光但平整,摸起来光滑但不反光 | 塑料膜 |
| 高镜面 + 低光滑 | 反光但模糊,如毛玻璃 | 磨砂玻璃 |
| 高镜面 + 高光滑 | 清晰反光,最现实 | 镜子、光滑冰面 |
折射率(Index of Refraction, IoR)¶
定义:光线进入和离开透明材质时的弯曲程度。数值高的材质会更强烈地弯曲光线。
常见物质的IoR值¶
| 物质 | IoR值 | 说明 |
|---|---|---|
| 真空 | 1.0 | 基准 |
| 空气 | 1.0003 | 几乎无弯曲 |
| 水 | 1.33 | 轻微弯曲,看起来不太透明 |
| 玻璃 | 1.5 ~ 1.6 | 明显弯曲,常见光学玻璃 |
| 钻石 | 2.42 | 极端弯曲,高度闪耀 |
| 冰 | 1.31 | 接近水,但看起来更透明 |
Minecraft中的应用¶
- 水块:IoR ≈ 1.33,会产生自然的水下光线弯曲效果
- 冰块:IoR ≈ 1.31,比水更透明但有相似弯曲
- 自定义透明方块:根据游戏美术风格调整,范围通常 1.3 ~ 1.8
视觉效果¶
IoR值高的材质在光线进出时产生更明显的折射,导致透过物体看东西会有明显的"弯曲"和"放大/缩小"效果。
物理正确性
完全符合物理的IoR需要与光滑度配合。如果材质既是透明的又有粗糙的表面(如毛玻璃),IoR值会与光滑度共同影响折射效果的清晰度。
金属度(Metalness)¶
定义:材质表现出的金属特性。数值越高,材质越像金属,反射越强且被纹理着色。
金属度 vs 镜面反射¶
两者看起来相似但工作方式不同:
| 特性 | 金属度 | 镜面反射 |
|---|---|---|
| 反射颜色 | 纹理着色(如铜会反射铜色光) | 白色/灰色反射 |
| 物理原理 | 模拟真实金属的菲涅耳效应 | 简单的镜面反射 |
| 使用场景 | 金属、合金、氧化表面 | 非金属光滑表面 |
| 结合方式 | 通常配合高光滑度 | 可配合各种光滑度 |
实际应用¶
铁块: - 金属度 = 1.0(完全金属) - 光滑度 = 0.8(略有氧化,不是镜子般光滑) - 结果:反射看起来是铁的颜色,略微模糊
铜块: - 金属度 = 1.0(完全金属) - 镜面反射 = 0(用金属度代替) - 光滑度 = 0.6 ~ 0.8(新铜很光滑) - 结果:反射呈现铜色光泽
氧化铜块: - 金属度 = 0.8 ~ 0.9(部分氧化) - 光滑度 = 0.4 ~ 0.6(氧化层粗糙) - 结果:呈现绿色着色的、略显暗沉的金属
脏金属效果
虽然现实中不存在"50%金属度"的材料,但在Chunky中可以用这个特性模拟: - 脏金属:金属度 0.5 ~ 0.7,低光滑度 = 看起来布满灰尘的金属 - 生锈金属:金属度 0.6,配合红棕色纹理 = 真实的生锈效果
在Chunky中编辑材质属性¶
访问材质面板¶
- 打开Chunky并加载场景
- 在左侧渲染控制面板中找到Materials标签
- 选择要编辑的材质(方块或实体)
- 调整五个属性值
编辑工作流¶
- 预览前:设置基本属性,观察实时预览
- 低SPP渲染:用较低的采样数快速预览效果
- 微调:根据效果细微调整各参数
- 最终渲染:在确定满意后进行高SPP渲染
性能影响
自发光和高反射率材质会显著增加渲染时间。如果场景中有大量发光体,可能需要提高目标SPP以达到相同的噪声级别。
最佳实践¶
通用建议¶
- 从默认值开始:Chunky的默认材质值通常已经合理,小幅调整即可
- 逐个调整:一次只改变一个属性,观察效果
- 参考现实:想象现实中的材料会如何反射光线
- 对比测试:保存场景,尝试不同的值组合
- 关注表面积:同样的自发光值,表面积不同的方块亮度差异很大
常见场景¶
日光场景(有太阳光): - 大多数方块维持默认值 - 只需调整特殊方块(如发光的方块)
夜间场景(无太阳或低亮度): - 增加火把、灯笼等发光体的自发光值 - 提高环境光,防止场景过暗 - 目标SPP需要提高 2-4 倍
室内/洞穴场景: - 使用足够的光源(火把、蜡烛等) - 确保发光块的自发光值正确 - 可用后期处理增加对比度
相关链接¶
备注:本文档基于Chunky文档翻译和整理,感谢Chunky开发团队。