I am writing a GUI for a finite element program. I want to be able to highlight/choose a primitive from a list, where the list is limited to those primitives which are visible. Bounding boxes really won't work, since the multiple surfaces are irregular, skewed in space, and arbitrarily rotated. How do I generate the list?