Calculating the max vertex count is quite easy. Get information about the bus-bandwidth, and divide it by 3 vertices x4 components x4 byte = 48 Byte. Now you have the count of triangles, that fit into the “pipe” every second. Now divide this by 33 and you’ve got the count possible for 30fps.
Let’s have a look at wikipedia: http://en.wikipedia.org/wiki/List_of_device_bandwidths
PCI Express has max. 8 GB/s, divided that’s approx. 5 million.
Be aware that’s this is a quite “quick and ugly” approach as this doesn’t count normal data, color, Texture coordinates, etc. So if you want a place on the secure side count 1-2 million triangles on such a system.
Now that’s what you can do. Now other things come into play like fill rate, the speed of frustum/occlusion/portal culling and so on. If you’ve got an interior-only environment you can set the poly count for your characters and scenery quite high, as you only have to send a relatively small area to the graphics card and most things are done by the cpu (frustum/portal culling) based on e.g. bounding boxes.
If you’ve got an exterior or mass-player scene things are different of course, as you see tons of models walking around.
Finally there’s things like vertex animation, physics and stuff. This is done mostly on the cpu (well, ok skins&bones ist done on the gpu most times I guess) so that’s a factor that will reduce the polygoncount for characters a little further if you do a lots of other calculations on the cpu.
So - conclusion. Static scenes, like level-data can have LOT’s of triangles (as they don’t change and are not seen in most cases for interior settings), but need to leave room for dynamic content (players, monsters, etc.) Here you will be fixed to - I guess 5000 Triangles or so at the moment if you want to show some more monsters than 10 at a time. If you’ve got large scenes (exterior) get your poly count down for players AND scenery, as you will see lot’s of different content at a time.