普通人物怨 发表于 2020-12-31 09:24

Unreal | 我发现了官方'bug'



最近做布料有遇到关于subsurface color的问题,这里顺手分享一下,方便大家参阅,避免大家在查找资料以及手动测试中花费太多的时间。
在布料中添加SSS(次表面散射)效果的时候,我们一般会将shading mode选择subsurface,这样子材质就会开放subsurface color和opacity的输入,我们只需要把透光颜色连接到subsurface color,然后给opacity一个透光的强度值,或者输入一个厚度贴图thickness。
但是在我经过翻来覆去翻天覆地的测试以后发现,官方文档还是有“bug”。根据官网解释,将一张mask连入opacity,随便给一个非黑色的subsurface color,白色的地方就不会产生SSS效果,如下:




然而,动手试过的人都知道其实并不完全如图所示,因为其实就算opacity的输入值为1(表示这些区域不接受次表面散射),但是只要材质球选择的模式是subsurface,默认整个球都会有次表面散射效果,只是强度不同。如下图,讲道理白色mask部分就应该是黑的,但是实际上还是有效果产生。(可能是官方文档引擎版本太旧)




那么如何让中间白色部分变成没有次表面散射效果呢,这就需要再将我们的mask反向(因为需要中间部分是黑色的)乘到subsurface color的输入里面。




可以看到中间mask没有不是subsurface的蓝色,而是basecolor的黄色,也就是没有了次表面散射效果。 这个在我们做那种布料里面有其他材质(比如木头)的时候会比较用的上。或者做那种会透光的叶子的时候,用来区分树干和树叶。
所以综上,如果你的物件中有一部分不需要次表面散射效果,就需要把mask同时混到opacity和subsurface color里面。
页: [1]
查看完整版本: Unreal | 我发现了官方'bug'