Here's an overview of the process I've used to animate most shots in my film. After much trial and error, I came up with a hybrid approach that combines keyframe animation, motion capture and crowd simulation.
Step 2: Add in background crowd (authored in Massive, then imported into Maya using a custom script)
Step 3: Add in middleground crowd (authored in Massive, then imported into Maya using a custom script) *
Step 4: Add in foreground crowd (motion-captured and solved using Vicon IQ and Motion Builder, then imported into Maya)
Final Shot:
* In my pipeline, the middleground crowd could be either Massive or custom mocap. The tighter the shot, the more I used mocap characters that were placed individually in the scene (which takes ages)
Details:
Three layers of crowd (Foreground, Middleground, Background) seemed to be the most effective at creating believable scenes with depth. I also had to spend tons of time randomizing models, shaders and movement so that the crowd was convincing. Check out this test and this other test to see my earlier attempts.
Crowd simulations generated out of Massive seemed to work best for background characters. The problem with building an entire scene with Massive was that it 'felt' like a simulation (no doubt due to my own inexperience with the software). As a result, I resorted to individually placed motion-captured characters for the foreground and middleground crowd layers which really helped break up the crowd motion.
The other advantage of using custom characters in the FG and MG was that I could art direct the crowd and ensure that the crowd parted at just the right time or that the crowd characters helped direct the viewer's eye to the action.
Although all the keyframes were created in different software, Maya became my central application to combine all the animation elements. This approach deviates from the standard industry practice of rendering crowds straight out of Massive using PRMan, but numerous technical challenges (unavailability of RenderMan Pro Server/PRMan at my school, problems importing Maya cameras into Massive, etc) necessitated changes to my workflow. Therefore, I hacked together a MEL script that imported characters from Massive into Maya, and then rendered everything out with RenderMan for Maya. It wasn't pretty, but it worked.