Sorry, I didn't see this thread, just stumbled across the vid on you-tube.
If I was trying this, I think I'd give each racer an 'interesting' score, based upon (for example, but probably in this order of descending weighting):
> How close are they to the car in front?
> Are they currently being watched (and inversely, for how long)?
> Are they colliding?
> Are they off track?
> What is their position in the race?
> A 'Look - thats me!' lottery.
etc.
All cars are scanned each 'cycle' & the car with the highest score each cycle would be the one to watch.
It's a rather programmatical way to think of it, but should be easy to tune by weighting each category, rather than dealing with abstract things in code. I don't know whether this approach would work.
It did seem to spend quite a long time in it's 'hunt' mode sometimes.
Something else to consider, which does happen in real events, is that some parts of the track are more interesting than others. They are usually the ones where the cameras are located I suppose. It feels natural if the director switches cars between these sections of the track & not in the middle of them, or worse, just about to pass through one. Maybe there should be a track node weighting?