VHD++ Motivation

It is the moment when the whole digital entertainment and sim/vis industry undergo a revolutionary transition, using the comparison, from the medieval, manufacture oriented, in-house, inefficient production to high-tech “Henry Ford” like assembly line relying on interoperable/exchangeable software/content components and addressing the need of software mass production. If we look at the current trends, due to the growing demands and complexity the final products are more and more built from components delivered by specialized R&D teams. The development model where a few skillful developers take care of all multidisciplinary aspects of the project becomes extinct. Scale, complexity and risks need to be managed based on the strong overall design (here the engine) and code reuse (off-the-shelf components). It becomes clear for both research and development community that those who first capture, define, experience and master this new methodology will be on the cutting edge of the competitive potential.


VHD++ In Short

VHD++ is a highly flexible and extendible real-time framework supporting component based development of interactive audio-visual simulation applications in the domain of VR/AR with particular focus on virtual character simulation technologies. It relies heavily on multiple, well established OO design patterns, uses C++ as the implementation language and Python as a scripting language. The framework allows for automatic exporting of its component extensions to the Python scripting layer making quick system prototyping and testing easy.

The overall architecture of the VHD++ framework is constructed around the following key semantical elements:
vhdRuntimeEngine: a generic, entirely reusable, high performance operational kernel,
vhdServices: freely extendible set of plugable service components encapsulating heterogeneous simulation technologies,
vhdProperties: hierarchical data components representing both system and simulation state forming runtime application graph and allowing concurrent mechanisms to operate on them.

vhdRuntimeEngine constitutes application domain neutral and hence entirely reusable, architectural and operational kernel. It features highly optimized collaboration of a finite set of fundamental services inherent to all applications in the VR/AR simulation domain:
a) on-demand runtime loading of simulation specific vhdService's (system runtime composition),
b) configuration/data/content loading (XML, VRML, WAV, MP3, etc.),
c) containment,
d) serialization,
e) concurrent data sharing,
f) multi-threading and synchronization,
g) service scheduling,
h) event handling,
i) networking,
j) event and service brokering,
k) object referencing,
l) garbage collecting, etc.

vhdRuntimeEngine hosts runtime collaboration and provides "power supply" to all plugged vhdService's composing an application. The collaboration links between vhdService's are discovered, established and validated dynamically by the vhdRuntimeEngine at runtime. As a result vhdService's can be selected, loaded and activated at runtime, which allows for powerful runtime prototyping of application functional composition. Application neutral and hence generic vhdRuntimeEngine enables broad design reuse characteristic to framework oriented development methodologies.


vhdService's are plug-able active software components encapsulating heterogeneous and complementary simulation technologies, for example: 3D rendering, 3D sound, collision detection, physics, skeleton animation, skinning, cloth animation, behavioral control, GUIs, camera tracking, in/out devices, etc. vhdService's base classes form the main OO plug-in mechanism and allow for creation of any required application specific extensions. Applications are composed by drawing from the growing pool of existing vhdService's. Selected vhdService's are used as provided or they can be adapted to the particular requirements through derivation and overriding of virtual methods. Application builders are free to create new vhdService's that are then automatically added to the existing pool for future reuse. vhdService's enable massive code reuse characteristic to component based development methodologies.

vhdProperty's are data holding components that may represent both system and simulation state. Hierarchical in nature, they form a runtime "application graph" storing a single and hence consistent state of the overall system execution. For example vhdProperty's may represent a configuration of a vhdRuntimeEngine or a vhdService, scene-graph access points, virtual characters, behavioral states attached to those characters, sounds, scripts, animation data, etc. vhdService's composing an application operate concurrently on vhdProperty's. Each vhdProperty class has a corresponding vhdPropertyFactory singleton which interprets structured XML parameters to create relevant vhdProperty's. Developers are allowed to freely extend the existing set of vhdProperty and vhdPropertyFactory classes in order to introduce custom system state and simulation data types.

The most important features and functionalities of the VHD++ framework are:
a) support for development of high performance VR/AR applications,
b) existing and extendible spectrum of heterogeneous VR/AR, virtual character simulation technologies provided in from of plug-able vhdService components,
c) open architecture targeting extendibility and scalability,
d) runtime flexibility: XML based system and content configuration,
e) complexity curbing: multiple OO design patterns improve architecture clarity while abstraction levels simplify implementation constructs,
f) large scale design reuse: generic and hence fully reusable operational kernel (vhdRuntimeEngine) defines an architectural core of each VHD++ based application,
g) large scale code reuse: fundamental components providing core system level functionalities and ready-made components (vhdService's) encapsulating heterogeneous simulation level technologies e.g. 3D stereoscopic rendering, 3D surround sound, VR navigation using tracking devices, real time motion capture, virtual human animation (keyframes, procedural walking engine, animation blending, etc.), skin deformation, real-time physical clothes, face animation, speech, behaviors, interactive scenario authoring and execution, etc.


SourceForge.net Logo