Description

The "Import Vertex Colors" feature in mesh paint mode only works if the instance had vertex color overrides enabled.

This is especially problematic for Nanite meshes since usually you can't add actual vertex colors to the mesh.

The only known workaround is:

  • Disable Nanite on the source mesh
  • Paint a pixel of vertex color on the instance
  • Re-enable Nanite
  • "Import Vertex Colors" now works correctly.

The code responsible for transferring the vertex colors (UMeshPaintModeSubsystem::ImportMeshPaintTextureFromVertexColors) only considers per instance vertex colors, but can be modified as follows to check for the Nanite proxy to return the colors if possible:

	//#BFG_CHANGE Begin NANITE_VERTEX_COLORFIX
	const FColorVertexBuffer* BaseColorBuffer = nullptr;
	if (StaticMesh->GetRenderData()->LODResources.IsValidIndex(LodIndex))
	{
		const FStaticMeshLODResources& LODModel = StaticMesh->GetRenderData()->LODResources[LodIndex];
		BaseColorBuffer = &LODModel.VertexBuffers.ColorVertexBuffer;
	}

	UE::Geometry::FStaticMeshLODResourcesToDynamicMesh::ConversionOptions ConversionOptions;
	ConversionOptions.bWantTangents = false;
	ConversionOptions.bWantMaterialIDs = false;
	UE::Geometry::FDynamicMesh3 DynamicMesh;
	UE::Geometry::FStaticMeshLODResourcesToDynamicMesh Converter;
	Converter.Convert(
 	&StaticMesh->GetRenderData()->LODResources[LodIndex],
			ConversionOptions,
			DynamicMesh,
 		bHasPerInstanceVertexColors || (BaseColorBuffer != nullptr),
		 [bHasPerInstanceVertexColors,InstanceMeshLODInfo, BaseColorBuffer](int32 Index)
	 {
 		if ( bHasPerInstanceVertexColors )
 		{
 			return InstanceMeshLODInfo->OverrideVertexColors->VertexColor(Index);
 		}

 		// fallback to the base vertex buffer 
 		if ( BaseColorBuffer )
 		{
 			return BaseColorBuffer->VertexColor( Index );
 		}

 		return FColor::White;
	 });

	//#BFG_CHANGE End
Steps to Reproduce
  • Import a mesh with vertex colors
  • Enable Nanite on the mesh
  • Place instance of the mesh in the scene
  • Switch to Mesh Paint mode
  • Switch to the Texture Color tab
  • Click Add and then "Import Vertex Colors"
  • Notice that it only returns pure white

 

Workaround:

  • Place a new instance (important as the previous step would cause the vertex colors to be wrong on the selected instance)
  • Disable Nanite on the mesh
  • Switch to Mesh Paint mode
  • Add some custom vertex color on the instance
  • Disable Nanite
  • Switch to Mesh Paint mode again
  • Switch to the Texture Color tab
  • Click Add and then "Import Vertex Colors"
  • Notice that it only returns pure white

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-391452 in the post.

0
Login to Vote

Unresolved
ComponentUE - Editor
Affects Versions5.75.8
CreatedAug 11, 2026
UpdatedAug 17, 2026
View Jira Issue