出处: @白昼行姜暗夜摸王
渲染:https://zhuanlan.zhihu.com/p/63133742
描边:https://zhuanlan.zhihu.com/p/63340001(这个在4.24版出了点问题)
2020.6.19修改:另外一个描边,能用,日语网站https://qiita.com/AegisShingo/items/24cab6fff85a510b5e50#skeletalmeshcomponent%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E6%94%B9%E9%80%A0
描边材质是无意中发现的,可以不用改源码用的材质。
描边材质:https://www.raywenderlich.com/92-unreal-engine-4-toon-outlines-tutorial
原文是4.22的,曾经成功在4.22实现,现在尝试在4.24实现。
成功实现了,但是在描边的时候会有一些小问题。
1,在4.22版,有变形目标的材质,描边材质里面也要勾选使用变形目标,播放游戏就会卡死。偶然发现在4.24版居然没问题,莫名其妙,但还是建议勾选上。
2,在4.24版,使用多材质描边的话,描边的材质数组的元素数量必须和模型材质数量一致,哪怕空着也要加够数量,不然会直接卡死。在4.22版有没有这个问题就不太记得了。如果不需要区分各个材质的描边颜色,可以做单材质版的,上面链接里的描边就是单材质的。描边的4.24和4.22的代码都一样没变。
3,卡通渲染里面混合模式用半透明的时候基础颜色会全黑,需要自发光才有颜色。
======================2020.6.19修改======================
还是关于描边,在4.24我改的多材质版不能用,回崩溃,有回复说原版的单材质版也会崩溃,找了几天,虽然没找到解决方法,但是找到了另外一个方法做描边,效果是一样的,但是只支持单个材质的线条,或者有空再去改了。
https://qiita.com/AegisShingo/items/24cab6fff85a510b5e50#skeletalmeshcomponent%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E6%94%B9%E9%80%A0qiita.com这虽然是个日文网站,但是文件链接,需要修改的部分,全部都标识了,代码也都贴出来了,直接复制黏贴就可以了,不懂日文应该也没太大问题。
========================修改结束========================
另外,我对原理理解其实也是一知半解,属于依葫芦画瓢,想知道修改的代码代表的意思,建议看原文的链接,在开头。我主要是写步骤。
一、添加相关参数
找到EngineTypes.h
添加 MSM_Toon UMETA(DisplayName="Toon"),
找到HLSLMaterialTranslator.h (在4.22版是在MaterialShared.cpp里面,4.24移到这里来了)
添加代码,就是照抄上面的,改下名字。