How can I join 2 objects using the Boolean modifier, but keep their original materials assigned to them?
If it is impossible - is there another way to join 2 intersecting objects and remove useless geometry inside the intersection area?
To keep the existing materials on meshes in a boolean operation, simply put the material on those objects on both material lists. For example Cube 1 has Material 01 and Cube 2 has material 02. For those two objects to be joined in a boolean operation and keep their respective materials Cube 1 MUST have Material 01 AND Material 02 in its material list and vice versa.
Two objects with different material lists:
Now the completed Boolean with the two materials in the one list of Cube 2:
If I did not put both materials in then the original one overwrites the mesh material because the material no longer exists (child material data dissolves in a union operation) so you must make sure the material actually "exists" so that it can stay on the object. Hope that helps :)