Project
Motion Capture Signal Transforms

The goal of this project was to expand on the first programming assignment given in this class, by applying signal transforms on motion capture data. In addition, I sought to give a user an interactive environment in which to apply these transformations.

This project was be writtern in Java 1.2 (aka Java 2), and used the Java3D API which came out recently. Plans to make this an applet were abandoned, as major headaches were involved at the time in putting Java 2 applets up on current browsers. As Java 2 emerges as the standard for browsers, this project will probably be moved to a client-server architecture, with the client as an applet.

The project can be broken into two parts: Getting the motion capture loaded and playing; and applying signal processing to the motion.

me
Figure 1: The skeleton of the creature being played
Motion Capture: The loading and main handling of the motion capture data was done by the MoCa (Motion Capture - though some pun intended) class. It handles BVH format motion capture data. Once the skeleton is loaded, it is revolved on the screen. The following keys are used to fully see the motion:
  • 'P' carries the skeleton through its full motion.
  • Keypad '8', '2', '4' and '6' dolly the camera. (num lock on)
  • Keypad '7' and '9' zoom out and in respectively
  • Keypad '1' and '3' swing the camera left and right

Signal Processing*: Signal processing was performed upon the motion by considering joint angle motion parameters as signals. Lowpass and Bandpass levels were calculated from these signals. figures 2 and 3 show the signals of hip angles from a walking character in white. The yellow signals are the result of 4 (out of ultimately 7) convolusions performed on the original (white) signals by a B-spline kernel of width 5. Note that low frequency signals produce the general motion involved - walking, while the high frequency signals give this general motion certain subtleties.
bandpass graph
Figure 2: Bandpass signal sequence

bandpass graph
Figure3: Bandpass signal sequence
The desired changes to the signals to produce altered motion were done by means of a graphical equalizer. The bands on the equalizer corresponded to gains to multiply the bandpass sequences with. For example, changing the gains to the middle frequencies produced the "smoothed but exaggerated" walk described by Bruderlin and Williams*.

The following keys are used to apply signal processing to the loaded motion:
  • 'S' produces the lowpass and bandpass charts, and gives the user a graphical equalizer
  • 'R' is used after the equalizer setting have been changed, to put the changes into effect.
Note that the changes to the equalizer are to be done between 'S' and 'R'. Afterwards, all successive changes to the bands need to be followed by hitting 'R' to put the changes into effect.
bandpass graph
Figure 4: Graphical equalizer to change gains to bandpass sequence.


Source Code:
The following files constitute the source code of the project:
  • Bone.java - stores information on bones (line between two joints) - while still referred to in code, its actual use has been discarded (will be removed during later clean up)
  • ChangeField.java - Textbox used by Graphic equalizer to show current gain value for a particular band
  • GraphicEqualizer.java - Window for the graphic equalizer used to change band gain values
  • GraphsFrame.java - Window that displays the SimpleGraph components
  • Joint.java - Stores information on a single joint - contains parent, child and sibling information used when traversing skeleton tree
  • MoCa.java - Main class that is run. Takes one parameter - name of BVH file
  • MoCaCanvas.java - Component on which creature is drawn and animated
  • SignalProcessor.java - Does the motion multiresolution filtering upon signals
  • SimpleGraph.java - Component that draws the signal graphs
  • StringMessageHandler.java - interface to transfer messages b/w classes - not really used by project

Test Files:
The following files contain data for some basic motions (motion data provided by House of Moves Motion Capture Studios)


* All signal processing done as discussed by Bruderlin and Williams:

    Bruderlin, A and Williams, L. Motion Signal Processing. Proceedings SIGGRAPH '95.