找回密码
 立即注册
查看: 370|回复: 0

Unreal | 我发现了官方'bug'

[复制链接]
发表于 2020-12-31 09:24 | 显示全部楼层 |阅读模式


最近做布料有遇到关于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里面。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-10 11:46 , Processed in 0.141769 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表