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
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答回想过去,电子游戏里的草其实并不是真正的草。开发者们只是简单地把草的纹理直接贴在游戏关卡的地板上
在火星的就业指导老师那里,经常收到同学们这样、那样的提问。其中有一些共性问题,就业老师会根据自己丰富的经验,为同学们给出合适的回答。
电影剪辑通常被称为“隐形的艺术”,尽管剪辑师的名号不如导演的名号响,但是如果缺少了剪辑师对拍摄素材的二次加工,电影作品将缺少其......
今天,我来和大家聊聊,迪士尼动画《海洋奇缘》系列是怎么用Maya软件为他们最新的续集打造获奖动画的。
有哪些听起来高大上、实际上转行同学也能胜任的岗位?试试虚拟现实工程师!
增强现实(AR)和虚拟现实(VR)是当前备受瞩目的创新技术,对相关的增强现实开发、虚拟现实开发、数字孪生开发工程师的人才需求,......
在这个短视频盛行的时代,越来越多的人想要尝试自己进行短视频剪辑,却常常因为缺乏专业知识而无从下手。别担心,今天就为大家带来短视......