webots-humans-assets
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
CharacterSkinand BVH retargeting. - Add walking rigid humans through
Pedestrianand trajectory arguments. - Load biomechanics motion capture through
C3dViewer. - Populate worlds with the complete
projects/objectsPROTO 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
Skinnode 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
CharacterSkinfor mesh-based, bone-driven animation from BVH. - Use
Pedestrianfor lightweight scripted walking with path/speed args. - Use
C3dViewerfor marker-based biomechanics playback and analysis.
- Use
- 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: boyRobert: manSandra: womanSophia: girl
Practical notes:
- Treat
CharacterSkinas aSkin-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
pedestriancontroller. controllerArgstypically include:--trajectory=[x1 y1, x2 y2, ...]--speed=<m/s>--step=<controller step ms>
- Attach props through
leftHandSlotandrightHandSlot.
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,CircleArenaPROTO 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
TexturedBackgroundandTexturedBackgroundLighttextures match. - Confirm simulation remains real-time capable after asset expansion.
Reference File
Load references/humans_assets_reference.md for:
- complete
CharacterSkin,Pedestrian, andC3dViewerfield references, - full BVH utility C API,
- complete categorized object PROTO catalog,
- pre-built world environment index,
- textured background/light option matrix.
More from bowtiedswan/webots-skills
webots-physics
Use this skill when configuring physics simulation in Webots - ODE engine parameters, joints (HingeJoint, SliderJoint, BallJoint), collision detection, contact properties, fluid dynamics, physics plugins, damping, or performance tuning. Triggers on: webots physics, ODE, joint, HingeJoint, SliderJoint, collision, contact, friction, bounce, damping, fluid, buoyancy, physics plugin, ERP, CFM.
1webots-advanced
Use this skill for advanced Webots topics: ROS/ROS2 integration, transfer to real robots, numerical optimization, extern robot controllers, TCP/IP interfacing, performance optimization, known bugs/workarounds, plugin development (controller/robot window), building Webots from source, and multi-robot coordination. Triggers on: webots ROS, ROS2, webots_ros2, transfer to robot, extern controller, TCP/IP, optimization, known bugs, plugin, multi-robot, numerical optimization.
1webots-actuators
Use this skill when working with any Webots actuator - RotationalMotor, LinearMotor, Brake, LED, Display, Emitter, Speaker, Pen, Propeller, Connector, Muscle, or Track. Covers motor control modes (position, velocity, torque), actuator configuration, and command patterns. Triggers on: webots motor, setPosition, setVelocity, actuator, LED, display, emitter, propeller, brake, speaker, track.
1webots-proto
Use this skill when creating, modifying, or using PROTO nodes in Webots - reusable parameterized node templates for robots, objects, or environments. Covers PROTO definition syntax, field types, IS keyword, procedural PROTOs with JavaScript, scoping rules, and design guidelines. Triggers on: webots proto, .proto file, PROTO definition, IS keyword, parameterized node, reusable robot, procedural proto, custom node.
1webots-sensors
Use this skill when working with any Webots sensor - Camera, Lidar, DistanceSensor, GPS, Gyro, Accelerometer, InertialUnit, Compass, TouchSensor, RangeFinder, Radar, LightSensor, PositionSensor, Receiver, or Altimeter. Covers sensor configuration, enable/disable, reading values, and processing sensor data. Triggers on: webots sensor, camera, lidar, distance sensor, GPS, gyro, accelerometer, IMU, touch sensor, range finder, radar.
1webots-core
Use this skill when working with the Webots robotics simulation platform for installation, project setup, understanding core concepts (world files, nodes, scene tree, Robot/MjData equivalent), or basic simulation workflows. Triggers on: webots, robotics simulation, .wbt files, scene tree, WorldInfo, Viewpoint, simulation step, wb_robot_step.
1