Simple MoCap
The page is written and maintained by Min Zhong, last modified April, 2000.
Overall
|
A close up
|
Project 2 Prof. Gleicher Min Zhong
April, 2000 |
Overview
This is a self-directed motion capture system. Many buttons have warning/help
to guide the user through correct usage of the system. With the knowledge
of different mouse
functions, one can learn to use the system without reading other parts
of the user manual.
Mouse
The two mouse buttons manuvers the camera movement.
In OMIN mode
CTRL+LMB: the horizontal
dragging motion enables zoom in and out
LMB: dolly
and rotates the world.
FOLLOW mode
CTRL+LMB: the horizontal
dragging motion enables zoom in and out
LMB: Horizontal
dragging rotates the view horizontally. The horizontal angle is restricted
to 0-360, so drag the other direction when it stops responding to mouse
movement.
RMB: Vertical
dragging rotates the view vertically. The vertical angle is restricted
to 0-90, so drag the other direction when it stops responding to mouse
movement.
Motion file loading
upon loading a new .bvh, all keys and markers are
cleared and interp and marker browsers are reset to default setting.
Display
It is capable of displaying three rotations (Euler,
quaternion, and exponential map) simultaneously for visual comparison.
On each rotation interpolation type browser, choose
"hide" to hide the motion from that rotation, "None" to show the non-interpolated
motion for that rotation type, or
others for appropriate interpolation type.
Viewing range can be changed by specifying new "begin" and "end" frames.
Markers
-loading marker placement file
Marker request files can be loaded using the "Load
Marker Request" button any time during the animation. As new marker file
is loaded, old markers are erased.
Each invalid marker (non existing parent joint)
is automatically ignored with a warning message displayed.
-display
Markers are displayed for the choosen rotation on
the "marker type" browser if that rotation is currently on display ("Hide"
not selected).
The last 20 frames of each marker trace are displayed.
-export
Marker information exported is for the choosen interpolation
type (rotation interpolation browser) of the choosen rotation type (Marker
type browser).
Endsite markers
Choose the endsite(s) want to be traced in the endsite
browser, set "marker type" browser to the desired rotation type,
and make sure that rotation type is not on "Hide"
selection from its interpolation browser.
This is an after-thought add-on after everything
else is implemented. So only one type of rotation trace is shown
at a time.
It would have been neat to be able to compare traces
for differenct interpolation type.
Endsite browser: hold down CTRL or SHIFT key to
select multiple or toggle.
Keyframing
Two modes are available: automatically key every
nth frame or manually select each key frame.
For complex motion, it is recommanded that key nth
for a reasonable value of "nth", then customally key the missing important
frames to achieve good effect.
"Key this frame": first
drag the slider to the desired key frame, and then click the button to
key it.
"Un-key" works similarly.
It removes the key frame the time slide is pointing at.
"Display keys" button displays
all keys keyed so far on console.
"Clear keys" clears all
keys.
back to Overview.
Source Code and the end product
proj2.exe
(585KB)
proj2.dsp
proj2.dsw
some sample bvh motion data files in this
directory
proj2.h
has includes and some defines.
main.cpp
pops up the UI, starts the even loop.
debug.cpp, debug.h:
for debug prints.
3DUtils.cpp:
callbacks and related.
RunButton.cpp, RunButton.h:
Play button and slider related.
viewer.cpp, viewer.h:
Gl_Win class methods
parser.cpp:
reads in the .bvh motion data and fills a MotionCapturer object.
MotionCapturer.cpp,
MotionCapturer.h:
defines the structure for parsed data, most related functions in parser.cpp.
RotConverter.cpp,
RotConverter.h:
converts between Euler, quaternion and exponential map representations.
interpolater.cpp:
handles interpolation.
quatSpline.cpp:
quaternion spline related.
stage.cpp:
camera, lighting and shadow related.
Marker.cpp Marker.h:
marker trace related
vector.cpp, vector.h:
3D and 4D vector manipulation library.
That's all folks! back to Overview.