3D RTS: Unit Selection

I am working on a 3D Real-Time Strategy game, currently in the design phase. I have most of the business logic mapped out in UML, but I’m at a loss for how to handle unit selection effectively.

What is the typical way for a 3D RTS to handle unit selection? Do they stick a 2D shape in the 3D environment and use collision to find the units to select? Or day they run a transform from the camera view and calculate the tiles which are visible under that selection? Or do they do something completely different?

I’m not even sure how to handle a single unit selection. I can map a single cursor location to a single location on my map and check for a unit at that point, but that seems too specific - I think most games use some kind of small region so that you only need to be arbitrarily close to the unit you want to select.

And I know this process must be highly efficient in commercial games because the cursor changes based on whether the mouse is over the ground, a unit you own, or an enemy unit. So this process is happening all the time and has no noticeable affect on game play.

Does anyone have any insight on this issue? I’ve looked for books/articles/websites that talk about this level of detail in 3D RTS development but so far I have come up empty. Each source either talks about game development as a whole, or goes into the code level of creating a game engine.

My business logic is abstracted from the game engine, so this probably won’t have any use, but I am currently building on the Irrlicht engine using C++.

Thanks.