I'm working to solve this problem (reduce faces number).
I have an idea which need to be improved.
first, you merge all files which are used by your model.
second, you display your model with an unique color (example: white; no light effet).
trird, you display a closed mesh which represents all possible points of view (another color: blue).
next you place your point of view at the position of the tested face (normal to the face) with an angular vision of 180° (don't display the tested face).
So, if there are blue pixel, the face is visible from the mesh of possible points of view.
I have an idea which need to be improved.
first, you merge all files which are used by your model.
second, you display your model with an unique color (example: white; no light effet).
trird, you display a closed mesh which represents all possible points of view (another color: blue).
next you place your point of view at the position of the tested face (normal to the face) with an angular vision of 180° (don't display the tested face).
So, if there are blue pixel, the face is visible from the mesh of possible points of view.