



I am developing a rendering system which supports automatic,
application-independent time-critical rendering for 3D
graphics. When the scenes being generated overload the rendering
engine, a rendering scheduler employs perception-based
techniques to reduce the scene complexity at run-time.
Perception-based degradation mechanisms are used because they are
based on characteristics of the human, not characteristics of the
application. Since the human is the one element guaranteed to exist
across all interactive applications, this rendering system is
application-independent.
Given enough cpu-time, present graphics technology can render near
photo-realistic images. However, for real-time graphics applications,
developers must make explicit programming decisions, trading off
rendering quality for interactive update rates. For
highly-interactive programs, such as virtual environment applications,
the human perceptual system drives the rendering requirements,
especially the need to maintain a minimum of ten frames per second or
faster. At the same time, developers are trying to present a
high-fidelity graphics environment with a more realistic scene and a richer
set of perceptual cues to help immerse the user. This time/quality
conflict forces the developer to identify when the rendering engine is
overloaded and to manually implement time-critical rendering
techniques in order to maintain immersive frame rates.
Previous systems using time-critical rendering techniques rely on
application-specific information to improve frame rates. This
restricts the domain of applications for which this technique is
applicable. The developer must determine whether the given technique
is appropriate and then structure the application to support the
required data constructs. This must be performed manually for each
new application. Systems such as Performer [5] and the work by
Funkhouser [3] address this by building in application-independent
degradation mechanisms that automatically execute in order to
achieve time-critical rendering goals.
I am developing a rendering system which performs degradation
automatically, during run-time, as part of the rendering process.
This system transparently separates the application semantics from the
rendering process. The application-independent rendering engine uses a
time-driven rendering scheduler which employs a combination of
different perception-based degradation techniques. Perception-based
degradation mechanisms are used because they are based on
characteristics of the human, not characteristics of the
application.
Abstract
Keywords:
virtual reality, virtual environments, time-critical
rendering, rendering scheduler, image degradation,
real-time, application-independence, interactive graphics.
Introduction
PERCEPTION-BASED TECHNIQUES
Perception-based rendering techniques capitalize on the capabilities
and limitations of the human (visual) perception systems. For example,
consider a scene with several objects placed at different distances
from the user. These distances change during run-time based on the
non-deterministic behavior of the user. Objects which are too distant
to be perceived may be removed. From the user's standpoint, this
image-degradation is lossless, even though from an image processing
standpoint pixels may have changed. But as more objects are removed
from the distance, the user will begin to perceive changes to the
image -- lossy degradation from the human standpoint. Perception-based
degradation techniques trade off this human-centered definition of
lossiness for increased rendering speed.
There are several properties of the human visual system which may be
exploited when performing degradation:
Designing degradation mechanisms around these perception properties
ensures that the time-critical rendering will be
application-independent.
SYSTEM ARCHITECTURE
Many existing virtual environments/graphics systems, such as Sense8's
WorldToolkit [6] and IRIS Inventor [8], work within a single process.
This couples the graphics rendering rate (based on the movement of the
user's head) to the underlying simulation's computation speed. If one
were simulating a billiard table, for example, and the collision
detection module were only capable of calculating at two frames per
second, the user's visual system would be forced to update at two
frames per second as well. If I separate the simulation computation
rate from the rendering frames, I gain the ability to render scenes in
real-time, even when simulation computations become more
complicated.
See figure
1:Separation of Application and Rendering.
This model of computation also allows the rendering engine to function independently of the application, and ensures application independence for the rendering engine [4] [7]. To provide automated degradation, a rendering scheduler is embedded within the rendering engine. This scheduler is responsible for determining how much time is available and to what extent to employ the degradation mechanisms.