Over the course of the project, we implemented several extensions to the core Virpet technology. Some of the improvements were motivated by the requirements imposed by our creative vision for Rift (or, indeed, for any non-trivial piece of content). Others simply streamline the tools and make them easier to distribute and use. Our technological improvements are summarized below.

Additional Puppeteerable Actions

The following actions are now supported by the Stage, and available to puppeteers:

  • Scene changes (move to a new "set", reposition puppets, cut to new camera view, etc.)
  • Trigger pre-recorded sound clips (sound effects, background music, dialogue)
  • Camera motion (panning, zooming, dollying)
  • Video-studio-style camera cuts (positioning multiple cameras in a scene and cutting between them)


  • Puppets that can be particles (LithTech particle system that can be controlled to change properties like color, etc)

Improved Performance Management

The process of designing, managing and performing a Virpet performance has been significantly improved.

  • Virpet Performance Description (VPD) -- lets the user specify a sequence of scenes, each with its own SSF file.
  • Expanded SSF files -- new information stored, including:
    • Locations of multiple cameras
    • List of sound effects, music and dialogue used in the scene
  • Recording
    • Complex animations can be pre-recorded, edited and saved as MIDI files, which are later piped to the Stage (through the PuppetMaster) at performance time.
    • triggering keyframe animations from 3DS Max, as always.
    • Packet-level recording in The Stage allows for recording and playing back entire scenes (as well as "layered" recording of background animations).

User-friendly Tools

No more editing XML files by hand! We've improved the old PuppetMaster and added a slew of new GUI tools to easily generate all the necessary files for a Virpet performance.

  • PuppetMaster 2.0
    • Can saving PuppetMaster Settings (PMS) files!
    • Supports automatic generation of skeleton PMS files from SSF files
  • VPM editor
    • Takes a skeletal model as input
    • Lets you specify which degrees of freedom are available in the model
    • Save the result as a VPM file
  • SSF editor
    • Specify which VPM files are to use in the scene
    • Specify initial positions of models and camera
    • Save the results in an SSF file
  • VPD editor
    • Specify a sequence of scenes for a performance
    • Save the result as a VPD file

Easier Setup

The process of setting up a computer to work with Virpets has improved by leaps and bounds! All obnoxious absolute paths have been removed from the source code, giving much greater freedom in choosing where to install the software. And for end-user computers, all Virpet software (including all the files used to create Rift) is packaged as a super-easy Windows installer! Go from zero to Virpet in ten minutes or less!


The Wish List...

Of course, there is plenty of room for further refinement. Some useful features and improvements we would recommend for future Virpet projects include:

  • Keyboard input for the PuppetMaster. The ability to trigger events from keyboard presses would be extremely useful. Most of the code is already in place, and only our limited knowledge of DirectInput and Windows GUI programming prevented us from getting it working in the end.
  • Automatic mouth animation for speaking characters. It would be nice to have a puppet automatically open and close its mouth while a line of its dialogue is being played. It isn't nearly as expressive as manual puppeteering of the mouth, but in some cases the difference wouldn't be noticeable. And it's one less thing for the puppeteer to worry about.
  • An easier way to manage multiple performances. Right now, all performance-related files live in the same directory. Figuring out which files belong to which performance isn't always easy, and specifying which performance to run could be more streamlined as well.
  • Implement a more easily editable recording subsystem. The current recording system makes adding additional material to an existing scene very easy, but deleting material is well-nigh impossible. This could stand to be changed. Perhaps we should coordinate with the IAI team, and migrate to their DMX format?