在 Unreal Engine 5(UE5)的游戏开发里,我们常常遇到一个常见问题:希望某个物件看起来是半透明的,又不想用真正的透明。对环境资产来说尤其如此——大量使用透明材质会是一场性能灾难。
这些年我做过许多套「假透明」方案,这里想分享一个简单通用的做法,它不依赖任何高级技巧。核心思路是压低基础色,再把各种计算出来的数值叠进自发光通道,做出通透的错觉。

基础色

自发光
首先,我们可以用 Phong 模型配合法线贴图,生成基本的明暗关系与主要高光。调整暗部亮度,就能模仿出假的通透感;微调高光,又能营造出不同粗糙度的错觉。这就是自发光数值的第一层。

Phong 光照

Phong 高光
接下来,我们可以在上面再建第二层自发光。这里我想要的是晶体内部裂纹与纤维状杂质的外观。做出纵深的方式有很多,这里我用的是简单的凹凸偏移(BumpOffset),任何人都容易实现。当然,你也可以按需换成更合适或者更昂贵的方法。

第二层噪声
同时,我们也给裂纹法线贴图加上 BumpOffset,并让 BumpOffset 的深度有些变化,避免效果过于统一。

第二层法线(切线空间)
接着,我们用第二层法线再生成一轮高光。然后把落在裂纹区域之外的高光遮掉,把剩下的高光与第二层噪声混合在一起。

第二层高光
为了让晶体看起来更通透,我们用第一层与第二层的法线做两次折射计算。这样能得到一个世界空间的向量去采样天空,形成自发光的第三层。当然,如果目标平台是移动端,可以把这一步换成用各种点积运算混合出来的纯色——会损失一点细节,但整体观感依然成立。你还可以调整这一层的强度,来控制晶体看起来有多透明。

天空环境采样
最后,我加了一个由场景方向光向量驱动的假透射效果,模拟晶体正对光源时被照亮的样子。这一层会与前面各阶段的颜色和噪声混合,用来表现内部杂质。这一步完全是可选的,尤其对室内场景或晶簇来说——如果不合适,直接关掉或减弱这一层就好。


假透射
以上就是整体思路。由于每一层都完全可控,美术可以自由调整效果,或者把它推向各种风格化的方向。
感谢阅读。
更多材质制作拆解可以查看本站 案例教程 分类;
想了解 UE 里的写实晶体着色,可以看 Substrate 水晶材质:Unreal Engine 写实晶体着色器拆解;
想对照冰块的半透明做法,可以参考 虚幻引擎 5 冰块材质小教学。


评论(0)