Crowds of people can be an impressive spectacle and are often employed effectively
by films to convey occasion and grandeur. Although posing a unique set of challenges,
bringing crowds to the real-time domain can greatly enhance the perceived realism
of a virtual environment. However, current attempts commonly fall short of increased
user-expectations with the sense of immersion quickly dispelled when members cease
to appear realistic and distinct.
Thus, in defining a crowd rendering system, there are three immediate objectives:
- The ability to handle a large number of characters
- High quality, convincing appearance and animation
- Individuality
|

Figure 1: Brute Force rendering of 1000 virtual humans
|
The remainder of this page provides a brief overview of existing crowd rendering techniques.
This project is strongly linked to the
Typically, crowd rendering engines implement a Level-of-Detail (LOD) system whereby
entities are replaced by discrete, successively coarser approximations as their
distance from the camera increases. At the lowest LOD, static impostors are used
in place of 3D geometry and recent work within academia has focussed almost exclusively
upon the development of such solutions.
However, impostor-centric frameworks can be prohibitively restrictive as they require
all animation frames to be pre-rendered (thereby limiting both the length and number
of animations), prevent the use of inverse kinematics (IK) and inevitably consume
significant amounts of GPU memory. Although these problems can be partially alleviated
by dynamic impostors, the point of diminishing returns is quickly reached. Despite
this, impostor systems have been successfully applied to scenes comprised of many
tens of thousands of colour-modulated agents, see the group's earlier research project
on the
Real-time Rendering of Crowds . The motivation of the earlier
approach could not take advantage of the flexibility of current GPUs.
Recent work has investigated the use of new GPU techniques, such as geometry instancing
to realise crowds of significantly higher quality than those afforded by impostors.
With this approach, performance gains are achieved CPU-side by permitting multiple
copies of a base mesh to be individually animated and rendered on the GPU using
a single draw call. Distinct, per-instance data (for example, transformation matrices
and bone attributes) are provided by separate vertex streams and/or texture look-ups.
For crowd rendering, the reduction in CPU utilization is desirable as such systems
are typically CPU-bound; instancing permits a larger allocation of processing time
to game-logic such as collision detection and artificial intelligence (AI).
Although capable of rendering many thousands of characters, current instancing techniques
are limited by the homogeneity of the crowds that they produce; colour-modulation
and related approaches are unable to sufficiently disguise the fact that crowd members
are all derived from a limited set of base meshes. Whilst ideal in specialized situations
(rendering an army of soldiers, for example), such conformity is improbable within
urban environments. Thus, our research seeks to develop new techniques for the promotion
of diverse, high-quality agents within instanced crowds.