b7db292987
Four clips authored programmatically in Blender on the PolygonSyntyCharacter skeleton (full-body keys per pose, numeric world-space verification of the fall: hips 0.88->0.14m) and exported per-action FBX (Key All Bones, Force Start/End Keying, FBX Units Scale). Imported as HUMANOID - the project's pipeline is Human rigs (CharactersAvatar isHuman=true; CLAUDE.md's 'Generic' note was stale), so muscle-space retargeting plays these on the player AND every monster rig with zero bone-path matching. CopyFromOther failed on the Blender-added 'Armature' node (hierarchy mismatch) -> CreateFromThisModel; root motion fully baked into pose (the CC owns the transform). - A_Death_FallBack (0.90s = exactly the 54-tick corpse window): recoil -> fall -> flat on the back -> settle. Wired as the Death state on BOTH controllers, replacing the crouch-idle placeholder. - A_Fire_OneHand (0.4s): new IsFiring param + Fire state on the player controller; PlayerAnimationDriveSystem routes FireActive to it (melee owns IsAttacking again). - A_Dash_Lean (0.33s): new IsDashing param + Dash state; driven from the local player's predicted DashState window (not replicated -> remotes skip). - A_HitReact (0.27s): imported + avatar'd, wiring deferred (needs a replicated hit-tick source; body flash covers the read today). 456/456 EditMode; Play-validated: forced IsDead renders the soldier flat on the ground in-game (Blender->FBX->Humanoid->Rukhanka chain proven), Fire state enters and plays; console clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
144 lines
3.7 KiB
YAML
144 lines
3.7 KiB
YAML
fileFormatVersion: 2
|
|
guid: 0f2461f6c2e61884790171b7755833c8
|
|
ModelImporter:
|
|
serializedVersion: 24501
|
|
internalIDToNameTable: []
|
|
externalObjects: {}
|
|
materials:
|
|
materialImportMode: 2
|
|
materialName: 0
|
|
materialSearch: 1
|
|
materialLocation: 1
|
|
searchTexturesGlobally: 0
|
|
animations:
|
|
legacyGenerateAnimations: 4
|
|
bakeSimulation: 0
|
|
resampleCurves: 1
|
|
optimizeGameObjects: 0
|
|
removeConstantScaleCurves: 0
|
|
motionNodeName:
|
|
animationImportErrors:
|
|
animationImportWarnings:
|
|
animationRetargetingWarnings:
|
|
animationDoRetargetingWarnings: 0
|
|
importAnimatedCustomProperties: 0
|
|
importConstraints: 0
|
|
animationCompression: 1
|
|
animationRotationError: 0.5
|
|
animationPositionError: 0.5
|
|
animationScaleError: 0.5
|
|
animationWrapMode: 0
|
|
extraExposedTransformPaths: []
|
|
extraUserProperties: []
|
|
clipAnimations:
|
|
- serializedVersion: 16
|
|
name: A_HitReact
|
|
takeName: Scene
|
|
internalID: -623603649343465320
|
|
firstFrame: 0
|
|
lastFrame: 8
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 1
|
|
loopBlendPositionY: 1
|
|
loopBlendPositionXZ: 1
|
|
keepOriginalOrientation: 1
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 1
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events: []
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
isReadable: 0
|
|
meshes:
|
|
lODScreenPercentages: []
|
|
globalScale: 1
|
|
meshCompression: 0
|
|
addColliders: 0
|
|
useSRGBMaterialColor: 1
|
|
sortHierarchyByName: 1
|
|
importPhysicalCameras: 1
|
|
importVisibility: 1
|
|
importBlendShapes: 1
|
|
importCameras: 1
|
|
importLights: 1
|
|
nodeNameCollisionStrategy: 1
|
|
fileIdsGeneration: 2
|
|
swapUVChannels: 0
|
|
generateSecondaryUV: 0
|
|
useFileUnits: 1
|
|
keepQuads: 0
|
|
weldVertices: 1
|
|
bakeAxisConversion: 0
|
|
preserveHierarchy: 0
|
|
skinWeightsMode: 0
|
|
maxBonesPerVertex: 4
|
|
minBoneWeight: 0.001
|
|
optimizeBones: 1
|
|
generateMeshLods: 0
|
|
meshLodGenerationFlags: 0
|
|
maximumMeshLod: -1
|
|
importUVs: -1
|
|
importVertexColors: 1
|
|
meshOptimizationFlags: -1
|
|
indexFormat: 0
|
|
secondaryUVAngleDistortion: 8
|
|
secondaryUVAreaDistortion: 15.000001
|
|
secondaryUVHardAngle: 88
|
|
secondaryUVMarginMethod: 1
|
|
secondaryUVMinLightmapResolution: 40
|
|
secondaryUVMinObjectScale: 1
|
|
secondaryUVPackMargin: 4
|
|
useFileScale: 1
|
|
strictVertexDataChecks: 0
|
|
tangentSpace:
|
|
normalSmoothAngle: 60
|
|
normalImportMode: 0
|
|
tangentImportMode: 3
|
|
normalCalculationMode: 4
|
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
|
blendShapeNormalImportMode: 1
|
|
normalSmoothingSource: 0
|
|
calculateBlendshapeNormalsDeltaFromImportedNormals: 0
|
|
referencedClips: []
|
|
importAnimation: 1
|
|
humanDescription:
|
|
serializedVersion: 3
|
|
human: []
|
|
skeleton: []
|
|
armTwist: 0.5
|
|
foreArmTwist: 0.5
|
|
upperLegTwist: 0.5
|
|
legTwist: 0.5
|
|
armStretch: 0.05
|
|
legStretch: 0.05
|
|
feetSpacing: 0
|
|
globalScale: 1
|
|
rootMotionBoneName:
|
|
hasTranslationDoF: 0
|
|
hasExtraRoot: 1
|
|
skeletonHasParents: 1
|
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
|
autoGenerateAvatarMappingIfUnspecified: 1
|
|
animationType: 3
|
|
humanoidOversampling: 1
|
|
avatarSetup: 1
|
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
|
importBlendShapeDeformPercent: 1
|
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
|
additionalBone: 0
|
|
userData:
|
|
assetBundleName:
|
|
assetBundleVariant:
|