Replying to yourself might do the trick to get an advice, because you are explaining the problem more and more and show that you take efforts yourself!

vec_for_screen is your best choice. If the distance between camera and surface is always the same, a fixed value for z will do it.
If the distance varies, you have to add a trace between two vec_for_screen positions, means two different values of z, that means that you send a trace rectangular to the screens 'surface', to get the distance to the surface.
http://www.conitec.net/beta/avec_for_screen.htm