昨日不可追,今日尤可为.勤奋,炽诚,不忘初心
UE4 如何将材质Material保存为本地图片Png
下面这篇文章讲了如何将TextureRenderTarget2D保存为本地图片
/lunweiwangxi3/article/details/87457594
要么,我想要将UE4的材质,最终效果,保存到本地图片,怎么办呢?
人要是越来越厉害,他对应感官也会越来越敏锐,使用手段也会越来越刁钻
自然而然地,就会想到,Material类里面有没有类似于输出到本地之类的函数,找了下,没有。
接着想,因为有了TextureRenderTardet2D保存为本地图片的成功例子,能否利用起来。将材质转换为TextureRenderTarget2D,然后再进行保存操作?想想都激动,赶紧试试。
1.首先,创建一个保存用的TextureRenderTarget2D,如下图所示:
2.将要保存为本地Png材质,写入TextureRenderTarget2D,如下图所示
然后通过上一篇文章,点此连接,将TextureRenderTarget2D保存为本地图片
要保存的材质: VS
SaveRenderTargetToFile函数保存出来的图片:
为什么这样子???
毫不犹豫,想到Alpha通道要反向。不要问我为什么会想到要反向,请回退到文章顶部,查看红色字体部分
3.Alpha反向代码:
再次保存,运行。能保存了,舒服。
要保存的材质图VS
保存的Png:
逐渐,消失的笑容... 问题来了,红绿色盲的都看出两幅图的颜色不一致了
保存的图真的跟老外一样,Much Darker了/lunweiwangxi3/article/details/87457594
很明显,不能忍。不知道怎么解决,搜索引擎也提取不出关键搜索词,程序又不懂美术的色彩,很难受。
灵光一现,为什么不能:“从哪来,回哪去呢?”
4.调试方案之哪来回哪去
毫不留情地,把引擎吐出来的Png图片又让我塞进了引擎。
强烈的第六感让我点开它,
里面的参数,应该能告诉我点什么,
当我试到CompressionQuality-HDR(RGB,no sRGB)的时候,我的心咯噔就是一跳,确认过眼神,就是我要找的人。
CompressionSettings,压缩设置!!!,赶紧到SaveRenderTargetToFile函数中去找压缩那一段,看看能不能改成HDR!!!
FImageUtils::CompressImageArray:不好意思,没有重载的函数或可设置默认的参数。
不死心的我又把万恶的矛头指向了FFileHelper::SaveArrayToFile...因为能力不够加上没查到合适的资料,只能作罢。
黔驴技穷之时,我又想起了那句话:哪里来,回哪去。
我赶紧又打开了老外的那篇文章:
/lunweiwangxi3/article/details/87457594
5.温故而知新,可以为师矣
重新看了这篇文章,下面两个红圈如此强烈而持续地抨击着我胸怀,这个东西,我在哪里见过。
没错,就是它:
十年之前,我不认识它,以为是颜色的一种格,无关痛痒的一种格式。如果再相遇,我想我会记得你。
平时不努力,答案写脸上,都不知道是干什么的。
自己不努力,别人想拉一把都不知道从哪里下手.
...
下一步的关键已经很明显了,制作HDR格式的 UTextureRenderTarget2D
强烈的成功预感...
函数的,拿过来
用:方式,取代第一步的创建RenderTarget2D的方式。其他不变。
保存,运行,打开Png,
一切又恢复到了正常的模样:
就好像从来没发生过一样。