15.52 14.3.5 Contrato
ContactPair
| Campo | Tipo/regla |
|---|---|
contactPairId |
string stable for bodyRegion + sceneObject/surfacePatch within scene revision |
athleteTrackId |
string |
bodyRegionId |
enum BodyContactRegion |
sceneObjectId |
string |
surfacePatchId |
string|null; required for directional force interpretation |
contactPointBody |
{x,y,z,frameId,covariance}|null |
contactPointScene |
{x,y,z,frameId,covariance}|null |
signedDistanceM |
float|null; positive separated, approximately zero touching, negative penetration artifact |
normalVector |
{x,y,z,frameId}|null; outward from surface into free space |
tangentBasis |
{t1,t2,frameId}|null |
geometricState |
Absent|Approaching|Candidate|Touching|Separating|OccludedUnknown |
functionalState |
Unknown|UnloadedTouch|Loading|LoadBearing|SlidingLoaded|Unloading|Released |
contactRoleHypotheses |
array<{role,probability,evidence}> |
probabilityContact |
float 0..1 calibrated |
probabilityLoadBearing |
float 0..1 calibrated |
evidenceIds |
array |
provenance |
models, sensors, calibration, timestamps and revision IDs |
La clave conceptual es el par región corporal–objeto/superficie. Una mano puede contactar dos caras de un pinch y un heel-toe cam puede crear varios microcontactos simultáneos dentro de un mismo objeto.
15.52.1 Distancia firmada
d > 0 : separado
d ≈ 0 : compatible con contacto
d < 0 : penetración geométrica o incertidumbre/model mismatch
Un valor negativo pequeño no confirma contacto real: puede provenir de profundidad, máscara, pose o transformaciones imprecisas.