Enlighten is a project mainly written in Python, it's free.
builds two dimensional polygon, containing all directly visible points from given point of view, considering set of solid walls