Webots Humans and Assets
Purpose
Use this skill to build human-centric and environment-rich Webots scenes quickly and correctly:
- Add animated human meshes through
CharacterSkin and BVH retargeting.
- Add walking rigid humans through
Pedestrian and trajectory arguments.
- Load biomechanics motion capture through
C3dViewer.
- Populate worlds with the complete
projects/objects PROTO library.
- Start from pre-built environment worlds when faster than assembling from scratch.
Use references/humans_assets_reference.md as the authoritative field/API catalog.
Trigger Conditions
Activate when requests include terms such as:
- webots human, animated human, CharacterSkin
- pedestrian, walking person, crowd
- BVH animation, motion retargeting
- C3D, motion capture, markers, ground reaction force
- environment assets, furniture, indoor, outdoor, buildings, street furniture, traffic, static vehicles
Boundaries
Keep this skill focused on humans and environment assets:
- Do not explain
Skin node internals beyond practical mapping requirements.
- Do not cover robot catalogs or robot model selection.
- Defer low-level physics node internals to
webots-physics.
Human Model Selection Workflow
- Choose the human representation:
- Use
CharacterSkin for mesh-based, bone-driven animation from BVH.
- Use
Pedestrian for lightweight scripted walking with path/speed args.
- Use
C3dViewer for marker-based biomechanics playback and analysis.
- Add the node, set placement (
translation, rotation), then configure behavior fields.
- Validate scale/orientation immediately in simulation before scene duplication.
CharacterSkin (Animated Human Mesh)
Use CharacterSkin when BVH animation or pose retargeting is required.
CharacterSkin {
translation 0 0 0
rotation 0 0 1 0
scale 1 1 1
name "skin"
model "Sandra" # Options: "Anthony", "Robert", "Sandra", "Sophia"
castShadows FALSE
}
Apply these model choices:
Anthony: boy
Robert: man
Sandra: woman
Sophia: girl
Practical notes:
- Treat
CharacterSkin as a Skin-derived PROTO with predefined FBX mesh and PBR textures.
- Keep character scale close to
1 1 1; adjust BVH translation scale instead of nonuniform body scaling when possible.
- Keep one animation controller instance per animated character to simplify joint mapping.
BVH Playback and Retargeting Flow
Follow this sequence for robust playback:
- Load BVH data (
wbu_bvh_read_file).
- Set translation scaling (
wbu_bvh_set_scale) for meter alignment.
- Build per-joint mapping between BVH joint indices and Webots bone identifiers.
- Set T-pose alignment for each mapped joint (
wbu_bvh_set_model_t_pose) using axis-angle data.
- Step BVH every control loop (
wbu_bvh_step), read joint rotations and root translation, then apply to the skin/bones.
- Cleanup on exit (
wbu_bvh_cleanup).
// Load BVH file
WbBvhDataRef motion = wbu_bvh_read_file("animation.bvh");
wbu_bvh_set_scale(motion, 0.01); // scale translation data
// Set T-pose mapping for each joint
wbu_bvh_set_model_t_pose(motion, axisAngle, jointId, global);
// Play animation
while (wb_robot_step(timestep) != -1) {
wbu_bvh_step(motion);
for (int i = 0; i < wbu_bvh_get_joint_count(motion); i++) {
double *rotation = wbu_bvh_get_joint_rotation(motion, i);
// Apply rotation to Skin bone
}
}
wbu_bvh_cleanup(motion);
Pedestrian (Rigid Walking Human)
Use Pedestrian for scripted walk cycles with simple scene integration.
Pedestrian {
translation 0 0 1.27
rotation 0 0 1 0
name "pedestrian"
controller "pedestrian"
controllerArgs ["--speed=1.5", "--trajectory=[2 0, 0 2, -2 0]"]
shirtColor 0.25 0.55 0.20
pantsColor 0.24 0.25 0.5
shoesColor 0.28 0.15 0.06
skinColor 1.0 0.75 0.7
enableBoundingObject FALSE
}
Use this model behavior correctly:
- 13 passive joints exist (3 per arm, 3 per leg, 1 head).
- Walking gait logic is provided by the Python
pedestrian controller.
controllerArgs typically include:
--trajectory=[x1 y1, x2 y2, ...]
--speed=<m/s>
--step=<controller step ms>
- Attach props through
leftHandSlot and rightHandSlot.
C3D Motion Capture Viewer
Use C3dViewer to visualize biomechanics C3D files:
- Marker trajectories are rendered as spheres.
- Ground reaction force offsets are configurable.
- Playback speed and body visualization settings are configurable.
- The robot window (
c3d_viewer_window) exposes runtime controls.
Environment Asset Placement Workflow
Use built-in PROTO insertion for all object assets:
Add button > PROTO nodes (Webots Projects) > objects > [category] > [asset]
Use this category-first strategy:
- Place structural envelopes first (floors, walls, roads, buildings).
- Place major furniture/infrastructure assets.
- Add detail assets (street furniture, tools, props, vegetation).
- Add background/static vehicles last to tune density and readability.
Asset Families to Prioritize
Use the object library in these practical groups:
- Furniture and interiors: tables, chairs, desks, sofas, beds, cabinets, kitchen and bathroom fixtures.
- Infrastructure: buildings, doors/windows, stairs, roads, intersections, street equipment.
- Industrial/factory: conveyors, pallets, crates, valves, tools, canisters.
- Nature: trees, plants, rocks, and static animals.
- Street furniture: benches, bus stops, bins, hydrants, kiosks, fences.
- Static/background vehicles and road context assets.
Pre-built Environments and Templates
Start from pre-built worlds when layout speed matters:
- Basic arenas:
RectangleArena, CircleArena PROTO floors.
- Indoor environments: apartment/kitchen/break-room style worlds.
- Outdoor environments: city, village, road/highway worlds.
- Sports: RoboCup-style soccer field and match worlds.
- Factory floors and industrial halls.
Use the detailed world inventory in references/humans_assets_reference.md.
Validation Checklist
Before finalizing scene composition:
- Confirm all humans stand on contact surfaces without penetration.
- Confirm animation scale and heading match ENU world axes.
- Confirm pedestrian trajectory points remain navigable around obstacles.
- Confirm static asset density preserves robot navigation corridors.
- Confirm
TexturedBackground and TexturedBackgroundLight textures match.
- Confirm simulation remains real-time capable after asset expansion.
Reference File
Load references/humans_assets_reference.md for:
- complete
CharacterSkin, Pedestrian, and C3dViewer field references,
- full BVH utility C API,
- complete categorized object PROTO catalog,
- pre-built world environment index,
- textured background/light option matrix.
1---2name: webots-humans-assets3description: Use this skill when adding human models, pedestrians, animated characters, or environment assets (furniture, buildings, nature, vehicles) to a Webots simulation. Covers CharacterSkin for animated humans, Pedestrian for walking models, BVH animation playback, C3D motion capture, and the complete object/environment asset library. Triggers on: webots human, pedestrian, CharacterSkin, BVH animation, furniture, environment, objects, assets, indoor, outdoor, buildings.4---56# Webots Humans and Assets78## Purpose910Use this skill to build human-centric and environment-rich Webots scenes quickly and correctly:11- Add animated human meshes through `CharacterSkin` and BVH retargeting.12- Add walking rigid humans through `Pedestrian` and trajectory arguments.13- Load biomechanics motion capture through `C3dViewer`.14- Populate worlds with the complete `projects/objects` PROTO library.15- Start from pre-built environment worlds when faster than assembling from scratch.1617Use `references/humans_assets_reference.md` as the authoritative field/API catalog.1819## Trigger Conditions2021Activate when requests include terms such as:22- webots human, animated human, CharacterSkin23- pedestrian, walking person, crowd24- BVH animation, motion retargeting25- C3D, motion capture, markers, ground reaction force26- environment assets, furniture, indoor, outdoor, buildings, street furniture, traffic, static vehicles2728## Boundaries2930Keep this skill focused on humans and environment assets:31- Do not explain `Skin` node internals beyond practical mapping requirements.32- Do not cover robot catalogs or robot model selection.33- Defer low-level physics node internals to `webots-physics`.3435## Human Model Selection Workflow36371. Choose the human representation:38 - Use `CharacterSkin` for mesh-based, bone-driven animation from BVH.39 - Use `Pedestrian` for lightweight scripted walking with path/speed args.40 - Use `C3dViewer` for marker-based biomechanics playback and analysis.412. Add the node, set placement (`translation`, `rotation`), then configure behavior fields.423. Validate scale/orientation immediately in simulation before scene duplication.4344## CharacterSkin (Animated Human Mesh)4546Use `CharacterSkin` when BVH animation or pose retargeting is required.4748```vrml49CharacterSkin {50 translation 0 0 051 rotation 0 0 1 052 scale 1 1 153 name "skin"54 model "Sandra" # Options: "Anthony", "Robert", "Sandra", "Sophia"55 castShadows FALSE56}57```5859Apply these model choices:60- `Anthony`: boy61- `Robert`: man62- `Sandra`: woman63- `Sophia`: girl6465Practical notes:66- Treat `CharacterSkin` as a `Skin`-derived PROTO with predefined FBX mesh and PBR textures.67- Keep character scale close to `1 1 1`; adjust BVH translation scale instead of nonuniform body scaling when possible.68- Keep one animation controller instance per animated character to simplify joint mapping.6970## BVH Playback and Retargeting Flow7172Follow this sequence for robust playback:731. Load BVH data (`wbu_bvh_read_file`).742. Set translation scaling (`wbu_bvh_set_scale`) for meter alignment.753. Build per-joint mapping between BVH joint indices and Webots bone identifiers.764. Set T-pose alignment for each mapped joint (`wbu_bvh_set_model_t_pose`) using axis-angle data.775. Step BVH every control loop (`wbu_bvh_step`), read joint rotations and root translation, then apply to the skin/bones.786. Cleanup on exit (`wbu_bvh_cleanup`).7980```c81// Load BVH file82WbBvhDataRef motion = wbu_bvh_read_file("animation.bvh");83wbu_bvh_set_scale(motion, 0.01); // scale translation data8485// Set T-pose mapping for each joint86wbu_bvh_set_model_t_pose(motion, axisAngle, jointId, global);8788// Play animation89while (wb_robot_step(timestep) != -1) {90 wbu_bvh_step(motion);91 for (int i = 0; i < wbu_bvh_get_joint_count(motion); i++) {92 double *rotation = wbu_bvh_get_joint_rotation(motion, i);93 // Apply rotation to Skin bone94 }95}96wbu_bvh_cleanup(motion);97```9899## Pedestrian (Rigid Walking Human)100101Use `Pedestrian` for scripted walk cycles with simple scene integration.102103```vrml104Pedestrian {105 translation 0 0 1.27106 rotation 0 0 1 0107 name "pedestrian"108 controller "pedestrian"109 controllerArgs ["--speed=1.5", "--trajectory=[2 0, 0 2, -2 0]"]110 shirtColor 0.25 0.55 0.20111 pantsColor 0.24 0.25 0.5112 shoesColor 0.28 0.15 0.06113 skinColor 1.0 0.75 0.7114 enableBoundingObject FALSE115}116```117118Use this model behavior correctly:119- 13 passive joints exist (3 per arm, 3 per leg, 1 head).120- Walking gait logic is provided by the Python `pedestrian` controller.121- `controllerArgs` typically include:122 - `--trajectory=[x1 y1, x2 y2, ...]`123 - `--speed=<m/s>`124 - `--step=<controller step ms>`125- Attach props through `leftHandSlot` and `rightHandSlot`.126127## C3D Motion Capture Viewer128129Use `C3dViewer` to visualize biomechanics C3D files:130- Marker trajectories are rendered as spheres.131- Ground reaction force offsets are configurable.132- Playback speed and body visualization settings are configurable.133- The robot window (`c3d_viewer_window`) exposes runtime controls.134135## Environment Asset Placement Workflow136137Use built-in PROTO insertion for all object assets:138139```text140Add button > PROTO nodes (Webots Projects) > objects > [category] > [asset]141```142143Use this category-first strategy:1441. Place structural envelopes first (floors, walls, roads, buildings).1452. Place major furniture/infrastructure assets.1463. Add detail assets (street furniture, tools, props, vegetation).1474. Add background/static vehicles last to tune density and readability.148149## Asset Families to Prioritize150151Use the object library in these practical groups:152- Furniture and interiors: tables, chairs, desks, sofas, beds, cabinets, kitchen and bathroom fixtures.153- Infrastructure: buildings, doors/windows, stairs, roads, intersections, street equipment.154- Industrial/factory: conveyors, pallets, crates, valves, tools, canisters.155- Nature: trees, plants, rocks, and static animals.156- Street furniture: benches, bus stops, bins, hydrants, kiosks, fences.157- Static/background vehicles and road context assets.158159## Pre-built Environments and Templates160161Start from pre-built worlds when layout speed matters:162- Basic arenas: `RectangleArena`, `CircleArena` PROTO floors.163- Indoor environments: apartment/kitchen/break-room style worlds.164- Outdoor environments: city, village, road/highway worlds.165- Sports: RoboCup-style soccer field and match worlds.166- Factory floors and industrial halls.167168Use the detailed world inventory in `references/humans_assets_reference.md`.169170## Validation Checklist171172Before finalizing scene composition:1731. Confirm all humans stand on contact surfaces without penetration.1742. Confirm animation scale and heading match ENU world axes.1753. Confirm pedestrian trajectory points remain navigable around obstacles.1764. Confirm static asset density preserves robot navigation corridors.1775. Confirm `TexturedBackground` and `TexturedBackgroundLight` textures match.1786. Confirm simulation remains real-time capable after asset expansion.179180## Reference File181182Load `references/humans_assets_reference.md` for:183- complete `CharacterSkin`, `Pedestrian`, and `C3dViewer` field references,184- full BVH utility C API,185- complete categorized object PROTO catalog,186- pre-built world environment index,187- textured background/light option matrix.