| name | sit-on-furniture |
| description | Walks the character to a seat and sits ON it (couch, sofa, chair, dining chair, desk chair, stool, toilet) at the correct seat height and facing. Use whenever a command mentions sit, sit on, sit down on, take a seat, have a seat, plop down, perch, and a piece of furniture like couch, sofa, settee, chair, dining chair, desk chair, stool, bar stool, or toilet. (To sit in place exactly where you already are, use sit-and-stand; to lie down use lie-down-and-sleep.) |
| category | furniture |
| disable-model-invocation | true |
| subskills | ["sit-and-stand","walk","balance-and-posture"] |
sit-on-furniture
Sit ON a real piece of furniture. The trick: travel to the seat, then let the
engine seat the body — it knows each seat's height + facing, so it drops the
pelvis ONTO the seat. If you only flex the legs in place the body sits at standing
height (it "sits in the air"). Don't do that here.
How (one Action: moveTo a seat anchor + a sit pose)
- Pick the seat anchor from
state.seats (e.g. couchSeat, diningChair,
deskChair, stool, toiletSeat). Match it to the requested furniture; if a
close match isn't listed, the engine also fuzzy-matches ("couch"→couchSeat).
- Emit
moveTo:{ "target":"<seat anchor>" } to walk there.
- Emit the seated leg
pose (absolute local euler deg, XYZ):
LeftUpLeg:[90,0,0], LeftLeg:[90,0,0], RightUpLeg:[90,0,0], RightLeg:[90,0,0]
(UpLeg:[90,0,0] swings the thigh forward to horizontal; Leg:[90,0,0] drops
the shin straight down — the seated L-shape).
The ENGINE places the body: on arrival it sets the body to the seat's height and
facing and holds the sit pose. Do NOT add root.y — the engine owns the seat
height (an emitted drop is ignored for a seat anchor). Keep the torso upright
(leave Spine/Chest at rest) unless asked to slouch/lean.
Worked Actions (minified)
- "sit on the couch" →
{"durationMs":2200,"moveTo":{"target":"couchSeat"},"pose":{"LeftUpLeg":[90,0,0],"LeftLeg":[90,0,0],"RightUpLeg":[90,0,0],"RightLeg":[90,0,0]},"say":"Taking a seat."}
- "go sit at the dining table" →
{"durationMs":2600,"moveTo":{"target":"diningChair"},"pose":{"LeftUpLeg":[90,0,0],"LeftLeg":[90,0,0],"RightUpLeg":[90,0,0],"RightLeg":[90,0,0]},"say":"Sitting down to eat."}
- "have a seat on the stool" →
{"durationMs":2400,"moveTo":{"target":"stool"},"pose":{"LeftUpLeg":[90,0,0],"LeftLeg":[90,0,0],"RightUpLeg":[90,0,0],"RightLeg":[90,0,0]},"say":"Up on the stool."}
- "sit on the toilet" →
{"durationMs":2400,"moveTo":{"target":"toiletSeat"},"pose":{"LeftUpLeg":[90,0,0],"LeftLeg":[90,0,0],"RightUpLeg":[90,0,0],"RightLeg":[90,0,0]},"say":"One sec."}
- Optional forearm rest (hands on thighs): add
"LeftForearm":[20,0,0],"RightForearm":[20,0,0].
Notes
- Use a longer
durationMs (~2000–3000) since the body first walks to the seat.
- To get back up afterward, use get-up.
- For sitting cross-legged / on the FLOOR (no seat), use
sit-and-stand /
move-leg with a deeper root.y drop — there's no furniture to settle onto.