Without virtual humans in a virtual environment, the scene looks lifeless and the user is drawn to the fine details of the surrounding buildings. Adding a crowd brings visual interest to the scene, improves realism and draws attention away from other elements of the simulation. The goal is to add a crowd of virtual humans to a scene, incurring as minimal overhead as possible, while achieving acceptable visual results.
Real-time rendering of photo-realistic humans is considerably outside the scope of current consumer level computer hardware. Work has been done to overcome this barrier; however it is far from complete. Crowds of significant size in a local, dynamically lit environment have not been tackled.
What are the particular problems associated with populating a scene with a crowd? As previously mentioned it is desirable that adding a crowd to a scene does not significantly impact upon the frame rate of the system. In addition to this, there is the requirement for the crowd to be visually varied. A crowd of identical humans would not be desirable, however even simple colour changes to clothes greatly enhance the visual variety.
Through the use of static billboard and other Level of Detail techniques the rending time of a crowd can be greatly reduced. Static billboards have been chosen due to the extremely lightweight rendering overhead per entity. The textures (colour and normal maps) are generated offline in a helper application and loaded into memory at the start of the main system.
At run-time the correct texture representation is chosen and via a fragment shader (implemented in OpenGL Shader Language (GLSL)) the texture is relit in the current lighting conditions using the information stored in the normal map. Due to the use of a fragment shader, the overhead of this relighting is proportional to the screen space occupied by each entity. This is advantageous for crowds, as on average each entity occupies a very small amount of screen space.
The lighting systems used in current crowd rendering are far from ideal. The majority include a single infinite point source light with no shadows. While this is to reduce the overhead of lighting in the scene, it also removed much of the realism from the scene.
While photo realistic lighting is by its very nature too complex, at this time, to simulate in real-time, many techniques exist to bridge the gap between what is desired and what is possible with the raw power available.
Adding shadows to a scene adds a considerable element of realism to the scene. It "locks" the humans onto the floor they are walking, without shadows they appear to float above the ground.
Above the use of planer shadows (the simplest and most light weight of the shadow techniques) with a local light source.
Planer shadows have been used in crowd simulations before however they have a number of limitations:
- Lack of dynamic on dynamic shadowing
- Lack of self-shadowing
- Lack of shadows onto buildings
- Will not work on a non-flat floor
Shadows Volumes and Shadow Maps are two possible shadow methods for crowds. On the right is a sample implementation of a shadow volume system, which has the ability to overcome all of the limitations mentioned above about planer shadows. However in their naive form shadow volumes are extremely heavy on fill-rate, far beyond the amount available for a dynamically lit crowd.
Shadow maps, introduced by Williams in the 1970's, are an adaptation of the depth map idea. They also allow for self-shadowing and projection onto non-flat surfaces. The main problem with shadow maps is that they are texture-based solutions and thus suffer aliasing when a shadow map's element corresponds to more than one screen pixel. Much research has been done to combat the aliasing problems of shadow maps.
We are currently investigating the possibility of adapting shadow volumes and/or shadow maps to a crowd scene, while still maintaining real-time frame rates.
Prof. A.M. Day, Dr. R. G. Ryder