I am working on a project that uses 3D tiles, all 1 unit in size, with a top-down perspective projection (think of a typical screen aligned 2D tile map, but with a perspective projection and tiles not constrained to 2D planes). I need to be able to find the minimum and maximum row and column extents to ensure that I am drawing only visible tiles. I've considered using bounding volumes, but that would require iterating over what could be a massive data set, in which only a tiny fraction would be visible. I could use a quad tree, but even that is overkill. With a 2D tile map using a orthographic projection, finding the row and column extents is easy. Take a rectangle in pixels corresponding to the location of the viewport in the tile map and divide the extents by the width and height of the tiles. This doesn't work so well with a perspective projection.
How do I do this?