/** * AgentAvatarMesh — entity-generic procedural humanoid skinned mesh, as PURE DATA. * * Generalised from the Brittney-locked `studio/.../BrittneyAvatarMesh.tsx` (D.094: the * body is entity-generic, parameterised by id; default Brittney, never hardcoded). Unlike * that React/Three.js component, this is the sovereign native path: it emits flat vertex * arrays + per-vertex skin bindings (NO Three.js, NO GPU) that the native WebGPU character * renderer uploads and skins on-GPU. It is the always-works default body source; a glTF/VRM * upgrade is a separate, opt-in path (plan: "Both body sources"). * * Geometry: compatibility bodies use one oriented box per skeletal segment. Source-authored * bodies can replace the axial torso, shoulder roots, and neck with one connected elliptical * loft while retaining the sovereign `HUMANOID_65_SKELETON` skinning path. Each vertex stays * rigidly bound to one canonical bone, so the native GPU palette poses the entire figure * without an imported body asset or provider runtime. * * @module character-render */ import { type Mat4, type Quat } from './skin-math'; export interface AgentAvatarMeshData { /** Flat XYZ positions in world-bind space, 3 floats/vertex. */ positions: Float32Array; /** Flat XYZ flat-face normals, 3 floats/vertex. */ normals: Float32Array; /** 4 floats/vertex: xyz tangent + w strandT. Body = placeholder (0,1,0,0). */ tangents: Float32Array; indices: Uint32Array; /** One palette (bone) index per vertex. */ jointIndices: Uint32Array; /** Primary skin weight per vertex. Legacy profiles remain rigid at 1.0. */ jointWeights: Float32Array; /** Optional second palette index. Present only for profiles that emit blended deformation. */ secondaryJointIndices?: Uint32Array; /** Optional second skin weight. Primary + secondary is normalized for authored blends. */ secondaryJointWeights?: Float32Array; vertexCount: number; /** Number of palette slots = HUMANOID_BONE_NAMES.length (65). */ jointCount: number; /** Palette index → canonical bone name. */ boneOrder: readonly string[]; /** Present only when the neutral anatomical head emitted operative orbital geometry. */ orbital?: AgentAvatarOrbitalGeometryReceipt; /** Present only when the source selects the denser civic facial-landmark profile. */ facialLandmarks?: AgentAvatarFacialLandmarkReceipt; /** Exact clamped proportions used by the native procedural body and face builders. */ anatomy: AgentAvatarAnatomyReceipt; /** Present only when the emitted mesh contains operative dual-influence deformation. */ jointDeformation?: AgentAvatarJointDeformationReceipt; /** Present only when the V5 anatomical hand-surface construction is actually emitted. */ handSurface?: AgentAvatarHandSurfaceReceipt; } export type AgentAvatarFaceTopology = 'procedural-head-v1' | 'neutral-anatomical-v2'; export declare const AGENT_AVATAR_UPPER_BODY_PROFILES: readonly ["legacy-segments-v1", "coherent-shoulder-neck-torso-v1", "coherent-anatomical-limbs-v2", "coherent-hand-landmarks-v3", "coherent-deforming-hands-v4", "coherent-hand-surface-v5", "coherent-portrait-anatomy-v6", "coherent-expressive-anatomy-v7"]; export type AgentAvatarUpperBodyProfile = (typeof AGENT_AVATAR_UPPER_BODY_PROFILES)[number]; export declare const AGENT_AVATAR_ORBITAL_PROFILES: readonly ["tearline-rim-v1", "recessed-lids-v1", "anatomical-lid-fold-v2", "anatomical-lid-blend-v3", "integrated-lid-rim-v4"]; export type AgentAvatarOrbitalProfile = (typeof AGENT_AVATAR_ORBITAL_PROFILES)[number]; export declare const AGENT_AVATAR_FACIAL_DETAIL_PROFILES: readonly ["legacy-landmarks-v1", "civic-landmarks-v1", "portrait-silhouette-v2", "portrait-cranial-v3", "portrait-soft-tissue-v4", "portrait-facial-volume-v5", "portrait-facial-planes-v6"]; export type AgentAvatarFacialDetailProfile = (typeof AGENT_AVATAR_FACIAL_DETAIL_PROFILES)[number]; export interface AgentAvatarOrbitalGeometryReceipt { profile: AgentAvatarOrbitalProfile; /** Globe recession as a fraction of the procedural eyeball radius. */ eyeRecess: number; /** Vertical palpebral opening as a fraction of the procedural eyeball radius. */ lidOpening: number; /** Outer-canthus rise as a fraction of the procedural eyeball radius. */ canthalTilt: number; /** Globe size relative to the compatibility procedural eye radius. */ eyeScale?: number; /** Present only when an independently indexed upper-lid crease is emitted. */ lidFoldProfile?: 'upper-crease-continuity-v1'; /** H3Z additional skin rows blending the lid aperture into the face plane. */ lidTransitionProfile?: 'cubic-lid-blend-v1'; lidTransitionRows?: number; /** H4K occluding lid surface indexed back into the native head shell. */ integratedLidProfile?: 'indexed-occluding-lid-rim-v1'; /** Number of operative lid-surface vertices before the separate crease arcs. */ integratedLidVertexCount?: number; /** Triangles whose indices bridge the outer lid boundary to native head vertices. */ headStitchTriangleCount?: number; /** Minimum inner-rim lead over the globe surface, in eye-radius units. */ globeOcclusionMargin?: number; /** Native head-shell vertices eligible as stitch anchors. */ headSurfaceVertexRange?: { vertexStart: number; vertexCount: number; }; vertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; } export interface AgentAvatarFacialLandmarkReceipt { schemaVersion: 'holoscript.agent-avatar-facial-landmarks.v1' | 'holoscript.agent-avatar-facial-landmarks.v2' | 'holoscript.agent-avatar-facial-landmarks.v3' | 'holoscript.agent-avatar-facial-landmarks.v4' | 'holoscript.agent-avatar-facial-landmarks.v5' | 'holoscript.agent-avatar-facial-landmarks.v6'; profile: 'civic-landmarks-v1' | 'portrait-silhouette-v2' | 'portrait-cranial-v3' | 'portrait-soft-tissue-v4' | 'portrait-facial-volume-v5' | 'portrait-facial-planes-v6'; radialSegments: number; verticalSegments: number; eyeScale: number; /** Interocular spacing relative to the anatomical-head baseline. */ eyeSpacing?: number; browHeight: number; browThickness: number; earScale: number; mouthDepth: number; /** Nasal bridge width relative to the portrait facial-volume baseline. */ noseBridgeWidth?: number; /** Nasal vertical length relative to the portrait facial-volume baseline. */ noseLength?: number; /** Nasal forward projection relative to the portrait facial-volume baseline. */ noseProjection?: number; /** Mouth width relative to the anatomical lip baseline. */ mouthWidth?: number; /** Upper-lip soft-tissue fullness relative to the anatomical lip baseline. */ upperLipFullness?: number; /** Lower-lip soft-tissue fullness relative to the anatomical lip baseline. */ lowerLipFullness?: number; /** V2 cheek-volume multiplier applied to the native head surface. */ cheekboneScale?: number; /** V2 forward chin projection applied to the native head surface. */ chinProjection?: number; /** V2 temple-width multiplier applied to the native head surface. */ templeWidth?: number; /** H3Y connected upper/seam/lower lip surface replacing separate ellipsoid volumes. */ lipTopology?: 'connected-cupid-bow-ribbon-v1'; lipSurfaceVertexCount?: number; lipSurfaceTriangleCount?: number; /** H4A source-controlled facial masses instead of one undifferentiated face ellipsoid. */ facialVolumeProfile?: 'nasal-malar-mandibular-volume-v1'; noseBridgeVertexCount?: number; philtrumVertexCount?: number; malarVolumeScale?: number; mandibularTaper?: number; browArcSegments?: number; /** H4J continuous brow, malar, and mandibular plane treatment on the native head shell. */ facialPlaneProfile?: 'brow-malar-jaw-plane-field-v1'; facialPlaneStrength?: number; facialPlaneVertexCount?: number; /** H4K nasal, philtrum, lip, and oral-fissure deformation carried by the head shell itself. */ continuousSoftTissueProfile?: 'connected-nasal-oral-head-field-v1'; continuousSoftTissueVertexCount?: number; /** Explicit proof that H4K did not append a separate nasal volume. */ detachedNasalPrimitiveVertexCount?: 0; /** Explicit proof that H4K did not append a separate lip volume. */ detachedLipPrimitiveVertexCount?: 0; vertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; } export interface AgentAvatarCranialNeckGeometryReceipt { schemaVersion: 'holoscript.agent-avatar-cranial-neck.v1'; profile: 'indexed-neck-cranium-stitch-v1'; neckRadialSegments: number; cranialRadialSegments: number; bridgeTriangleCount: number; /** Bind-space separation between the upper neck ring and truncated cranial ring. */ axialSeparation: number; /** Largest closest-sample distance between the two stitched boundary loops. */ maxSeamGap: number; neckVertexRange: { vertexStart: number; vertexCount: number; }; cranialVertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; } export interface AgentAvatarAnatomyReceipt { schemaVersion: 'holoscript.agent-avatar-anatomy.v1' | 'holoscript.agent-avatar-anatomy.v2' | 'holoscript.agent-avatar-anatomy.v3'; faceWidth: number; faceLength: number; jawTaper: number; shoulderScale: number; torsoScale: number; /** Present only when the connected native upper-body surface is actually emitted. */ upperBody?: AgentAvatarUpperBodyGeometryReceipt; /** H3X indexed transition between the authored upper-neck and truncated cranial loops. */ cranialNeck?: AgentAvatarCranialNeckGeometryReceipt; } export interface AgentAvatarJointDeformationReceipt { schemaVersion: 'holoscript.agent-avatar-joint-deformation.v1' | 'holoscript.agent-avatar-joint-deformation.v2' | 'holoscript.agent-avatar-joint-deformation.v3' | 'holoscript.agent-avatar-joint-deformation.v4'; profile: 'dual-influence-upper-limb-v1' | 'portrait-shoulder-volume-v2' | 'expressive-neck-scapular-volume-v3' | 'expressive-cranial-neck-volume-v4'; influencedVertexCount: number; jointPairCount: number; maxSecondaryWeight: number; maxWeightSumError: number; regionVertexCounts: { shoulder: number; elbow: number; wrist: number; digitRoot: number; fingerJoint: number; /** V7 axial rings blended between spine2 and neck. */ neck?: number; /** H3X stitched neck and lower-cranium loops blended between neck and head. */ cranialNeck?: number; }; /** V2 source-derived shoulder transition contract. */ shoulderVolume?: { blendRingCount: 6; rootOverlapDepth: number; minimumAuthoredRadiusRatio: number; influenceWeights: readonly [number, number, number, number, number, number]; }; /** V7 source controls and operative neck/scapular blend topology. */ expressiveAsymmetry?: { profile: 'source-asymmetric-neck-scapula-v1'; scapularElevation: { left: number; right: number; }; scapularProtraction: { left: number; right: number; }; neckBlendRingCount: 4; neckInfluenceWeights: readonly [number, number, number, number]; }; /** H3X head/neck deformation continuity over the indexed cranial stitch. */ cranialNeckContinuity?: { profile: 'dual-influence-neck-head-stitch-v1'; neckToHeadWeight: 0.35; headToNeckWeight: 0.45; }; } export interface AgentAvatarUpperBodyGeometryReceipt { schemaVersion: 'holoscript.agent-avatar-upper-body-geometry.v1'; profile: 'coherent-shoulder-neck-torso-v1' | 'anatomical-shoulder-neck-torso-v2' | 'anatomical-hand-landmarks-v3' | 'anatomical-deforming-hands-v4' | 'anatomical-hand-surface-v5' | 'portrait-anatomy-v6' | 'expressive-anatomy-v7'; radialSegments: number; ringCount: number; /** Emitted bind-space half width at the shoulder ring, after authored scaling. */ shoulderHalfWidth: number; /** Emitted bind-space half width at the waist ring, after authored scaling. */ waistHalfWidth: number; /** Emitted bind-space radius at the top neck ring, after authored scaling. */ neckRadius: number; vertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; /** One continuous shoulder-to-palm surface per side. */ upperLimbs: [AgentAvatarUpperLimbGeometryReceipt, AgentAvatarUpperLimbGeometryReceipt]; } export interface AgentAvatarUpperLimbGeometryReceipt { schemaVersion: 'holoscript.agent-avatar-upper-limb-geometry.v1'; profile: 'coherent-arm-palm-v1' | 'anatomical-deltoid-hand-v2' | 'anatomical-landmark-hand-v3' | 'arched-palm-joint-deformation-v4' | 'tapered-hand-surface-v5' | 'portrait-deltoid-hand-surface-v6' | 'expressive-scapular-hand-surface-v7'; side: 'left' | 'right'; radialSegments: number; ringCount: number; shoulderRadius: number; wristRadius: number; palmHalfWidth: number; /** V2 rings that swell from the shoulder root into the upper arm. */ deltoidBlendRingCount?: number; /** V2 root overlap that hides the old torso/arm silhouette seam. */ shoulderOverlapDepth?: number; /** V6 transition rings distributed across the scapular/deltoid envelope. */ shoulderBlendRingCount?: 6; /** V6 smallest authored shoulder-section radius divided by its root radius. */ minimumShoulderRadiusRatio?: number; /** V6 upper-pole scale that prevents a circular shoulder section from reading as a spike. */ superiorContourScaleMin?: number; /** V7 bind-space elevation authored independently per scapula (-1..1). */ scapularElevation?: number; /** V7 bind-space forward/back scapular travel authored independently per side (-1..1). */ scapularProtraction?: number; /** Five separately skinned, three-phalanx native digit surfaces in V2. */ digits?: readonly AgentAvatarDigitGeometryReceipt[]; /** V3 skin and keratin landmarks: webs, knuckles, tendons, and nail plates. */ handLandmarks?: readonly AgentAvatarHandLandmarkGeometryReceipt[]; /** V4 bind silhouette that gives the palm a metacarpal arch and asymmetric muscle volume. */ palmProfile?: 'arched-thenar-palm-v1'; /** Wrist-to-metacarpal rings participating in the V4 palm transition. */ palmBlendRingCount?: 4 | 6; /** Maximum radial thenar expansion relative to the local palm section. */ thenarBulgeRatio?: number; /** Maximum radial hypothenar expansion relative to the local palm section. */ hypothenarBulgeRatio?: number; /** Dorsal rise of the metacarpal arch in emitted metres. */ palmArchRise?: number; /** Distal palm thickness divided by the widest metacarpal thickness. */ metacarpalTaperRatio?: number; /** Arm/palm plus separately connected digit and landmark surfaces. */ connectedSurfaceCount?: number; /** V5 topology and silhouette evidence for the emitted anatomical hand surface. */ handSurface?: AgentAvatarHandSurfaceGeometryReceipt; vertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; } export interface AgentAvatarHandSurfaceGeometryReceipt { schemaVersion: 'holoscript.agent-avatar-hand-surface-geometry.v1'; profile: 'tapered-digit-commissure-cuticle-wrist-v1'; side: 'left' | 'right'; wristTransitionRingCount: 6; digitSectionRingCount: 14; digitSectionExponent: 2.35; commissureRows: 5; commissureColumns: 7; commissureSaddleDepth: number; nailRows: 7; nailColumns: 7; cuticleInsetRatio: 0.36; freeEdgeInsetRatio: 0.18; regionVertexCounts: { wristTransition: number; digitSections: number; metacarpalKnuckles: number; interdigitalCommissures: number; nailCuticles: number; }; regionIndexCounts: { wristTransition: number; digitSections: number; metacarpalKnuckles: number; interdigitalCommissures: number; nailCuticles: number; }; } export interface AgentAvatarHandSurfaceReceipt { schemaVersion: 'holoscript.agent-avatar-hand-surface.v1'; profile: 'tapered-digit-commissure-cuticle-wrist-v1'; upperBodyProfile: 'coherent-hand-surface-v5' | 'coherent-portrait-anatomy-v6' | 'coherent-expressive-anatomy-v7'; limbs: [AgentAvatarHandSurfaceGeometryReceipt, AgentAvatarHandSurfaceGeometryReceipt]; regionVertexCounts: AgentAvatarHandSurfaceGeometryReceipt['regionVertexCounts']; regionIndexCounts: AgentAvatarHandSurfaceGeometryReceipt['regionIndexCounts']; } export declare const AGENT_AVATAR_DIGIT_NAMES: readonly ["thumb", "index", "middle", "ring", "pinky"]; export type AgentAvatarDigitName = (typeof AGENT_AVATAR_DIGIT_NAMES)[number]; export interface AgentAvatarDigitGeometryReceipt { schemaVersion: 'holoscript.agent-avatar-digit-geometry.v1'; profile: 'articulated-three-phalanx-v1' | 'volume-preserving-three-phalanx-v2' | 'tapered-superellipse-three-phalanx-v3'; side: 'left' | 'right'; digit: AgentAvatarDigitName; radialSegments: number; ringCount: number; phalanxSegmentCount: 3; webBlendRingCount: 1 | 2; /** Extra V3 rings that bound radius loss around the articulated joints. */ jointVolumeBlendRingCount?: number; /** Smallest non-tip ring radius divided by the emitted base radius. */ minimumJointRadiusRatio?: number; /** Largest adjacent ring-radius loss divided by the emitted base radius. */ maximumAdjacentRadiusDrop?: number; /** Dorsal-palmar radius divided by lateral radius for the V3 oval section. */ crossSectionAspectRatio?: number; /** V5 superellipse exponent; values above 2 flatten the dorsal and palmar faces. */ crossSectionExponent?: number; /** V5 rings that restore volume at the metacarpal, PIP, and DIP landmarks. */ knuckleVolumeRingCount?: number; totalLength: number; baseRadius: number; tipRadius: number; vertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; } export type AgentAvatarHandLandmarkKind = 'interdigital-web' | 'metacarpal-knuckle' | 'dorsal-tendon-ridge' | 'nail-plate'; export interface AgentAvatarHandLandmarkGeometryReceipt { schemaVersion: 'holoscript.agent-avatar-hand-landmark-geometry.v1'; profile: 'anatomical-hand-landmark-v1' | 'volumetric-interdigital-web-v2' | 'surface-conforming-nail-plate-v2' | 'integrated-metacarpal-knuckle-v2' | 'concave-interdigital-commissure-v3' | 'cuticle-contoured-nail-plate-v3'; side: 'left' | 'right'; kind: AgentAvatarHandLandmarkKind; /** Primary digit, when the landmark belongs to one digit. */ digit?: AgentAvatarDigitName; /** Adjacent digit pair bridged by an interdigital web. */ betweenDigits?: readonly [AgentAvatarDigitName, AgentAvatarDigitName]; /** Native shading region. Nail plates are excluded from the skin draw ranges. */ materialRole: 'skin' | 'keratin-nail'; jointName: string; /** Curved cross-section rings used by a V3 interdigital web. */ blendRingCount?: number; /** Nail attachment is an intentionally embedded, conforming distal surface, not watertight skin. */ attachment?: 'distal-phalanx-surface-conforming-v1'; /** Number of underside vertices sampled against the distal digit loft. */ attachmentSampleCount?: number; /** Positive authored penetration below the sampled digit surface, in emitted metres. */ surfaceEmbedDepth?: number; /** Keratin plate thickness at the distal free edge, in emitted metres. */ freeEdgeThickness?: number; /** Rows and columns in the closed V5 commissure or nail surface. */ surfaceRows?: number; surfaceColumns?: number; /** Maximum V5 free-margin recession, in emitted metres. */ saddleDepth?: number; /** V5 lateral inset at the proximal cuticle and distal free edge. */ cuticleInsetRatio?: number; freeEdgeInsetRatio?: number; vertexRange: { vertexStart: number; vertexCount: number; }; indexRange: { indexStart: number; indexCount: number; }; } export interface AgentAvatarMeshOptions { /** Drives deterministic accent colour (D.094 entity-generic). */ entityId?: string; /** 1.0 = 1.75 m reference figure. */ heightScale?: number; /** Limb/torso thickness multiplier. */ buildScale?: number; /** Source-authored facial topology. Legacy remains the default for compatibility. */ faceTopology?: AgentAvatarFaceTopology; /** Longitude segments (12..32 legacy; 12..48 for portrait-cranial-v3). */ faceRadialSegments?: number; /** Latitude segments (8..24 legacy; 8..36 for portrait-cranial-v3). */ faceVerticalSegments?: number; /** Emit native eyelid/tearline rim topology around the procedural eyes. */ faceTearline?: boolean; /** Native orbital construction profile. The tearline rim remains the compatibility default. */ orbitalProfile?: AgentAvatarOrbitalProfile; /** Globe recession as a fraction of the procedural eyeball radius (0..0.45). */ eyeRecess?: number; /** Vertical palpebral opening as a fraction of the eyeball radius (0.42..0.78). */ lidOpening?: number; /** Outer-canthus rise as a fraction of the eyeball radius (-0.25..0.25). */ canthalTilt?: number; /** Optional denser native facial-landmark profile. Compatibility default is legacy. */ facialDetailProfile?: AgentAvatarFacialDetailProfile; /** Procedural ocular globe scale (0.72..1.08). */ eyeScale?: number; /** Interocular spacing multiplier (0.82..1.2). */ eyeSpacing?: number; /** Brow center rise above the upper lid, in eye-radius units (0.65..1.65). */ browHeight?: number; /** Brow ribbon thickness, in eye-radius units (0.08..0.32). */ browThickness?: number; /** Native ear scale (0.7..1.3). */ earScale?: number; /** Lip-volume depth multiplier (0.25..1.4). */ mouthDepth?: number; /** Portrait facial-volume nasal bridge width (0.65..1.45). */ noseBridgeWidth?: number; /** Portrait facial-volume nasal length (0.72..1.3). */ noseLength?: number; /** Portrait facial-volume nasal projection (0.65..1.45). */ noseProjection?: number; /** Anatomical lip width multiplier (0.75..1.25). */ mouthWidth?: number; /** Anatomical upper-lip fullness multiplier (0.6..1.5). */ upperLipFullness?: number; /** Anatomical lower-lip fullness multiplier (0.6..1.6). */ lowerLipFullness?: number; /** Portrait-silhouette-v2 cheek-volume multiplier (0.82..1.22). */ cheekboneScale?: number; /** Portrait-silhouette-v2 forward chin projection (0.72..1.28). */ chinProjection?: number; /** Portrait-silhouette-v2 temple-width multiplier (0.88..1.12). */ templeWidth?: number; /** Portrait-facial-planes-v6 brow/malar/jaw plane strength (0..1). */ facialPlaneStrength?: number; /** Neutral-head width multiplier (0.84..1.2). */ faceWidth?: number; /** Neutral-head vertical-length multiplier (0.86..1.16). */ faceLength?: number; /** Lower-face width reduction from forehead to chin (0.08..0.38). */ jawTaper?: number; /** Bind-space shoulder/arm span multiplier (0.85..1.25). */ shoulderScale?: number; /** Hips/spine thickness multiplier, independent of global build scale (0.85..1.2). */ torsoScale?: number; /** Native upper-body construction. Compatibility segment boxes remain the default. */ upperBodyProfile?: AgentAvatarUpperBodyProfile; /** Circumferential topology budget for the connected upper-body loft (12..32). */ upperBodyRadialSegments?: number; /** V7 independent left scapular elevation (-1..1). */ leftScapularElevation?: number; /** V7 independent right scapular elevation (-1..1). */ rightScapularElevation?: number; /** V7 independent left scapular forward/back travel (-1..1). */ leftScapularProtraction?: number; /** V7 independent right scapular forward/back travel (-1..1). */ rightScapularProtraction?: number; } /** Pose = per-bone LOCAL rotation applied at the joint (absent ⇒ identity / bind). */ export type AvatarPose = ReadonlyMap; export declare const BONE_ORDER: readonly string[]; export declare const JOINT_COUNT: number; /** * Bind-pose world matrices per bone (rotations identity, translations = local offsets). * Bones are listed parent-before-child in HUMANOID_65_SKELETON, so a single pass suffices. */ export declare function computeBindWorld(): Map; /** Inverse-bind matrix per bone (maps world-bind space → bone-local bind space). */ export declare function computeInverseBind(bindWorld: Map): Map; /** * Skin matrix palette for a pose: skin(b) = worldPose(b) · inverseBind(b), flattened to * JOINT_COUNT × 16 column-major floats in BONE_ORDER. At bind pose every entry is identity, * so the mesh renders unchanged — the structural correctness check (G.GOLD.013: test the * false case too). */ export declare function computeJointPalette(pose: AvatarPose, bindWorld?: Map, inverseBind?: Map): Float32Array; /** * Build the entity-generic procedural humanoid skinned mesh (bind pose, world-bind space). * Combine with `computeJointPalette(pose)` to skin it on the GPU. */ export declare function buildAgentAvatarMesh(opts?: AgentAvatarMeshOptions): AgentAvatarMeshData; /** Deterministic accent colour (0xRRGGBB) from an entity id — same id → same colour (D.094). */ export declare function colorForEntity(entityId: string): number; //# sourceMappingURL=AgentAvatarMesh.d.ts.map