Yea, try this for ray casting. In this case, you would spin the ray caster source programmatically and fast… (rather than via mouse as in this demo) so that it’s hitting any face facing it. And of course, you’d only have select the first face it hits, rather than every face.
As for normals, just came up with that idea, so haven’t seen it done… but i’m pretty sure it’d work! here’s a good playground to visualize them.
And doc: Show Vertex Normals - Babylon.js Documentation
I’d think that any face with each of its normals facing the plane of the camera at 90degrees is 100% facing the camera. And then you could make some adjustment + or - 90degrees to accommodate a face that is mostly facing the camera…
This is kind of equivalent to sending out a ray from each of the corners of each face to a plane in line with a camera… And if the Ray hits the plane at 90, voila