This is how I setup it in actor containing StaticMeshComponent.
Header:
UPROPERTY(EditDefaultsOnly, meta = (Category = "Mesh"))
UStaticMeshComponent* StaticMeshComponent;
UPROPERTY()
UStaticMesh* DefaultMesh;
UPROPERTY()
UMaterialInterface* DefaultMaterial;
UPROPERTY()
UMaterialInstanceDynamic* MID;
CPP Constructor:
static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshObj(TEXT("/Meshes/SM_Plane.SM_Plane"));
static ConstructorHelpers::FObjectFinder<UMaterialInterface> MaterialObj(TEXT("/Materials/M_Base.M_Base"));
DefaultMesh = MeshObj.Object;
DefaultMaterial = MaterialObj.Object;
StaticMeshComponent->SetStaticMesh(DefaultMesh);
StaticMeshComponent->SetMaterial(0, DefaultMaterial);
CPP function that creates dynamic MI:
MID = StaticMeshComponent->CreateDynamicMaterialInstance(0, DefaultMaterial);
MID->SetScalarParameterValue(TEXT("Param"), 0.0f);