blueprints not independent from each other?

If you want each instance of the blueprint use it-own material params, you need to use DynamicMaterialInstances. However if you change the underlying Material from whcih those dynamic material instances are created, it will affect everything.

To simplify, Consider Materials as base classes and Material instances as Objects. When you change something in the base class, it will affect all instances of that class. Also if you assign a single instance of a class (an object) to multiple variables and change any property, it will affect all those variable (becuase they are all pointing to the same thing). But if you create multitple instances of a class and assing each to different variables, they all become independant. This is what you want to do.

So in a nutshell, to make each instance indpendent, use DynamicmaterialInstances. You can create them from blueprint (I usually create them in construction script or beginplay). In you construcion script, create a dynamic material instance from a base material and apply it to your mesh. If you change any params of this instance, it will not affect any other mesh.