Repository navigation
Sit on a seat, stand up, lie down and get up (#825); planted limbs keep their spots through a way's last stage - #826
Merged
Merged
Conversation
Actions at an interaction point, as GTA V's scenario points and Unreal's Smart Objects are, keyed and planned on their contacts as the way up from the ground is: - motion.sit(body, seat, facing) and stand_up(body), keyed on a person's sit-to-stand (Schenkman et al. 1990), the sitter set down by its own pelvis and thigh capsules on the seat; sit_spot says where to stand. - motion.lie_down(body, head): squat, sit back on the hands, lie back, the face-up way up run the other way; get_up rises from it to the mode it lay down from; lie_spot says where to stand over a bedroll. - A new mode ACTING (acting, sitting, seated, lying_down), got to as GETTING_UP is. Found measuring them, and fixed for every keyed way: - A stage into the animation's pose eased the limbs onto its turns in the world while the trunk was still moving: a planted limb's end left its spot by 65 mm mid-stage. A planted limb (its end on one spot from key to key) now takes what its solve at the key is short of it, in each bone's own frame; a moving one is still eased in the world, which carries a stepping foot's facing round. A last key planned on contacts is not eased at all. - A planted foot keeps the turn it stands with (it swept 40 mm round its ankle when set flat to face the way), and its anchor is held at 30 Hz while planted (physics.ragdoll_plant, PuppetMaster's pin weight). - A lying key's limbs are ones the body can take: elbows out on the ground, not 69 degrees past their hinges toward the sky; feet carried by the lying shins, not 90 degrees up at a 35 degree ankle. physics: ragdoll_plant and ragdoll_pose_bone_lowest. tests/test_sit.ae (8 checks) and tests/test_lie.ae (6) hold them to the numbers #825 judges them by: on the seat within 3 cm, toes sliding under 5 mm, no body turning over 6 degrees a step, on the bedroll and no more than 1 cm under it, up within 4 s, upright after.
Collaborator
Author
|
The owner watched it sit: one figure sits in the air, the other almost on the seat. "Pretty good but not there." The table above measures the bodies (pelvis and thigh capsules within 0.04 cm of the log's top); what has to touch the seat is the figure as drawn. #825's 3 cm is meant for what a player sees: the drawn mesh's lowest point under the pelvis and thighs against the seat's top, both figures, every step from seated until standing up begins. Worth a check of where the gap opens, e.g. capsule radius against the mesh's flesh at the buttocks, the drawn pelvis off its body (the handover's offset), or the seat drawn off its collider. |
…rawn flesh (#825) The owner watched the sitting: one figure sat in the air. The keys were set down by the physics capsules, fitted round the bones and thicker than the flesh, and a figure acting is drawn from its keys: the box man's drawn thighs rested 1.35 cm over the log, Siltreach's people's about 1.2 cm, and a lying figure's heels and hands, placed by their joints, were drawn 1.36 cm into the bedroll. - skin.skeleton_bone_extreme_near: a bone's flesh farthest along a way, within a radius of a point (what rests on a support there); physics.ragdoll_flesh_lowest wraps it for a ragdoll bone's rig bone. - sit sets its seated key down by the drawn flesh of the pelvis and thighs over the seat (within half a thigh of its point: not the knees past its edge), in three passes as the thighs turn about the knees; lie_down lifts its whole lying key, limbs and all, by the lowest of its drawn flesh. - physics.ragdoll_pass: the pelvis and thighs pass through the seat's body while the figure sits (filter joints, as GTA's scenarios and Unreal's Smart Objects drop a sitter's collision with its seat): the capsules met the seat under the drawn flesh, the anchors pressed them in, and the feet slid 12 mm sitting down and 21 standing up. physics.StaticRayHit names the body met. set_mode ends the pass and the planted feet with the action. test_sit: the drawn pelvis and thighs within 1 cm of the log all the while (1.33 cm without the fix); test_lie: the drawn figure's lowest flesh within 1 cm of the bedroll's top (1.36 cm into it without). Drifter, Siltreach's figure: its drawn pelvis and thighs 0.0 to 0.25 mm off the seat.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The first slice of #825 (what a game's day asks of a figure): sitting on a seat and standing up, lying down and getting up. Siltreach asked for these first, after walking, so the camp's day can be shown.
The technique. These are actions at an interaction point, as GTA V's scenario points and Unreal's Smart Objects are: a seat or a bedroll, and the way the figure faces there. The way down and back up is keyed and planned on its contacts, as the get-up already is: each key puts the trunk where the planted feet, hands or seat can hold it, and each limb is solved to its contact every step. The bodies follow the keys through the anchors, so a seat holds them. A game with a clip for the action (Siltreach's mocap) can later give the clip instead, warped to the same point.
The API (engine-level, any figure):
motion.sit(body, seat, facing)andmotion.stand_up(body). The keys follow a person's sit-to-stand (Schenkman et al. 1990, flexion, momentum transfer, extension) run down and back up. The sitter is set down by its own pelvis and thigh capsules on the seat's top.sit_spot(body, seat, facing)says where to stand so the shins come out upright.motion.lie_down(body, head): squat over the feet, sit back on the hands, lie back flat. That is the face-up get-up run the other way.get_up(body)rises from it and ends in the mode it lay down from.lie_spot(body, middle, head)says where to stand over a bedroll.ACTING(acting,sitting,seated,lying_down), got to asGETTING_UPis.Measured on the box man with feet of its own, against #825's numbers (
tests/test_sit.ae,tests/test_lie.ae):test_get_up)Resting on what is drawn (after the owner saw a figure sit in the air). A figure acting is drawn from its keys, and the keys were set down by the physics capsules, which are fitted round the bones and thicker than the flesh. The box man's drawn thighs rested 1.35 cm over the log and Siltreach's figures' about 1.2 cm, and a lying figure's heels and hands were drawn 1.36 cm into the bedroll.
skin.skeleton_bone_extreme_near(wrapped byphysics.ragdoll_flesh_lowest): a bone's flesh farthest along a way, within a radius of a point.sitsets the seated key down by the drawn flesh of the pelvis and thighs over the seat: within half a thigh of its point, so not the knees past its edge, in three passes as the thighs turn about the knees. On Siltreach's drifter the drawn pelvis and thighs end 0.0 to 0.25 mm off the seat.lie_downlifts its whole lying key, limbs and all, by the lowest of its drawn flesh.physics.ragdoll_pass: the pelvis and thighs pass through the seat's body while the figure sits (filter joints). GTA's scenarios and Unreal's Smart Objects drop a sitter's collision with its seat for the same reason: without it the anchors pressed the thicker capsules into the seat, and the feet slid 12 mm sitting down and 21 mm standing up.physics.StaticRayHitnames the body it met, andset_modeends the pass and the planted feet along with the action.Fixed on the way, for every keyed way (get-ups included):
physics.ragdoll_plant, PuppetMaster's pin weight on a planted foot). At the anchors' 5 Hz, standing up pushed the feet 5.3 mm.Tested locally (Windows):
ci.shbuilds compile without a warning, and the motion gate (34 suites) plustest_sit,test_lieandtest_physicsall pass, before and after the drawn-flesh change (37 of 37);CI moves to Aether 0.834.0 (0.833's branch type joins, and a bare
ptrgiven to astringlocal an error).Part of #825 and #790.