Hello . 大家好!今天给大家分享一下unreal中的pbr检测,我是木偶心没。
我们在使用pbr流程的时候都根据项目要求有一些颜色值范围,比如说substance的30/50-240。我们在painter或者designer里面画贴图的时候如果颜色值不在正确的范围内,导入到引擎里面效果就会有问题,所以就需要一些在引擎里面检查颜色值或者粗糙度值是否规范的工具。下面就介绍一些这款朋友提供的检查basecolor的工具。
1、非金属
首先这个tool的功能是检查整个场景的basecolor在不在我们规定的范围内,所以最好的方式是直接添加一个后处理材质,这样就能作用到整个场景。所以首先新建一个材质球命名为mat_PbrValidate,然后设置Material Domain为Post Process,现在整个材质就只有一个Emissive Color属性暴露出来了,我们只需要把我们的检查连接到这个属性上面。
然后,需要获取场景中的basecolor,右键添加节点SceneTexture,然后选择节点的Scene Texture Id属性为BaseColor(for lighting)才能得到整个场景的base color。
我们给输出的base color添加一个desturation节点来降低base color饱和度,将0-255的颜色值范围转化到0-1的范围,方便检测。
获取到场景中颜色值以后,我们就可以直接用if来进行判断。如果我们项目规定颜色值范围需要在50-240范围内的话,我们就要用两个if分别判断是不是大于50和小于240。
由于unreal里面默认的颜色使用的是linearsrgb,所以判断之前我们需要将50和240从srgb转化成linear srgb。转化公式如下:Linear = Pow((srgb/255+0.55)/1.055, 2.4)
我们可以直接在引擎里面算,也可以在外面算好了最后的值再放进来。这里我们直接在引擎里面写,因为需要计算幂函数不用一些特殊手段不太好整。下面是最高值和最低值的线性转换,可以把范围暴露出来,方便不同的项目需求。
然后开始连接到if语句上面,对于最低范围bc_low(50),如果输入的值A>=50,则输出1;否则就是在范围之外的错误值,输出0。
同样,对于最高值bc_high(240),如果输入的值A>=240,则是超出范围的错误颜色值,输出1;否则是<240的正确值输出0。
这里最高值的判断和最低值的判断相反(最低值正确为1,最高值正确为0),是因为我们可以利用两者之间的减法来lerp不同的颜色区分错误和正确的颜色区域。
所以接着我们把两个if相减,然后和表示错误的红色以及表示正确的绿色进行lerp。
所以假设一下,如果输入的颜色值是40,则上面的if输出0,下面的if输出0,相减得0,则输出红色;
如果输入的颜色值是100,上面if输出1,下面输出0.相减得1,输出绿色;
如果输入颜色值250,则上面if输出1,下面if也输出1,相减得0,输出红色。
2、金属
但是,上面讨论的都是非金属的basecolor,如果检测的模型中有金属,那basecolor可能超过240,所以我们需要在最后的输出中排除这种金属的情况。即如果得到的红色部分中的金属度有大于0的,则这块区域的颜色值是正确的。
同样先用SceneTexture获取场景中的金属,然后去饱和度,再用if判断
如果得到的值>0,则是金属,输出0,将输出值与楼上红绿颜色相乘,如果楼上的金属那部分的颜色值是大于240的则相乘以后等于0黑色,符合pbr规定范围。
我们将最后的输出放到Emissive Color中。然后保存整个材质。
然后将这个材质加入到我们要检测的场景中。
首先给我们需要检测的场景拉一个post process volume,放大到你想要检查的区域。
在postprocess的属性中找到renderingfeatures属性,并在Array中点加号新加一个AssetReference,把我们的mat_PbrValidate材质的instance放进去。
然后在场景中移动摄像机到post process的范围内,就可以看到不在范围内的红色和符合范围的绿色啦。
来源:Thepoly
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答023年以来,在版号审批、出海政策等影响下,新品游戏大量涌现,这也为游戏市场带来了一些新变量、新现象。
学习游戏开发班可以帮助游戏爱好者从零基础成为游戏开发专家,掌握全面的游戏开发技能。
火星时代教育为您提供专业的界面设计实战班,在实践中掌握界面设计的核心技巧和最新趋势,成为优秀的UI设计师。
了解UI交互设计培训的最佳选择,比较不同培训机构的优势和特点。
火星时代教育为您推荐专业的学影视后期培训机构,提供高质量的培训内容及资深导师指导,助您成为优秀的影视后期剪辑师或合成师。
火星时代教育是一家专注于交互设计培训的机构,为学员提供专业的交互设计培训课程,并帮助他们成为优秀的交互设计师。
1. 打开微信扫一扫,扫描左侧二维码
2. 添加老师微信,马上领取免费课程资源
同学您好!