- 初始化记录各个
Mesh
上的各个点的世界坐标信息在CaptureAltaCanvasRT
- 根据
HitPosition
和CaptureAltaCanvasRT
绘制污渍RT图
,并应用到Mesh
对应的材质
蓝图:
部分1
- 对于要涂色的
Mesh
,添加SplatReceiver
组件,在BeginPlay
时加入到SplatManager
中的RenderList
数组中 SplatManager
在RenderList
数组添加完毕后,对数组中每个mesh
进行遍历,然后对其进行展开模型(把Mesh
的材质替换成Unwarp
材质,且创建初始材质的动态材质)
6. 利用SceneCapture
捕捉Mesh
上每个点的世界坐标信息作为SubSceneCaptureRT
贴图(清空SceneCapture
中的ShowOnlyActors
数组,再将该Mesh
的ownerActor
加入到ShowOnlyActors
中,保证SceneCapture
只捕捉了当前Mesh
,没有捕捉其他的信息,影响捕捉出来的RT图
)。
7. 在把模型的材质替换回原始材质,且更新原始动态材质上的SubUVCount
变量作为后续更新材质中污渍图中sub的选择。
8. 开始绘制CanvasRT
,把刚刚捕捉出来的SubSceneCaptureRT
作为子RT
添加到CaptureAltaCanvasRT
的图集。这张图集相当于记录了RenderList
上所有Mesh
的世界坐标信息。绘制完成一次Canvas
,SubUVCount
更新一次。
部分2
各个材质:
M_UnwrapMesh
:用于展开模型,且将展开前的Mesh上的各个点的信息作为自发光输入,用于后面被SceneCapture
捕捉
注意:
Texcoord[1]
表示获取的是模型的第二套UVconstantBiasScale
用于把展开的UV坐标范围从是X【0,1】,Y【-1,0】调整到x【-0.5,0.5】.Y【-0.5,0.5】,相当于把UV坐标平移到展开模型的中心点下方。- Param中Size等于
SceneCapture
的捕捉的大小 - 材质函数
UnwrapUVsForRender
,箭头输出的和上面实际效果是相同的
M_SceneCaptureÿ