VTK should have consistent visibility settings no matter if built static or shared.
Currently VTK determines what visibility settings will be applied based on if building statically or dynamically. When building statically we use the compilers default controls, while when building dynamically we always explicitly specify a visibility of hidden by default.
This seems to have been done to work around warnings that thirdparty libraries generate when being built statically with explicit visibility controls of hidden by default.
Rather than force VTK to have weird visibility control rules, we should rather patch our thirdparty libraries.