Material vs Material Instance:我的初学者体会
Source: Dev.to
我原以为材质实例只是材质的复制品。后来我尝试在不重新编译任何东西的情况下修改数值,这时我终于恍然大悟。
这篇文章是我在游戏开发每日学习旅程中的一部分。我会分享每天学到的内容——基础、困惑以及真正的进步——从一个新手的视角出发。
在我的游戏开发之旅的 第 22 天,我学习了 Unreal Engine 中的材质、材质实例以及自发光材质。
今天的尝试 / 学习
我先创建了一个 普通材质,随后从它生成了一个 材质实例。我了解到材质实例相当于主材质的 子级,它可以在不重新编译着色器的情况下修改数值。
在父材质中,我添加了:
- 标量参数(Scalar Parameters) 用于强度或数值
- 向量参数(Vector Parameters) 用于颜色
我还将 Emissive Color(自发光颜色) 输入连接上,使材质能够发光。当我把它应用到一个立方体上时,立刻在视口中看到发光效果。
我学到的一个重要点是 自发光不需要光源。它会自行发出颜色,即使在完全黑暗的环境中也能保持可见。
我还了解到,对于 地形(landscapes),单个材质可以控制多个层级,而材质实例则帮助更高效地复用和管理这些层级。
让我困惑的地方
起初,我不明白为什么不能直接在材质实例内部编辑节点。我不理解:
- 为什么要使用参数而不是普通数值
- Base Color(基础颜色) 与 Emissive Color(自发光颜色) 的区别
- 为什么自发光不像真实灯光那样照亮整个场景
相较于普通材质,地形材质看起来也要复杂得多。
终于明白的点
我最终弄清了以下几点:
- 材质实例仅用于 微调数值,而不是构建逻辑
- 参数是 材质与实例之间的桥梁
- 自发光是一种 视觉上的发光效果,并非真实的场景光照
当这些概念点通了之后,一切都变得更合乎逻辑。
给初学者的一条建议
- 所有逻辑都应在父材质中构建
- 如果计划创建材质实例,就使用参数
- 自发光用于发光,而不是照明
- 为参数起好名字可以省去大量困惑
进展缓慢——但我正在打下坚实的基础。
如果你也在学习游戏开发,刚开始时最让你困惑的是什么?
下篇见 🎮🚀