Bvh¶
The Bvh component loads and displays BVH (Biovision Hierarchy) motion capture data. BVH is a widely-used format for skeletal animation, encoding a skeleton hierarchy along with per-frame joint rotations.
Why BVH?
Motion capture standard: Industry-standard format for motion capture data
Human-readable: Text-based format that’s easy to inspect and edit
Animation-focused: Designed specifically for skeletal animation
Widely supported: Compatible with Blender, Maya, MotionBuilder, and more
Basic Usage¶
A minimal example that loads and plays a BVH motion capture file:
from vuer import Vuer
from vuer.schemas import DefaultScene, Bvh, OrbitControls
app = Vuer()
@app.spawn(start=True)
async def main(sess):
sess.set @ DefaultScene(
Bvh(
src="https://example.com/walk.bvh",
playAnimation=True,
key="bvh-model",
),
bgChildren=[
OrbitControls(key="OrbitControls")
],
)
await sess.forever()
Key Parameters¶
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
str |
- |
Unique identifier for the model |
|
str |
- |
URL or path to the BVH file |
|
str |
- |
BVH file content as string (alternative to src) |
|
bool |
|
Auto-play the motion capture animation |
|
int |
|
Index of the animation clip to play |
|
float |
|
Speed multiplier for animation playback |
|
float |
- |
Radius of bone cylinder visualizations |
|
str |
- |
Color of joint-sphere markers |
|
bool |
|
Show joint name labels |
Loading from Text¶
You can also load BVH data directly from a string:
bvh_content = """HIERARCHY
ROOT Hips
{
OFFSET 0 0 0
CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
...
}
MOTION
Frames: 100
Frame Time: 0.0333333
...
"""
Bvh(text=bvh_content, playAnimation=True, key="bvh-from-text")
Customizing Visualization¶
Control how the skeleton is rendered:
Bvh(
src="https://example.com/dance.bvh",
playAnimation=True,
animationSpeed=0.5, # Half speed playback
boneRadius=0.02, # Thicker bones
jointColor="#ff6600", # Orange joints
label=True, # Show joint names
key="styled-bvh",
)