The original reported behavior called out that filling individual channels did not apply to LODs when LOD Model Painting = False.
With changes implemented in 4627582, the initial fill will reach LODs; subsequent fills will not.
Original notes from Nori:
Filling vertex color with a mask doesn't fill fillcolor but maskcolor to its LOD models incorrectly
It seems that this is caused just by a typo in MeshPaintHelpers::SetInstanceColorDataForLOD().
(Engine\Source\Editor\MeshPaint\Private\MeshPaintHelpers.cpp)
void MeshPaintHelpers::SetInstanceColorDataForLOD(UStaticMeshComponent* MeshComponent,..... else { // Initialize vertex buffer from given color ComponentLodInfo.OverrideVertexColors = new FColorVertexBuffer; ComponentLodInfo.OverrideVertexColors->InitFromSingleColor(MaskColor, RenderData.GetNumVertices()); } ....
I guess InitFromSingleColor(MaskColor...) is wrong and it should be InitFromSingleColor(FillColor...).
JFYI, As a test, I shelved a super small CL to fix it on 4.21. (4575538)
Result:
LOD0 is filled with Yellow.
LODs 1 and 2 are filled with Red
Expected Result:
All LODs are Yellow
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-66702 in the post.