@nodaro/prompts 1.18.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +9861 -1414
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +209 -10
- package/dist/index.d.ts +209 -10
- package/dist/index.js +9199 -765
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/adult-only-ratchet.test.ts +18 -1
- package/src/__tests__/assemble-suno-input.test.ts +14 -1
- package/src/__tests__/character-motion-docs-example.test.ts +26 -0
- package/src/__tests__/character-motion-timing-catalogs.test.ts +76 -0
- package/src/__tests__/character-motion.test.ts +207 -0
- package/src/__tests__/fixtures/parameter-hint-golden.json +137 -1
- package/src/__tests__/hint-join.test.ts +57 -0
- package/src/__tests__/parameter-hint-mode.test.ts +28 -0
- package/src/__tests__/parameter-prompt-hint.test.ts +159 -0
- package/src/__tests__/parameter-registry-sync.test.ts +2 -0
- package/src/__tests__/picker-analyzer-registry.test.ts +1 -1
- package/src/__tests__/sound-aggregator.test.ts +1 -1
- package/src/__tests__/transition-timing-catalogs.test.ts +1 -1
- package/src/__tests__/video-reference-features.test.ts +10 -1
- package/src/age-floor.ts +1 -1
- package/src/assemble-suno-input.ts +3 -2
- package/src/camera-motions.ts +44 -42
- package/src/character-motion/animals-pets.ts +89 -0
- package/src/character-motion/athletic-stunts.ts +218 -0
- package/src/character-motion/camera-interaction.ts +137 -0
- package/src/character-motion/combat-weapons.ts +206 -0
- package/src/character-motion/dance.ts +173 -0
- package/src/character-motion/entrances-exits.ts +113 -0
- package/src/character-motion/evasive-falls.ts +134 -0
- package/src/character-motion/everyday-actions.ts +278 -0
- package/src/character-motion/face-expression.ts +182 -0
- package/src/character-motion/gestures.ts +308 -0
- package/src/character-motion/head-gestures.ts +98 -0
- package/src/character-motion/idle-ambient.ts +128 -0
- package/src/character-motion/posture-shifts.ts +143 -0
- package/src/character-motion/runway.ts +101 -0
- package/src/character-motion/stage-performance.ts +131 -0
- package/src/character-motion/turns-looks.ts +116 -0
- package/src/character-motion/two-person.ts +233 -0
- package/src/character-motion/types.ts +42 -0
- package/src/character-motion/unnatural-horror.ts +95 -0
- package/src/character-motion/vehicles-mounts.ts +101 -0
- package/src/character-motion/walks-runs.ts +125 -0
- package/src/character-motion.ts +286 -0
- package/src/factory-presets/music.ts +35 -35
- package/src/hint-join.ts +26 -0
- package/src/index.ts +2 -0
- package/src/parameter-prompt-hint.ts +67 -1
- package/src/picker-analyzer-registry.ts +9 -5
- package/src/picker-catalogs.ts +24 -0
- package/src/picker-wiring.ts +2 -0
- package/src/prompt-wizard-categories.ts +9 -5
- package/src/provider-prompt-doctrine.ts +1 -1
- package/src/sound-aggregator.ts +1 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { CharacterMotion } from "./types.js"
|
|
2
|
+
|
|
3
|
+
/** Stage & Performance — 42 entries. Category id `stage-performance`. */
|
|
4
|
+
export const STAGE_PERFORMANCE_MOTIONS: ReadonlyArray<CharacterMotion> = [
|
|
5
|
+
{ id: "sing-into-handheld-mic", label: "Sing Into Handheld Mic", category: "stage-performance", description: "Lifts the mic and sings, free hand riding the phrasing",
|
|
6
|
+
promptHint: "the subject lifts a handheld microphone to their mouth and sings into it, free hand rising and falling with the phrasing, weight shifting foot to foot with the beat",
|
|
7
|
+
term: "sings into a handheld mic" },
|
|
8
|
+
{ id: "sing-at-stand-mic", label: "Sing at Stand Mic", category: "stage-performance", description: "Steps up to a stand mic and leans in to sing",
|
|
9
|
+
promptHint: "the subject steps up to a stand microphone, wraps one hand around the stand and leans in close to the mic, singing with their chin lifted toward the crowd",
|
|
10
|
+
term: "sings into a stand mic" },
|
|
11
|
+
{ id: "belt-high-note", label: "Belt a High Note", category: "stage-performance", description: "Deep breath, head back, arm up on the big note",
|
|
12
|
+
promptHint: "the subject plants their feet, fills their chest with a deep breath and belts a high note, head tipping back, free arm rising to full extension before the note releases",
|
|
13
|
+
term: "belts a high note with head thrown back" },
|
|
14
|
+
{ id: "hold-note-eyes-closed", label: "Hold Note Eyes Closed", category: "stage-performance", description: "Eyes close, hand on chest, one long sustained note",
|
|
15
|
+
promptHint: "the subject closes their eyes, draws a breath and holds one long sustained note into the mic, a hand pressed flat over their chest until the note releases and their eyes open",
|
|
16
|
+
term: "holds a long note with eyes closed" },
|
|
17
|
+
{ id: "hold-mic-to-crowd", label: "Mic Out to Crowd", category: "stage-performance", description: "Holds the mic out so the audience sings the line",
|
|
18
|
+
promptHint: "the subject holds the handheld mic out toward the audience at arm's length, tilting it to the crowd and cupping the other hand to their ear to hear the line sung back",
|
|
19
|
+
term: "holds the mic out to the crowd" },
|
|
20
|
+
{ id: "rap-into-mic", label: "Rap Into the Mic", category: "stage-performance", description: "Raps into the mic, free hand chopping every bar",
|
|
21
|
+
promptHint: "the subject raps into a handheld mic, free hand chopping and bouncing in time with every bar, shoulders rocking and body leaning out toward the crowd on the punchlines",
|
|
22
|
+
term: "raps into the mic with a chopping hand" },
|
|
23
|
+
{ id: "strum-guitar", label: "Strum Guitar", category: "stage-performance", description: "Strums on the beat, fretting hand changing chords",
|
|
24
|
+
promptHint: "the subject strums a guitar slung across their body, strumming hand sweeping down across the strings on the beat while the fretting hand shifts between chords, head nodding with the rhythm",
|
|
25
|
+
term: "strums a guitar on the beat" },
|
|
26
|
+
{ id: "lean-into-guitar-solo", label: "Guitar Solo Lean", category: "stage-performance", description: "Arches back into a solo, fretting hand racing",
|
|
27
|
+
promptHint: "the subject leans back into a guitar solo, fretting hand racing up the neck as the picking hand tears across the strings, torso arching backward with one foot planted forward",
|
|
28
|
+
term: "leans back into a guitar solo" },
|
|
29
|
+
{ id: "drop-to-knee-solo", label: "Knee-Drop Solo", category: "stage-performance", description: "Drops to one knee mid-solo, then pushes back up",
|
|
30
|
+
promptHint: "the subject drops down onto one knee mid-solo, guitar neck tilted up toward the crowd, fretting hand climbing to the highest frets before they push back up to standing",
|
|
31
|
+
term: "drops to one knee mid-solo" },
|
|
32
|
+
{ id: "play-air-guitar", label: "Air Guitar", category: "stage-performance", description: "Grips an invisible neck, windmills the other hand",
|
|
33
|
+
promptHint: "the subject plays air guitar, one hand gripping an invisible neck while the other windmills across an invisible body, face contorting and knees bouncing with the riff",
|
|
34
|
+
term: "plays air guitar" },
|
|
35
|
+
{ id: "smash-guitar", label: "Smash Guitar", category: "stage-performance", description: "Raises the guitar overhead and smashes it into the stage",
|
|
36
|
+
promptHint: "the subject grips the guitar by the neck, raises it high overhead with both hands and swings it down hard into the stage floor, hoisting it up and smashing it down again before flinging the neck aside",
|
|
37
|
+
term: "smashes a guitar on the stage" },
|
|
38
|
+
{ id: "play-drums", label: "Play Drums", category: "stage-performance", description: "Sticks between snare and cymbals, foot on the kick",
|
|
39
|
+
promptHint: "the subject sits at a drum kit and plays, sticks alternating between snare and cymbals, one foot driving the kick pedal, shoulders rocking with the beat and hair swinging",
|
|
40
|
+
term: "plays the drums" },
|
|
41
|
+
{ id: "play-piano", label: "Play Piano", category: "stage-performance", description: "Both hands across the keys, body swaying",
|
|
42
|
+
promptHint: "the subject sits at a piano and plays, both hands moving across the keys, body swaying with the phrasing and head dipping toward the keyboard on the heavier chords",
|
|
43
|
+
term: "plays the piano" },
|
|
44
|
+
{ id: "play-violin", label: "Play Violin", category: "stage-performance", description: "Bow arm sweeps the strings, fingers walking the neck",
|
|
45
|
+
promptHint: "the subject tucks a violin under their chin and plays, bowing arm drawing the bow back and forth across the strings while the fingering hand walks up and down the neck, torso swaying with each phrase",
|
|
46
|
+
term: "plays the violin" },
|
|
47
|
+
{ id: "play-saxophone", label: "Play Saxophone", category: "stage-performance", description: "Fingers work the keys, bell dipping on the low notes",
|
|
48
|
+
promptHint: "the subject plays a saxophone hanging from a neck strap, fingers working the keys as their cheeks fill with each breath, leaning back on the high notes and dipping the bell forward on the low ones",
|
|
49
|
+
term: "plays the saxophone" },
|
|
50
|
+
{ id: "work-the-decks", label: "DJ at the Decks", category: "stage-performance", description: "Headphone to ear, other hand on the faders",
|
|
51
|
+
promptHint: "the subject works the DJ decks, one hand pressing a headphone cup to their ear while the other rides the mixer faders and cues the next track, head bobbing to the beat",
|
|
52
|
+
term: "works the decks with headphone to one ear" },
|
|
53
|
+
{ id: "conduct-orchestra", label: "Conduct Orchestra", category: "stage-performance", description: "Baton carves the beat, left hand swells and cuts",
|
|
54
|
+
promptHint: "the subject faces the orchestra and conducts, baton hand carving the beat pattern in the air while the other hand rises to swell the sound and drops to cut it off",
|
|
55
|
+
term: "conducts an orchestra with a baton" },
|
|
56
|
+
{ id: "walk-to-center-stage", label: "Walk to Center Stage", category: "stage-performance", description: "Walks from the wings to the mark, arms opening",
|
|
57
|
+
promptHint: "the subject walks from the wings out to center stage, steps steady and shoulders squared, stopping on the mark and opening both arms out toward the audience",
|
|
58
|
+
term: "walks out to center stage" },
|
|
59
|
+
{ id: "strut-down-runway", label: "Strut the Runway", category: "stage-performance", description: "Straight-line strut down the stage runway",
|
|
60
|
+
promptHint: "the subject struts down the stage runway toward the crowd, feet landing in a straight line and arms swinging with purpose, stopping at the end to face the audience",
|
|
61
|
+
term: "struts down the stage runway" },
|
|
62
|
+
{ id: "step-up-to-podium", label: "Step Up to Podium", category: "stage-performance", description: "Steps behind the lectern and grips both sides",
|
|
63
|
+
promptHint: "the subject walks up to a podium, steps onto the riser behind it and grips both sides of the lectern with their hands, squaring their shoulders and lifting their chin to face the room",
|
|
64
|
+
term: "steps up to the podium and grips it" },
|
|
65
|
+
{ id: "sit-on-stage-edge", label: "Sit on Stage Edge", category: "stage-performance", description: "Sits on the lip of the stage to sing the verse",
|
|
66
|
+
promptHint: "the subject walks to the lip of the stage, sits down on the edge with legs hanging over toward the crowd and sings the verse into the mic, leaning toward the front row",
|
|
67
|
+
term: "sits on the stage edge to sing" },
|
|
68
|
+
{ id: "raise-hands-to-crowd", label: "Raise Hands to Crowd", category: "stage-performance", description: "Both arms straight overhead, palms open",
|
|
69
|
+
promptHint: "the subject raises both arms straight overhead toward the crowd, palms open, holding them high while turning from one side of the audience to the other",
|
|
70
|
+
term: "raises both hands to the crowd" },
|
|
71
|
+
{ id: "hype-the-crowd", label: "Hype the Crowd", category: "stage-performance", description: "Claps overhead on the beat, urging the crowd",
|
|
72
|
+
promptHint: "the subject hypes the crowd, clapping both hands together above their head in time with the beat and bouncing on their toes, urging the audience to clap along",
|
|
73
|
+
term: "claps overhead to hype the crowd" },
|
|
74
|
+
{ id: "point-to-crowd", label: "Point to Crowd", category: "stage-performance", description: "Snaps a point into the crowd and sweeps it",
|
|
75
|
+
promptHint: "the subject snaps one arm out and points into the crowd, holding the point on one section of the audience before sweeping the finger across to the other side",
|
|
76
|
+
term: "points out into the crowd" },
|
|
77
|
+
{ id: "wave-to-crowd", label: "Wave to Crowd", category: "stage-performance", description: "Wide overhead wave across the whole audience",
|
|
78
|
+
promptHint: "the subject raises one arm high and waves to the crowd in wide side-to-side sweeps, turning their body to cover the whole audience from one side to the other",
|
|
79
|
+
term: "waves to the crowd" },
|
|
80
|
+
{ id: "blow-kisses-to-crowd", label: "Blow Kisses", category: "stage-performance", description: "Fingertips to lips, kisses thrown to each side",
|
|
81
|
+
promptHint: "the subject presses their fingertips to their lips and blows kisses out to the crowd, arm extending toward the audience with each one, alternating sides",
|
|
82
|
+
term: "blows kisses to the crowd" },
|
|
83
|
+
{ id: "hold-phone-light-aloft", label: "Phone Light Aloft", category: "stage-performance", description: "Phone held high, screen out, whole body swaying",
|
|
84
|
+
promptHint: "the subject raises one arm straight up with a phone held high, screen light facing the stage, and sways from side to side with the whole body while the other arm rests loosely at their side",
|
|
85
|
+
term: "holds a phone light aloft and sways" },
|
|
86
|
+
{ id: "jump-on-the-beat", label: "Jump on the Beat", category: "stage-performance", description: "Both feet off the stage on every downbeat",
|
|
87
|
+
promptHint: "the subject bounces on their toes and jumps straight up on every downbeat, both feet leaving the stage, one arm pumping overhead with each landing",
|
|
88
|
+
term: "jumps on the beat" },
|
|
89
|
+
{ id: "headbang-on-beat", label: "Headbang on Beat", category: "stage-performance", description: "Head whips down and up on every beat, hair flying",
|
|
90
|
+
promptHint: "the subject headbangs, whipping their head down toward their chest and back up on every beat, hair flying, shoulders driving the motion and knees bending with each drop",
|
|
91
|
+
term: "headbangs on the beat" },
|
|
92
|
+
{ id: "knee-slide-across-stage", label: "Knee Slide", category: "stage-performance", description: "Runs and drops into a knee slide across the stage",
|
|
93
|
+
promptHint: "the subject takes a few running steps and drops into a knee slide across the stage floor, both knees down, torso leaning back and arms thrown up, sliding to a stop facing the crowd",
|
|
94
|
+
term: "drops into a knee slide across the stage" },
|
|
95
|
+
{ id: "hit-dance-break", label: "Dance Break", category: "stage-performance", description: "Plants the mic and hits an eight-count for the crowd",
|
|
96
|
+
promptHint: "the subject plants the mic in its stand and hits a sharp dance break facing the crowd, arms and feet snapping through the eight-count in sync before returning to the mic",
|
|
97
|
+
term: "hits a dance break on stage" },
|
|
98
|
+
{ id: "freeze-on-the-drop", label: "Freeze on the Drop", category: "stage-performance", description: "Snaps into a pose on the drop and holds it dead still",
|
|
99
|
+
promptHint: "the subject dances loosely on the beat, arms and hips swinging, and on the drop snaps into a sharp pose, every limb frozen dead still, holding the freeze before releasing back into motion",
|
|
100
|
+
term: "freezes in a pose on the drop" },
|
|
101
|
+
{ id: "spin-mic-stand", label: "Spin the Mic Stand", category: "stage-performance", description: "Swings the stand a full circle and catches it",
|
|
102
|
+
promptHint: "the subject grabs the mic stand by the shaft, swings it around in a full circle with one hand and catches it upright, leaning straight back in to sing into the mic",
|
|
103
|
+
term: "spins the mic stand" },
|
|
104
|
+
{ id: "drop-the-mic", label: "Mic Drop", category: "stage-performance", description: "Holds the mic out, opens the hand, lets it fall",
|
|
105
|
+
promptHint: "the subject finishes the last line, holds the handheld mic out to the side at arm's length, opens their hand and lets it fall to the stage floor before turning away",
|
|
106
|
+
term: "drops the mic" },
|
|
107
|
+
{ id: "jump-into-crowd", label: "Jump Into Crowd", category: "stage-performance", description: "Feet-first leap off the stage edge into the crowd",
|
|
108
|
+
promptHint: "the subject runs to the lip of the stage and leaps feet-first off the edge into the crowd, arms flung wide, landing on the raised hands of the audience",
|
|
109
|
+
term: "leaps off the stage into the crowd" },
|
|
110
|
+
{ id: "stage-dive", label: "Stage Dive", category: "stage-performance", description: "Horizontal dive onto the crowd's raised hands",
|
|
111
|
+
promptHint: "the subject launches horizontally off the front of the stage in a stage dive, arms spread and body flat, dropping onto the raised hands of the front row",
|
|
112
|
+
term: "dives off the stage onto the crowd" },
|
|
113
|
+
{ id: "crowd-surf", label: "Crowd Surf", category: "stage-performance", description: "Carried on their back hand to hand over the audience",
|
|
114
|
+
promptHint: "the subject crowd surfs on their back across the audience, arms spread wide and legs loose, carried and rolled hand to hand over the sea of raised arms, head lifting to look toward the stage",
|
|
115
|
+
term: "crowd surfs" },
|
|
116
|
+
{ id: "bow-to-audience", label: "Bow to Audience", category: "stage-performance", description: "Deep bow from the waist at the front of the stage",
|
|
117
|
+
promptHint: "the subject steps forward to the front of the stage, one hand across their stomach, and bows deeply from the waist to the audience, rising back up with a smile",
|
|
118
|
+
term: "bows to the audience" },
|
|
119
|
+
{ id: "take-curtain-call", label: "Curtain Call", category: "stage-performance", description: "Returns through the curtain, bows, credits the band",
|
|
120
|
+
promptHint: "the subject walks back out through the curtain for a curtain call, arms spread wide to the applause, takes a bow and gestures back toward the band behind them",
|
|
121
|
+
term: "takes a curtain call" },
|
|
122
|
+
{ id: "walk-off-waving", label: "Walk Off Waving", category: "stage-performance", description: "Exits toward the wings waving over the shoulder",
|
|
123
|
+
promptHint: "the subject turns away from the crowd and walks off stage toward the wings, one arm raised high and waving back over their shoulder until they pass out of view",
|
|
124
|
+
term: "walks off stage waving" },
|
|
125
|
+
{ id: "share-mic-duet", label: "Share a Mic", category: "stage-performance", description: "Two singers lean in on one mic for the chorus",
|
|
126
|
+
promptHint: "the subject and the partner lean in toward one shared handheld mic from opposite sides, shoulders touching, singing the chorus together and pulling apart on the final note",
|
|
127
|
+
term: "shares one mic with the partner", twoPerson: true },
|
|
128
|
+
{ id: "shred-back-to-back", label: "Back-to-Back Solo", category: "stage-performance", description: "Two guitarists press backs together and shred",
|
|
129
|
+
promptHint: "the subject and the partner press their backs together and play a dual guitar solo, both leaning into each other for support as their fretting hands race up the necks",
|
|
130
|
+
term: "shreds guitar back to back with the partner", twoPerson: true },
|
|
131
|
+
]
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { CharacterMotion } from "./types.js"
|
|
2
|
+
|
|
3
|
+
/** Turns & Looks — 37 entries. Category id `turns-looks`. */
|
|
4
|
+
export const TURNS_LOOKS_MOTIONS: ReadonlyArray<CharacterMotion> = [
|
|
5
|
+
{ id: "turn-to-camera", label: "Body Turn to Camera", category: "turns-looks", description: "Full body turn from back to front, ending square to camera",
|
|
6
|
+
promptHint: "the subject turns from back-to-camera around to face front, stepping the feet through the rotation, shoulders squaring to the camera and weight settling evenly on both feet",
|
|
7
|
+
term: "turns around to face camera" },
|
|
8
|
+
{ id: "turn-away-from-camera", label: "Body Turn Away", category: "turns-looks", description: "Full body turn from front to back, ending facing away",
|
|
9
|
+
promptHint: "the subject rotates the whole body away from the camera until the back is to the lens, the feet stepping through the turn and the head following last",
|
|
10
|
+
term: "turns away from camera" },
|
|
11
|
+
{ id: "quarter-turn-to-profile", label: "Quarter Turn to Profile", category: "turns-looks", description: "Body rotates a quarter turn from front to a side profile",
|
|
12
|
+
promptHint: "the subject rotates the body a quarter turn from square-to-camera to one side, ending in a clean side profile with the feet realigned and the gaze forward along the new facing",
|
|
13
|
+
term: "quarter-turns to profile" },
|
|
14
|
+
{ id: "turn-profile-to-camera", label: "Turn Profile to Camera", category: "turns-looks", description: "Side profile rotates to face the camera square-on",
|
|
15
|
+
promptHint: "the subject rotates from side profile toward the camera, the near shoulder opening first and the face coming around last, until the subject is square to the lens",
|
|
16
|
+
term: "turns from profile to camera" },
|
|
17
|
+
{ id: "spin-full-360", label: "Full 360 Spin", category: "turns-looks", description: "One complete rotation on the spot, ending facing camera",
|
|
18
|
+
promptHint: "the subject rotates a full circle on the spot, arms held loose and hair and clothing fanning outward, and comes to a stop facing the camera again",
|
|
19
|
+
term: "spins a full 360 on the spot" },
|
|
20
|
+
{ id: "pivot-on-heel", label: "Pivot on Heel", category: "turns-looks", description: "Sharp about-face pivoting on one heel",
|
|
21
|
+
promptHint: "the subject plants weight on one heel and pivots the whole body a sharp half turn to face the opposite way, the free foot swinging around to land beside the other",
|
|
22
|
+
term: "pivots on heel to face opposite way" },
|
|
23
|
+
{ id: "twist-to-look-behind", label: "Twist to Look Behind", category: "turns-looks", description: "Torso twists and head turns to check what is behind",
|
|
24
|
+
promptHint: "the subject twists the torso and turns the head to look behind, one foot stepping back to open the stance, and holds the look on whatever is behind",
|
|
25
|
+
term: "twists torso to look behind" },
|
|
26
|
+
{ id: "turn-to-face-partner", label: "Turn to Face Partner", category: "turns-looks", description: "Body turns to square off face to face with a partner",
|
|
27
|
+
promptHint: "the subject turns the body toward the partner, feet shifting and shoulders squaring off, until the subject and the partner stand face to face",
|
|
28
|
+
term: "turns to face the partner", twoPerson: true },
|
|
29
|
+
{ id: "turn-head-to-camera", label: "Turn Head to Camera", category: "turns-looks", description: "Head-only turn from the side to face the camera",
|
|
30
|
+
promptHint: "the subject rotates the head on the neck from one side to the camera in one continuous motion until the face is square to the lens, the eyes arriving on the lens last",
|
|
31
|
+
term: "turns head to camera" },
|
|
32
|
+
{ id: "snap-head-to-camera", label: "Snap Head to Camera", category: "turns-looks", description: "Head whips to camera in one sharp jerk, body still",
|
|
33
|
+
promptHint: "the subject whips the head from off to one side around to the camera in a single sharp jerk, the body staying still and the eyes locking straight at the lens",
|
|
34
|
+
term: "snaps head to camera" },
|
|
35
|
+
{ id: "turn-head-away", label: "Turn Head Away", category: "turns-looks", description: "Head-only turn from camera to a side profile",
|
|
36
|
+
promptHint: "the subject rotates the head from the camera to one side until the profile is presented, the gaze leaving the lens and the shoulders staying square",
|
|
37
|
+
term: "turns head away from camera" },
|
|
38
|
+
{ id: "look-over-left-shoulder", label: "Look Over Left Shoulder", category: "turns-looks", description: "Head turns over the left shoulder toward camera",
|
|
39
|
+
promptHint: "the subject turns the head to look back over the left shoulder while keeping the back to the camera, until the face comes into view in three-quarter profile, the body staying put",
|
|
40
|
+
term: "looks back over left shoulder" },
|
|
41
|
+
{ id: "look-over-right-shoulder", label: "Look Over Right Shoulder", category: "turns-looks", description: "Head turns over the right shoulder toward camera",
|
|
42
|
+
promptHint: "the subject turns the head to look back over the right shoulder while keeping the back to the camera, until the face comes into view in three-quarter profile, the body staying put",
|
|
43
|
+
term: "looks back over right shoulder" },
|
|
44
|
+
{ id: "glance-back", label: "Glance Back", category: "turns-looks", description: "Brief check over the shoulder, then back to front",
|
|
45
|
+
promptHint: "the subject flicks the head over one shoulder to check behind, the eyes catching something, and returns the head to face front again",
|
|
46
|
+
term: "glances back over shoulder" },
|
|
47
|
+
{ id: "double-take", label: "Double Take", category: "turns-looks", description: "Look away, then snap back to it in disbelief",
|
|
48
|
+
promptHint: "the subject glances at something, looks away, and snaps the head back to it as the eyes widen in a classic double take, the body going still",
|
|
49
|
+
term: "does a double take" },
|
|
50
|
+
{ id: "chin-lift-to-camera", label: "Chin Lift to Camera", category: "turns-looks", description: "Chin rises from a lowered head to meet the camera",
|
|
51
|
+
promptHint: "the subject raises the chin from a lowered head and lifts the gaze to meet the camera directly, the neck extending and the eyes landing on the lens",
|
|
52
|
+
term: "lifts chin and eyes to camera" },
|
|
53
|
+
{ id: "scan-surroundings", label: "Scan Surroundings", category: "turns-looks", description: "Head sweeps side to side, eyes checking the space",
|
|
54
|
+
promptHint: "the subject sweeps the gaze across the surroundings, the head turning from one side to the other in a continuous scan, the eyes checking each point before coming to rest",
|
|
55
|
+
term: "scans the surroundings" },
|
|
56
|
+
{ id: "head-follows-across-frame", label: "Head Follows Across Frame", category: "turns-looks", description: "Head turns to track something crossing the frame",
|
|
57
|
+
promptHint: "the subject turns the head to follow something passing in front, tracking it from one side of the frame to the other, and holds the gaze where it exits",
|
|
58
|
+
term: "turns head to track something passing" },
|
|
59
|
+
{ id: "look-at-partner", label: "Look at Partner", category: "turns-looks", description: "Head-only turn to meet a partner's eyes",
|
|
60
|
+
promptHint: "the subject turns the head toward the partner, the eyes finding the partner's face and holding there while the body stays still",
|
|
61
|
+
term: "turns head to look at the partner", twoPerson: true },
|
|
62
|
+
{ id: "sultry-look-over-shoulder", label: "Sultry Over-Shoulder Look", category: "turns-looks", description: "Seductive over-the-shoulder look back at camera",
|
|
63
|
+
promptHint: "the subject keeps the body facing away and turns the head over one shoulder toward the camera with lowered eyelids and a knowing half-smile, the chin dipping toward the shoulder as the gaze lands",
|
|
64
|
+
term: "throws a sultry look over the shoulder", adultOnly: true },
|
|
65
|
+
{ id: "look-up", label: "Look Up", category: "turns-looks", description: "Gaze lifts from the ground to above the frame",
|
|
66
|
+
promptHint: "the subject lifts the gaze from the ground to above the top of the frame, tipping the head back so the chin rises and the throat lengthens, and holds the upward look",
|
|
67
|
+
term: "looks up" },
|
|
68
|
+
{ id: "look-down", label: "Look Down", category: "turns-looks", description: "Gaze drops from level to the ground",
|
|
69
|
+
promptHint: "the subject drops the gaze from level to the ground, lowering the chin toward the chest until the eyes settle on the floor, the shoulders softening",
|
|
70
|
+
term: "looks down" },
|
|
71
|
+
{ id: "look-off-screen-left", label: "Look Off Left", category: "turns-looks", description: "Head and eyes turn to something out of frame left",
|
|
72
|
+
promptHint: "the subject turns the head and eyes toward frame left to fix on something out of frame on that side, the body staying square to camera",
|
|
73
|
+
term: "looks off-screen left" },
|
|
74
|
+
{ id: "look-off-screen-right", label: "Look Off Right", category: "turns-looks", description: "Head and eyes turn to something out of frame right",
|
|
75
|
+
promptHint: "the subject turns the head and eyes toward frame right to fix on something out of frame on that side, the body staying square to camera",
|
|
76
|
+
term: "looks off-screen right" },
|
|
77
|
+
{ id: "eyes-track-across-frame", label: "Eyes Track Across Frame", category: "turns-looks", description: "Eyes follow something across frame, head nearly still",
|
|
78
|
+
promptHint: "the subject keeps the head nearly still while the eyes follow something moving across the frame from one side to the other, the head drifting only slightly to keep pace",
|
|
79
|
+
term: "tracks something across frame with eyes only" },
|
|
80
|
+
{ id: "eyes-flick-to-camera", label: "Flick Eyes to Camera", category: "turns-looks", description: "Only the eyes move to lock onto the camera",
|
|
81
|
+
promptHint: "the subject keeps the head turned slightly off and still and shifts only the eyes to the camera, the gaze locking straight down the lens without the head moving",
|
|
82
|
+
term: "flicks eyes to camera" },
|
|
83
|
+
{ id: "side-eye-glance", label: "Side-Eye Glance", category: "turns-looks", description: "Eyes slide sideways without turning the head",
|
|
84
|
+
promptHint: "the subject keeps the head facing forward and slides the eyes hard to one side toward something off-frame without turning the head, holding the sidelong look",
|
|
85
|
+
term: "throws a side-eye glance" },
|
|
86
|
+
{ id: "break-eye-contact", label: "Break Eye Contact", category: "turns-looks", description: "Held eye contact drops away, face turning aside",
|
|
87
|
+
promptHint: "the subject drops the eyes from the camera and turns the face slightly aside, breaking the look and settling the gaze somewhere low and away",
|
|
88
|
+
term: "breaks eye contact" },
|
|
89
|
+
{ id: "tilt-head-curiously", label: "Tilt Head Curiously", category: "turns-looks", description: "Head tips toward one shoulder, eyes staying on the target",
|
|
90
|
+
promptHint: "the subject tips the head toward one shoulder in a curious tilt, the ear dropping toward the shoulder while the eyes stay fixed on what is in front, and holds the tilt",
|
|
91
|
+
term: "tilts head curiously to one side" },
|
|
92
|
+
{ id: "peek-around-corner", label: "Peek Around Corner", category: "turns-looks", description: "Leans the head out past an edge to check, body stays hidden",
|
|
93
|
+
promptHint: "the subject leans the upper body sideways to bring one eye and the edge of the face past a corner, one hand braced on the wall, the feet staying planted behind cover",
|
|
94
|
+
term: "leans out to peek around a corner" },
|
|
95
|
+
{ id: "look-back-and-forth", label: "Look Back and Forth", category: "turns-looks", description: "Head swings between two points, weighing them up",
|
|
96
|
+
promptHint: "the subject swings the head from one point to another and back again in repeated turns, the eyes landing on each in turn as if weighing them up, the body staying still",
|
|
97
|
+
term: "looks back and forth between two points" },
|
|
98
|
+
{ id: "snap-look-toward-sound", label: "Snap Head Toward Sound", category: "turns-looks", description: "Head snaps toward an off-screen noise, body freezing",
|
|
99
|
+
promptHint: "the subject snaps the head toward an off-screen sound in one sharp turn, the body going still and the eyes fixing hard on the direction it came from",
|
|
100
|
+
term: "snaps head toward an off-screen sound" },
|
|
101
|
+
{ id: "look-partner-up-and-down", label: "Look Partner Over", category: "turns-looks", description: "Once-over of the partner, eyes traveling down then up",
|
|
102
|
+
promptHint: "the subject runs the eyes down the partner from face to feet and back up again in one deliberate once-over, the head dipping and lifting to follow, the body staying still",
|
|
103
|
+
term: "looks the partner up and down", twoPerson: true },
|
|
104
|
+
{ id: "look-at-own-hands", label: "Look at Own Hands", category: "turns-looks", description: "Raises both hands and stares at them in realization",
|
|
105
|
+
promptHint: "the subject raises both hands into view in front of the face, palms turning up and over, and stares at them with the eyes widening, the head dropping slightly to study them",
|
|
106
|
+
term: "stares at own raised hands" },
|
|
107
|
+
{ id: "push-back-hood-reveal", label: "Push Back Hood", category: "turns-looks", description: "Hood slides back and the face lifts into view",
|
|
108
|
+
promptHint: "the subject reaches up with both hands and pushes the hood back off the head, the fabric sliding down onto the shoulders as the chin lifts and the face rises into view",
|
|
109
|
+
term: "pushes back hood and lifts face" },
|
|
110
|
+
{ id: "peer-over-glasses", label: "Peer Over Glasses", category: "turns-looks", description: "Glasses slide down the nose, eyes look over the rims",
|
|
111
|
+
promptHint: "the subject hooks one finger on the bridge of the glasses and slides them down the nose, the chin dipping so the eyes look out over the top of the rims",
|
|
112
|
+
term: "pulls glasses down and peers over them" },
|
|
113
|
+
{ id: "peer-through-door-crack", label: "Peer Through Door Crack", category: "turns-looks", description: "Door opens a crack and one eye looks through the gap",
|
|
114
|
+
promptHint: "the subject eases the door open a narrow crack with one hand and brings the face to the gap, one eye peering through while the rest of the body stays behind the door",
|
|
115
|
+
term: "opens door a crack and peers through" },
|
|
116
|
+
]
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import type { CharacterMotion } from "./types.js"
|
|
2
|
+
|
|
3
|
+
/** Two-Person — 76 entries. Category id `two-person`. */
|
|
4
|
+
export const TWO_PERSON_MOTIONS: ReadonlyArray<CharacterMotion> = [
|
|
5
|
+
{ id: "hug-partner", label: "Hug", category: "two-person", description: "Steps in, wraps arms around the partner, releases",
|
|
6
|
+
promptHint: "the subject steps toward the partner, opens both arms and wraps them around the partner's back in a firm hug, holds the hug, and loosens the arms to step back",
|
|
7
|
+
term: "hugs the partner", twoPerson: true },
|
|
8
|
+
{ id: "embrace-partner", label: "Long Embrace", category: "two-person", description: "Full hold, chin on shoulder, swaying, no release",
|
|
9
|
+
promptHint: "the subject draws the partner into a full embrace, arms wrapped around the partner's back, chin resting on the partner's shoulder, both bodies swaying side to side as the hold continues without releasing",
|
|
10
|
+
term: "holds the partner in a long embrace", twoPerson: true },
|
|
11
|
+
{ id: "hug-partner-from-behind", label: "Hug From Behind", category: "two-person", description: "Arms around the waist, chin on the shoulder",
|
|
12
|
+
promptHint: "the subject walks up behind the partner, slides both arms around the partner's waist and rests the chin on the partner's shoulder, the partner leaning back into the hold",
|
|
13
|
+
term: "hugs the partner from behind", adultOnly: true, twoPerson: true },
|
|
14
|
+
{ id: "bro-hug", label: "Bro Hug", category: "two-person", description: "Handshake pulled into a one-arm hug with a pat",
|
|
15
|
+
promptHint: "the subject clasps the partner's hand in a handshake, pulls the partner in by that hand and wraps the free arm around the partner's back with a pat, then releases and steps back",
|
|
16
|
+
term: "pulls the partner into a one-arm hug", twoPerson: true },
|
|
17
|
+
{ id: "run-into-partner-arms", label: "Run Into Arms", category: "two-person", description: "Runs, leaps, and is caught in a lifted hug",
|
|
18
|
+
promptHint: "the subject runs toward the partner, leaps in the final stride and wraps arms around the partner's neck, and the partner catches the subject and holds the lifted hug",
|
|
19
|
+
term: "runs and leaps into the partner's arms", twoPerson: true },
|
|
20
|
+
{ id: "bury-face-in-partner-shoulder", label: "Bury Face", category: "two-person", description: "Face pressed into the partner's shoulder, gripping",
|
|
21
|
+
promptHint: "the subject steps into the partner and buries the face against the partner's shoulder, shoulders heaving, hands gripping the back of the partner's clothing as the partner's arms close around",
|
|
22
|
+
term: "buries face in the partner's shoulder", twoPerson: true },
|
|
23
|
+
{ id: "shake-partner-hand", label: "Handshake", category: "two-person", description: "Extends a hand, grips and pumps twice, lets go",
|
|
24
|
+
promptHint: "the subject extends the right hand toward the partner, the partner grips it, and the two pump the clasped hands up and down twice before letting go and dropping the arms",
|
|
25
|
+
term: "shakes hands with the partner", twoPerson: true },
|
|
26
|
+
{ id: "high-five-partner", label: "High Five", category: "two-person", description: "Raised open palms slap together and rebound",
|
|
27
|
+
promptHint: "the subject raises an open hand above shoulder height and swings it forward to slap palms with the partner's raised hand in a crisp high five, both hands rebounding after contact",
|
|
28
|
+
term: "high-fives the partner", twoPerson: true },
|
|
29
|
+
{ id: "fist-bump-partner", label: "Fist Bump", category: "two-person", description: "Knuckles meet at chest height with a light tap",
|
|
30
|
+
promptHint: "the subject makes a fist and extends it forward at chest height, the partner's fist meets it knuckle to knuckle with a light tap, and both fists pull back",
|
|
31
|
+
term: "fist-bumps the partner", twoPerson: true },
|
|
32
|
+
{ id: "chest-bump-partner", label: "Chest Bump", category: "two-person", description: "Both hop in and bump chests mid-air",
|
|
33
|
+
promptHint: "the subject hops toward the partner with the chest thrust forward, the partner hopping to meet it, the two bumping chest to chest in mid-air and landing back on their feet",
|
|
34
|
+
term: "chest bumps the partner", twoPerson: true },
|
|
35
|
+
{ id: "pinky-promise", label: "Pinky Promise", category: "two-person", description: "Little fingers hook and shake once",
|
|
36
|
+
promptHint: "the subject raises one hand with the little finger extended, the partner hooks a little finger around it, and the two shake the linked fingers up and down once",
|
|
37
|
+
term: "hooks pinkies with the partner", twoPerson: true },
|
|
38
|
+
{ id: "bow-to-partner", label: "Bow to Partner", category: "two-person", description: "Bends from the waist, the partner returns the bow",
|
|
39
|
+
promptHint: "the subject faces the partner, brings the feet together and bends forward from the waist in a respectful bow, holds it, and straightens as the partner returns the bow",
|
|
40
|
+
term: "bows to the partner", twoPerson: true },
|
|
41
|
+
{ id: "toast-with-partner", label: "Toast", category: "two-person", description: "Glasses raised and clinked, then a drink",
|
|
42
|
+
promptHint: "the subject raises a glass toward the partner, the partner lifts a glass to meet it, and the two glasses clink at chest height before each pulls the glass back to drink",
|
|
43
|
+
term: "clinks glasses with the partner", twoPerson: true },
|
|
44
|
+
{ id: "kiss-partner-cheek", label: "Kiss on the Cheek", category: "two-person", description: "Leans in, kisses the partner's cheek, leans back",
|
|
45
|
+
promptHint: "the subject leans in toward the partner, tilts the head slightly, presses a kiss to the partner's cheek, and leans back upright",
|
|
46
|
+
term: "kisses the partner on the cheek", twoPerson: true },
|
|
47
|
+
{ id: "kiss-partner-forehead", label: "Forehead Kiss", category: "two-person", description: "Tilts the partner's head down, kisses the forehead",
|
|
48
|
+
promptHint: "the subject draws the partner in, tilts the partner's head down slightly with one hand and presses a kiss to the partner's forehead, then leans back",
|
|
49
|
+
term: "kisses the partner's forehead", twoPerson: true },
|
|
50
|
+
{ id: "lean-in-almost-kiss", label: "Almost Kiss", category: "two-person", description: "Leans in until lips nearly touch, and holds there",
|
|
51
|
+
promptHint: "the subject leans in toward the partner until the lips are a breath apart, eyes dropping to the partner's mouth, and holds there without closing the last inch",
|
|
52
|
+
term: "almost kisses the partner", adultOnly: true, twoPerson: true },
|
|
53
|
+
{ id: "kiss-partner", label: "Kiss", category: "two-person", description: "Leans in, kisses the partner on the lips, parts",
|
|
54
|
+
promptHint: "the subject leans in toward the partner, tilts the head and presses the lips to the partner's lips in a kiss, eyes closing, then eases back until the two part",
|
|
55
|
+
term: "kisses the partner", adultOnly: true, twoPerson: true },
|
|
56
|
+
{ id: "rise-on-tiptoes-to-kiss-partner", label: "Tiptoe Kiss", category: "two-person", description: "Rises on tiptoes to reach a taller partner's lips",
|
|
57
|
+
promptHint: "the subject rises onto tiptoes in front of the partner, hands on the partner's shoulders for balance, and presses a kiss up to the partner's lips before settling back onto flat feet",
|
|
58
|
+
term: "rises on tiptoes to kiss the partner", adultOnly: true, twoPerson: true },
|
|
59
|
+
{ id: "cup-partner-face", label: "Cup Face", category: "two-person", description: "Both palms cup the partner's cheeks, holding the gaze",
|
|
60
|
+
promptHint: "the subject raises both hands to the partner's face and cups the cheeks in the palms, thumbs resting below the partner's eyes, holding the partner's gaze",
|
|
61
|
+
term: "cups the partner's face", twoPerson: true },
|
|
62
|
+
{ id: "lift-partner-chin", label: "Lift Chin", category: "two-person", description: "A curled finger tilts the partner's lowered face up",
|
|
63
|
+
promptHint: "the subject slides one curled finger under the partner's chin and lifts it until the partner's lowered face tilts up to meet the subject's eyes",
|
|
64
|
+
term: "lifts the partner's chin", twoPerson: true },
|
|
65
|
+
{ id: "tuck-partner-hair-behind-ear", label: "Tuck Partner's Hair Back", category: "two-person", description: "Catches a loose strand and tucks it behind the ear",
|
|
66
|
+
promptHint: "the subject reaches up with one hand, catches a loose strand of the partner's hair with the fingertips and tucks it back behind the partner's ear, the hand lingering at the temple",
|
|
67
|
+
term: "tucks the partner's hair behind the ear", twoPerson: true },
|
|
68
|
+
{ id: "wipe-partner-tear", label: "Wipe Away a Tear", category: "two-person", description: "Thumb brushes a tear from the partner's cheek",
|
|
69
|
+
promptHint: "the subject raises one hand to the partner's face and brushes a tear from the partner's cheek with the thumb, the palm resting against the partner's jaw as the partner looks up",
|
|
70
|
+
term: "wipes a tear from the partner's cheek", twoPerson: true },
|
|
71
|
+
{ id: "touch-foreheads-with-partner", label: "Forehead Touch", category: "two-person", description: "Foreheads rest together, eyes closed, holding still",
|
|
72
|
+
promptHint: "the subject leans in until the foreheads rest together, both closing their eyes, the subject's hands on the partner's shoulders, the two holding still together",
|
|
73
|
+
term: "touches foreheads with the partner", twoPerson: true },
|
|
74
|
+
{ id: "rest-head-on-partner-shoulder", label: "Head on Shoulder", category: "two-person", description: "Leans sideways, head settling on the partner's shoulder",
|
|
75
|
+
promptHint: "the subject leans sideways toward the partner and lowers the head until it rests on the partner's shoulder, eyes closing, the partner's cheek settling against the top of the subject's head",
|
|
76
|
+
term: "rests head on the partner's shoulder", twoPerson: true },
|
|
77
|
+
{ id: "rest-head-in-partner-lap", label: "Head in Lap", category: "two-person", description: "Lies down and rests the head in the partner's lap",
|
|
78
|
+
promptHint: "the subject lies down sideways along a seat and lowers the head to rest in the partner's lap, face turned upward, the partner's hand settling on the subject's hair",
|
|
79
|
+
term: "rests head in the partner's lap", twoPerson: true },
|
|
80
|
+
{ id: "hold-partner-hand", label: "Hold Hands", category: "two-person", description: "Finds the partner's hand and laces fingers",
|
|
81
|
+
promptHint: "the subject reaches sideways, finds the partner's hand and laces the fingers together, the joined hands settling between them as the two stand side by side",
|
|
82
|
+
term: "holds hands with the partner", twoPerson: true },
|
|
83
|
+
{ id: "walk-hand-in-hand", label: "Walk Hand in Hand", category: "two-person", description: "Walks beside the partner with hands clasped",
|
|
84
|
+
promptHint: "the subject walks forward beside the partner with their hands clasped between them, the joined arms swinging lightly with each matched step",
|
|
85
|
+
term: "walks hand in hand with the partner", twoPerson: true },
|
|
86
|
+
{ id: "walk-arm-in-arm", label: "Walk Arm in Arm", category: "two-person", description: "Arms linked at the elbow, walking in step",
|
|
87
|
+
promptHint: "the subject hooks one arm through the partner's arm at the elbow and the two walk forward in step together, shoulders close, arms linked the whole way",
|
|
88
|
+
term: "walks arm in arm with the partner", twoPerson: true },
|
|
89
|
+
{ id: "lead-partner-by-hand", label: "Lead by the Hand", category: "two-person", description: "Walks ahead pulling the partner along by the hand",
|
|
90
|
+
promptHint: "the subject takes the partner's hand and walks ahead, arm stretched back, pulling the partner along a half step behind as the two move forward together",
|
|
91
|
+
term: "leads the partner by the hand", twoPerson: true },
|
|
92
|
+
{ id: "bump-shoulders-walking", label: "Shoulder Bump", category: "two-person", description: "Playful sideways nudge while walking together",
|
|
93
|
+
promptHint: "the subject walks beside the partner and leans sideways to knock shoulders with the partner in a playful nudge, both rocking apart and settling back into stride",
|
|
94
|
+
term: "bumps shoulders with the partner while walking", twoPerson: true },
|
|
95
|
+
{ id: "sit-down-together", label: "Sit Down Together", category: "two-person", description: "Both sit down side by side, shoulder to shoulder",
|
|
96
|
+
promptHint: "the subject sits down on a seat and the partner sits down beside the subject, both settling shoulder to shoulder and facing the same direction",
|
|
97
|
+
term: "sits down beside the partner", twoPerson: true },
|
|
98
|
+
{ id: "pull-out-chair-for-partner", label: "Pull Out Chair", category: "two-person", description: "Draws a chair out and slides it in as the partner sits",
|
|
99
|
+
promptHint: "the subject steps to a chair, grips its back and draws it out from the table, and slides it back in under the partner as the partner sits down",
|
|
100
|
+
term: "pulls out a chair for the partner", twoPerson: true },
|
|
101
|
+
{ id: "hold-door-for-partner", label: "Hold the Door", category: "two-person", description: "Opens a door and holds it as the partner walks through",
|
|
102
|
+
promptHint: "the subject reaches the door first, pulls it open and steps aside holding it with one arm extended, and the partner walks through ahead of the subject",
|
|
103
|
+
term: "holds the door for the partner", twoPerson: true },
|
|
104
|
+
{ id: "drape-jacket-over-partner", label: "Drape Jacket", category: "two-person", description: "Shrugs off a jacket and drapes it over the partner",
|
|
105
|
+
promptHint: "the subject shrugs off a jacket, holds it open by the shoulders and drapes it over the partner's shoulders from behind, smoothing it down the partner's arms",
|
|
106
|
+
term: "drapes a jacket over the partner's shoulders", twoPerson: true },
|
|
107
|
+
{ id: "straighten-partner-tie", label: "Straighten Partner's Tie", category: "two-person", description: "Centers the partner's tie knot and smooths it flat",
|
|
108
|
+
promptHint: "the subject steps in front of the partner, takes the knot of the partner's tie in both hands, centers it with a small tug and smooths the tie flat down the partner's chest",
|
|
109
|
+
term: "straightens the partner's tie", twoPerson: true },
|
|
110
|
+
{ id: "feed-partner-a-bite", label: "Feed a Bite", category: "two-person", description: "Lifts a bite to the partner's mouth, hand cupped below",
|
|
111
|
+
promptHint: "the subject lifts a bite of food toward the partner's mouth with one hand, the other hand cupped beneath to catch drips, and the partner leans in to take the bite",
|
|
112
|
+
term: "feeds the partner a bite", twoPerson: true },
|
|
113
|
+
{ id: "hand-partner-object", label: "Hand Over Object", category: "two-person", description: "Holds out an object, the partner takes it",
|
|
114
|
+
promptHint: "the subject holds out an object toward the partner with one hand, the partner reaches to take it, and the subject lets go once the partner's grip is on it",
|
|
115
|
+
term: "hands the partner an object", twoPerson: true },
|
|
116
|
+
{ id: "receive-object", label: "Receive Object", category: "two-person", description: "Takes an offered object and draws it in",
|
|
117
|
+
promptHint: "the subject reaches out with an open hand as the partner offers an object, closes the fingers around it and draws it back in toward the body",
|
|
118
|
+
term: "takes an object from the partner", twoPerson: true },
|
|
119
|
+
{ id: "slide-ring-onto-partner-finger", label: "Slide On Ring", category: "two-person", description: "Slides a ring down onto the partner's ring finger",
|
|
120
|
+
promptHint: "the subject takes the partner's hand, holds a ring at the fingertip and slides it down onto the partner's ring finger, then closes both hands around the partner's hand",
|
|
121
|
+
term: "slides a ring onto the partner's finger", twoPerson: true },
|
|
122
|
+
{ id: "lift-partner-veil", label: "Lift Veil", category: "two-person", description: "Lifts the veil up and back to reveal the face",
|
|
123
|
+
promptHint: "the subject raises both hands to the edge of the partner's veil, lifts it up and back over the partner's head, and lowers the hands to reveal the partner's face",
|
|
124
|
+
term: "lifts the partner's veil", twoPerson: true },
|
|
125
|
+
{ id: "kneel-before-partner", label: "Kneel Before", category: "two-person", description: "Drops to one knee and takes the partner's hand",
|
|
126
|
+
promptHint: "the subject drops down onto one knee in front of the partner, takes the partner's hand in both hands and looks up at the partner's face, the partner's free hand rising to the mouth",
|
|
127
|
+
term: "kneels on one knee before the partner", twoPerson: true },
|
|
128
|
+
{ id: "kneel-to-partner-eye-level", label: "Kneel to Eye Level", category: "two-person", description: "Lowers to one knee to meet a shorter partner's eyes",
|
|
129
|
+
promptHint: "the subject lowers onto one knee in front of the partner until their eyes are level, hands resting on the raised knee, and speaks to the partner face to face",
|
|
130
|
+
term: "kneels to the partner's eye level", twoPerson: true },
|
|
131
|
+
{ id: "tap-partner-shoulder", label: "Tap on Shoulder", category: "two-person", description: "Two taps from behind, the partner turns around",
|
|
132
|
+
promptHint: "the subject steps up behind the partner, raises one hand and taps the partner's shoulder twice with the fingertips, and the partner turns around to face the subject",
|
|
133
|
+
term: "taps the partner on the shoulder", twoPerson: true },
|
|
134
|
+
{ id: "put-hand-on-partner-shoulder", label: "Hand on Shoulder", category: "two-person", description: "Rests a hand on the partner's shoulder with a squeeze",
|
|
135
|
+
promptHint: "the subject steps to the partner's side, raises one hand and rests it on the partner's shoulder with a firm squeeze, holding it there while looking at the partner",
|
|
136
|
+
term: "places a hand on the partner's shoulder", twoPerson: true },
|
|
137
|
+
{ id: "pat-partner-back", label: "Pat on the Back", category: "two-person", description: "Open-palm pats on the partner's upper back",
|
|
138
|
+
promptHint: "the subject reaches over and pats the partner firmly on the upper back three times with an open palm, before dropping the hand",
|
|
139
|
+
term: "pats the partner on the back", twoPerson: true },
|
|
140
|
+
{ id: "whisper-to-partner", label: "Whisper", category: "two-person", description: "Leans in and whispers into the partner's ear",
|
|
141
|
+
promptHint: "the subject leans in close to the side of the partner's head, cups a hand beside the mouth and whispers into the partner's ear, and the partner's expression shifts while listening",
|
|
142
|
+
term: "whispers in the partner's ear", twoPerson: true },
|
|
143
|
+
{ id: "cover-partner-eyes-from-behind", label: "Cover Eyes", category: "two-person", description: "Sneaks up behind and covers the partner's eyes",
|
|
144
|
+
promptHint: "the subject creeps up behind the partner, reaches around with both hands and covers the partner's eyes with the palms, the partner's hands rising to touch the subject's fingers",
|
|
145
|
+
term: "covers the partner's eyes from behind", twoPerson: true },
|
|
146
|
+
{ id: "boop-partner-nose", label: "Boop Nose", category: "two-person", description: "Index finger taps the tip of the partner's nose",
|
|
147
|
+
promptHint: "the subject raises one hand with the index finger extended and taps the tip of the partner's nose with a light press, then pulls the hand back as the partner scrunches the face",
|
|
148
|
+
term: "boops the partner's nose", twoPerson: true },
|
|
149
|
+
{ id: "ruffle-partner-hair", label: "Ruffle Hair", category: "two-person", description: "Rubs a hand across the partner's head, messing the hair",
|
|
150
|
+
promptHint: "the subject reaches over and rubs an open hand back and forth across the top of the partner's head, ruffling the partner's hair into disarray, and pulls the hand away",
|
|
151
|
+
term: "ruffles the partner's hair", twoPerson: true },
|
|
152
|
+
{ id: "tickle-partner", label: "Tickle", category: "two-person", description: "Fingers wiggle at the ribs, the partner twists away",
|
|
153
|
+
promptHint: "the subject reaches for the partner's sides with both hands and wiggles the fingers against the partner's ribs, the partner doubling over and twisting away laughing",
|
|
154
|
+
term: "tickles the partner", twoPerson: true },
|
|
155
|
+
{ id: "shake-partner-awake", label: "Shake Awake", category: "two-person", description: "Grips and shakes a sleeping partner's shoulder",
|
|
156
|
+
promptHint: "the subject leans over the partner lying asleep, grips the partner's shoulder and shakes it insistently until the partner's eyes open and the partner jolts upright",
|
|
157
|
+
term: "shakes the partner awake", twoPerson: true },
|
|
158
|
+
{ id: "lift-partner", label: "Lift", category: "two-person", description: "Hands at the waist, lifts straight up, sets down",
|
|
159
|
+
promptHint: "the subject grips the partner at the waist with both hands, bends the knees and lifts the partner straight up off the ground, the partner's hands on the subject's shoulders, and lowers the partner back down",
|
|
160
|
+
term: "lifts the partner off the ground", twoPerson: true },
|
|
161
|
+
{ id: "swing-partner-around", label: "Swing Around", category: "two-person", description: "Lifts the partner and turns a full circle",
|
|
162
|
+
promptHint: "the subject wraps both arms around the partner's waist, lifts the partner off the ground and turns in a full circle with the partner's feet swinging outward, before setting the partner down",
|
|
163
|
+
term: "lifts and swings the partner around", twoPerson: true },
|
|
164
|
+
{ id: "lift-partner-overhead-airplane", label: "Airplane Lift", category: "two-person", description: "Lifts a small partner overhead, held flat, arms wide",
|
|
165
|
+
promptHint: "the subject grips the partner under the arms, lifts the partner overhead at full arm extension so the partner's body lies flat with arms spread wide, and lowers the partner back down",
|
|
166
|
+
term: "lifts the partner overhead like an airplane", twoPerson: true },
|
|
167
|
+
{ id: "carry-partner-bridal", label: "Bridal Carry", category: "two-person", description: "Scoops the partner up and walks forward",
|
|
168
|
+
promptHint: "the subject scoops the partner up in a bridal carry, one arm under the partner's knees and the other behind the partner's back, the partner's arm around the subject's neck, and walks forward carrying the partner",
|
|
169
|
+
term: "carries the partner bridal-style", twoPerson: true },
|
|
170
|
+
{ id: "piggyback-partner", label: "Piggyback", category: "two-person", description: "Crouches, the partner climbs on, stands and walks",
|
|
171
|
+
promptHint: "the subject crouches, the partner climbs onto the subject's back with arms around the subject's shoulders, and the subject hooks both hands under the partner's knees, stands up and walks forward",
|
|
172
|
+
term: "carries the partner piggyback", twoPerson: true },
|
|
173
|
+
{ id: "carry-partner-on-shoulders", label: "Shoulder Ride", category: "two-person", description: "The partner rides astride the neck, carried forward",
|
|
174
|
+
promptHint: "the subject crouches, the partner climbs onto the subject's shoulders with one leg either side of the neck, and the subject holds the partner's shins and stands up to walk forward",
|
|
175
|
+
term: "carries the partner on the shoulders", twoPerson: true },
|
|
176
|
+
{ id: "fireman-carry-partner", label: "Fireman Carry", category: "two-person", description: "Hoists the partner across the shoulders and walks",
|
|
177
|
+
promptHint: "the subject ducks under the partner's arm, hoists the partner across the shoulders with the partner's torso behind the neck and legs hanging in front, and stands to walk forward",
|
|
178
|
+
term: "carries the partner over one shoulder", twoPerson: true },
|
|
179
|
+
{ id: "help-partner-up", label: "Help Up", category: "two-person", description: "Pulls the partner up from the ground to standing",
|
|
180
|
+
promptHint: "the subject extends a hand down to the partner on the ground, the partner grips the subject's forearm, and the subject leans back and pulls the partner up to standing",
|
|
181
|
+
term: "helps the partner up", twoPerson: true },
|
|
182
|
+
{ id: "catch-partner-falling", label: "Catch a Fall", category: "two-person", description: "Lunges and catches the partner as they fall",
|
|
183
|
+
promptHint: "the subject lunges forward as the partner loses balance and falls, catching the partner under the arms and around the back, taking the partner's weight and steadying the partner upright",
|
|
184
|
+
term: "catches the partner mid-fall", twoPerson: true },
|
|
185
|
+
{ id: "support-injured-partner-walking", label: "Support Limping", category: "two-person", description: "Takes a limping partner's weight, arm over shoulder",
|
|
186
|
+
promptHint: "the subject drapes the partner's arm over the subject's shoulders, wraps an arm around the partner's waist and takes the partner's weight as the partner limps, the two walking forward in a lurching step",
|
|
187
|
+
term: "helps the partner limp along", twoPerson: true },
|
|
188
|
+
{ id: "drag-partner-to-safety", label: "Drag to Safety", category: "two-person", description: "Hauls the partner backward under the arms",
|
|
189
|
+
promptHint: "the subject hooks both hands under the partner's arms from behind and drags the partner backward across the ground, the partner's heels trailing, the subject leaning back and hauling step by step",
|
|
190
|
+
term: "drags the partner to safety", twoPerson: true },
|
|
191
|
+
{ id: "shield-partner-with-body", label: "Shield", category: "two-person", description: "Pulls the partner behind and blocks with the body",
|
|
192
|
+
promptHint: "the subject grabs the partner's arm, swings the partner around behind the subject's back and plants the feet wide, one arm held out across the partner as a shield",
|
|
193
|
+
term: "shields the partner with the body", twoPerson: true },
|
|
194
|
+
{ id: "pull-partner-close", label: "Pull Close", category: "two-person", description: "Draws the partner in until chest to chest",
|
|
195
|
+
promptHint: "the subject grasps the partner's hand and pulls the partner in until the two are chest to chest, the partner's body turning to face the subject as the gap closes",
|
|
196
|
+
term: "pulls the partner close", adultOnly: true, twoPerson: true },
|
|
197
|
+
{ id: "catch-partner-wrist", label: "Catch Wrist", category: "two-person", description: "Stops the partner leaving by catching the wrist",
|
|
198
|
+
promptHint: "the subject reaches out as the partner turns to walk away and catches the partner's wrist, halting the partner mid-step so the partner turns back to face the subject",
|
|
199
|
+
term: "catches the partner's wrist", twoPerson: true },
|
|
200
|
+
{ id: "chase-partner", label: "Chase", category: "two-person", description: "Runs after the partner, closing the gap",
|
|
201
|
+
promptHint: "the subject runs after the partner, who sprints ahead across the frame glancing back, the subject pumping the arms and closing the gap stride by stride",
|
|
202
|
+
term: "chases the partner", twoPerson: true },
|
|
203
|
+
{ id: "stare-down-partner", label: "Stare Down Partner", category: "two-person", description: "Face to face, inches apart, unbroken stare",
|
|
204
|
+
promptHint: "the subject steps in to stand face to face with the partner, inches apart, and holds an unbroken stare into the partner's eyes, neither of them moving",
|
|
205
|
+
term: "stares down the partner face to face", twoPerson: true },
|
|
206
|
+
{ id: "argue-in-partner-face", label: "Argue in Face", category: "two-person", description: "Nose to nose, jabbing a finger, both shouting",
|
|
207
|
+
promptHint: "the subject steps in nose to nose with the partner, jabbing a finger at the partner's chest and shouting, the partner shouting back, neither giving ground",
|
|
208
|
+
term: "argues in the partner's face", twoPerson: true },
|
|
209
|
+
{ id: "push-partner-away", label: "Push Away", category: "two-person", description: "Both palms to the chest, the partner steps back",
|
|
210
|
+
promptHint: "the subject plants both palms on the partner's chest and pushes the partner away, the partner stepping back to absorb it, while the subject holds the arms out to keep the distance",
|
|
211
|
+
term: "pushes the partner away", twoPerson: true },
|
|
212
|
+
{ id: "shove-partner", label: "Shove Partner", category: "two-person", description: "Two-handed shove, the partner staggers back",
|
|
213
|
+
promptHint: "the subject lunges forward and shoves the partner hard in the shoulders with both hands, the partner staggering back several steps and catching balance while the subject squares up",
|
|
214
|
+
term: "shoves the partner back", twoPerson: true },
|
|
215
|
+
{ id: "shake-partner-shoulders", label: "Shake by Shoulders", category: "two-person", description: "Grabs both shoulders and shakes back and forth",
|
|
216
|
+
promptHint: "the subject grabs the partner by both shoulders and shakes the partner back and forth, the partner's head rocking with each shake, before releasing the grip",
|
|
217
|
+
term: "grabs and shakes the partner by the shoulders", twoPerson: true },
|
|
218
|
+
{ id: "grab-partner-collar", label: "Grab Collar", category: "two-person", description: "Seizes the collar in both fists and yanks in close",
|
|
219
|
+
promptHint: "the subject seizes the partner's collar with both fists and yanks the partner in close, the partner's heels lifting as the subject holds the partner up at eye level",
|
|
220
|
+
term: "grabs the partner by the collar", twoPerson: true },
|
|
221
|
+
{ id: "pin-partner-against-wall", label: "Pin Against Wall", category: "two-person", description: "Backs the partner into the wall, forearm across chest",
|
|
222
|
+
promptHint: "the subject drives the partner back until the partner's shoulders meet the wall, plants one forearm across the partner's chest and the other palm flat on the wall beside the partner's head",
|
|
223
|
+
term: "pins the partner against the wall", twoPerson: true },
|
|
224
|
+
{ id: "slap-partner", label: "Slap", category: "two-person", description: "Open hand across the cheek, the head snaps aside",
|
|
225
|
+
promptHint: "the subject swings one open hand across the partner's cheek in a sharp slap, the partner's head snapping to the side, and the subject lowers the hand",
|
|
226
|
+
term: "slaps the partner across the face", twoPerson: true },
|
|
227
|
+
{ id: "arm-wrestle-partner", label: "Arm Wrestle", category: "two-person", description: "Elbows planted, hands locked, straining to win",
|
|
228
|
+
promptHint: "the subject plants an elbow on the table, locks hands with the partner and strains to force the partner's arm down, both arms trembling as the clasped hands tip toward the subject's side",
|
|
229
|
+
term: "arm wrestles the partner", twoPerson: true },
|
|
230
|
+
{ id: "restrain-partner", label: "Restrain", category: "two-person", description: "Hauls the straining partner back from behind",
|
|
231
|
+
promptHint: "the subject wraps both arms around the partner from behind and hauls the partner back as the partner strains forward, the partner's feet scrabbling, the subject planting the feet and pulling the partner away",
|
|
232
|
+
term: "holds the partner back from behind", twoPerson: true },
|
|
233
|
+
]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the Character Motion catalog. The entry arrays live one file per
|
|
3
|
+
* category under this directory; `../character-motion.ts` aggregates them and
|
|
4
|
+
* owns the getters, the timing scales and the composer. Kept apart so no file
|
|
5
|
+
* in the catalog passes the repo's 800-line ceiling.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export type CharacterMotionCategory =
|
|
9
|
+
| "entrances-exits"
|
|
10
|
+
| "turns-looks"
|
|
11
|
+
| "head-gestures"
|
|
12
|
+
| "walks-runs"
|
|
13
|
+
| "runway"
|
|
14
|
+
| "dance"
|
|
15
|
+
| "face-expression"
|
|
16
|
+
| "gestures"
|
|
17
|
+
| "camera-interaction"
|
|
18
|
+
| "combat-weapons"
|
|
19
|
+
| "athletic-stunts"
|
|
20
|
+
| "evasive-falls"
|
|
21
|
+
| "posture-shifts"
|
|
22
|
+
| "everyday-actions"
|
|
23
|
+
| "vehicles-mounts"
|
|
24
|
+
| "animals-pets"
|
|
25
|
+
| "two-person"
|
|
26
|
+
| "idle-ambient"
|
|
27
|
+
| "stage-performance"
|
|
28
|
+
| "unnatural-horror"
|
|
29
|
+
|
|
30
|
+
export interface CharacterMotion {
|
|
31
|
+
readonly id: string
|
|
32
|
+
readonly label: string
|
|
33
|
+
readonly category: CharacterMotionCategory
|
|
34
|
+
readonly description: string
|
|
35
|
+
readonly promptHint: string
|
|
36
|
+
/** Authored compact term (see `../term.ts`); every injecting entry authors one. */
|
|
37
|
+
readonly term?: string
|
|
38
|
+
/** Minor-age floor flag (see `../pose.ts`). Hand-curated; never on neutral movement. */
|
|
39
|
+
readonly adultOnly?: true
|
|
40
|
+
/** The move needs a second person; the hint contains the literal words "the partner". */
|
|
41
|
+
readonly twoPerson?: true
|
|
42
|
+
}
|