figment / hkxcmd

Havok Command Line Tools for Skyrim
Other
57 stars 23 forks source link

hkx + exportkf + convertkf != hkx #1

Open mlheur opened 8 years ago

mlheur commented 8 years ago

If I take a vanilla skyrim hkx file, run it through exportkf, then take that kf file and run it through converkf again, it makes significant changes to final hkx file.

I took the vanilla and new hkx files, converted them both to XML to compare the differences. So far I've found the following:

A. SoundPlay tracks are stripped. In Vanilla

      <hkparam name="numberOfTransformTracks">99</hkparam>
      <hkparam name="numberOfFloatTracks">4</hkparam>
      <hkparam name="extractedMotion">null</hkparam>
      <hkparam name="annotationTracks" numelements="99">
          <hkobject>
              <hkparam name="trackName"></hkparam>
              <hkparam name="annotations" numelements="2">
                  <hkobject>
                      <hkparam name="time">1.800000</hkparam>
                      <hkparam name="text">SoundPlay.NPCHumanWoodPlace</hkparam>
                  </hkobject>
                  <hkobject>
                      <hkparam name="time">7.233334</hkparam>
                      <hkparam name="text">SoundPlay.NPCHumanWoodChop</hkparam>
                  </hkobject>
              </hkparam>
          </hkobject>
          <hkobject>
              <hkparam name="trackName"></hkparam>
              <hkparam name="annotations" numelements="0"></hkparam>
          </hkobject>

Changed to

      <hkparam name="annotationTracks" numelements="97">
          <hkobject>
              <hkparam name="trackName">&#9216;</hkparam>
              <hkparam name="annotations" numelements="0"></hkparam>
          </hkobject>

B. hkMemoryResourceContainer are stripped. In Vanilla, gone entirely from new

  <hkobject name="#0046" class="hkMemoryResourceContainer" signature="0x4762f92a">
      <!-- memSizeAndFlags SERIALIZE_IGNORED -->
      <!-- referenceCount SERIALIZE_IGNORED -->
      <hkparam name="name"></hkparam>
      <!-- parent SERIALIZE_IGNORED -->
      <hkparam name="resourceHandles" numelements="0"></hkparam>
      <hkparam name="children" numelements="0"></hkparam>
  </hkobject>

C. Names (#nnnn) of multiple objects are changed, but signatures remain the same so I'm not sure what the impact will be; behavior files usually reference animations by name. Vanilla

  <hkobject name="#0048" class="hkaSplineCompressedAnimation" signature="0x792ee0bb">

New

  <hkobject name="#0041" class="hkaSplineCompressedAnimation" signature="0x792ee0bb">

D. Anonymous tracks have names added, new names are &#nnnn instead of just #nnnn like other named elements vanilla anonymous tracks

          <hkobject>
              <hkparam name="trackName"></hkparam>
              <hkparam name="annotations" numelements="0"></hkparam>
          </hkobject>

became

          <hkobject>
              <hkparam name="trackName">&#9216;</hkparam>
              <hkparam name="annotations" numelements="0"></hkparam>
          </hkobject>

E. A significant portion of the binary data is changed.

F. Not quite sure what to call it but what appears to be a framerate and frame duration have changed, like this:

vanilla was

      <hkparam name="numFrames">328</hkparam>
      <hkparam name="numBlocks">3</hkparam>
      <hkparam name="maxFramesPerBlock">128</hkparam>
      <hkparam name="maskAndQuantizationSize">400</hkparam>
      <hkparam name="blockDuration">4.233333</hkparam>
      <hkparam name="blockInverseDuration">0.236220</hkparam>
      <hkparam name="frameDuration">0.033333</hkparam>
      <hkparam name="blockOffsets" numelements="3">
          0 38000 79232
      </hkparam>
      <hkparam name="floatBlockOffsets" numelements="3">
          37984 41204 24472
      </hkparam>
      <hkparam name="transformOffsets" numelements="0"></hkparam>
      <hkparam name="floatOffsets" numelements="0"></hkparam>
      <hkparam name="data" numelements="103728">

exported/converted became

      <hkparam name="numFrames">327</hkparam>
      <hkparam name="numBlocks">2</hkparam>
      <hkparam name="maxFramesPerBlock">256</hkparam>
      <hkparam name="maskAndQuantizationSize">388</hkparam>
      <hkparam name="blockDuration">8.526073</hkparam>
      <hkparam name="blockInverseDuration">0.117287</hkparam>
      <hkparam name="frameDuration">0.033436</hkparam>
      <hkparam name="blockOffsets" numelements="2">
          0 76064
      </hkparam>
      <hkparam name="floatBlockOffsets" numelements="2">
          76056 23408
      </hkparam>
      <hkparam name="transformOffsets" numelements="0"></hkparam>
      <hkparam name="floatOffsets" numelements="0"></hkparam>
      <hkparam name="data" numelements="99472">

I'm willing to help work on this, I've gotten a copy of the code to work on, but if you could offer some hints on where to start that would be really helpful.

Here's the commands I used. Vanilla to KF

hkxcmd exportkf -d:DEBUG "C:\Users\Marc\Documents\Skyrim - Animations_bsa\meshes\actors\character\character assets\skeleton.hkx" "C:\Users\Marc\Documents\Skyrim - Animations_bsa\meshes\actors\characte\animations\animobjectchoploop.hkx" "animobjectchoploop.kf" Exporting '.\animobjectchoploop.kf'

KF to new HKX

hkxcmd convertkf -d:DEBUG -v:WIN32 -f SAVE_DEFAULT -f SAVE_SERIALIZE_IGNORED_MEMBERS "C:\Users\Marc\Documents\Skyrim - Animations_bsa\meshes\actors\character\character assets\skeleton.hkx" "C:\User\Marc\tmp\animobjectchoploop.kf" animobjectchoploop.hkx Class Registered: 'BGSGamebryoSequenceGenerator' c8df2d77 Class Registered: 'BSBoneSwitchGenerator' f33d3eea Class Registered: 'BSBoneSwitchGeneratorBoneData' c1215be6 Class Registered: 'BSComputeAddBoneAnimModifier' a67f8c46 Class Registered: 'BSCyclicBlendTransitionGenerator' 5119eb06 Class Registered: 'BSDecomposeVectorModifier' 31f6b8b6 Class Registered: 'BSDirectAtModifier' 19a005c0 Class Registered: 'BSDistTriggerModifier' b34d2bbd Class Registered: 'BSEventEveryNEventsModifier' 6030970c Class Registered: 'BSEventOnDeactivateModifier' 1062d993 Class Registered: 'BSEventOnFalseToTrueModifier' 81d0777a Class Registered: 'BSGetTimeStepModifier' bda33bfe Class Registered: 'BSIStateManagerModifier' 6cb24f2e Class Registered: 'BSIStateManagerModifierBSIStateManagerStateListener' 99463586 Class Registered: 'BSIStateManagerModifierBSiStateData' 6b8a15fc Class Registered: 'BSInterpValueModifier' 29adc802 Class Registered: 'BSIsActiveModifier' b0fde45a Class Registered: 'BSLimbIKModifier' 8ea971e5 Class Registered: 'BSLookAtModifier' d756fc25 Class Registered: 'BSLookAtModifierBoneData' 29efee59 Class Registered: 'BSModifyOnceModifier' 1e20a97a Class Registered: 'BSOffsetAnimationGenerator' b8571122 Class Registered: 'BSPassByTargetTriggerModifier' 703d7b66 Class Registered: 'BSRagdollContactListenerModifier' 8003d8ce Class Registered: 'BSSpeedSamplerModifier' d297fda9 Class Registered: 'BSSynchronizedClipGenerator' d83bea64 Class Registered: 'BSTimerModifier' 531f3292 Class Registered: 'BSTweenerModifier' 0d2d9a04 Class Registered: 'BSiStateTaggingGenerator' f0826fc1 Class Registered: 'hkbAttachmentModifier' cc0aab32 Class Registered: 'hkbAttachmentSetup' 0774632b Class Registered: 'hkbAttributeModifier' 1245d97d Class Registered: 'hkbAttributeModifierAssignment' 48b8ad52 Class Registered: 'hkbAuxiliaryNodeInfo' ca0888ca Class Registered: 'hkbBehaviorEventsInfo' 66840004 Class Registered: 'hkbBehaviorGraph' b1218f86 Class Registered: 'hkbBehaviorGraphData' 095aca5d Class Registered: 'hkbBehaviorGraphInternalState' 8699b6eb Class Registered: 'hkbBehaviorGraphInternalStateInfo' 645f898b Class Registered: 'hkbBehaviorGraphStringData' c713064e Class Registered: 'hkbBehaviorInfo' f7645395 Class Registered: 'hkbBehaviorInfoIdToNamePair' 35a0439a Class Registered: 'hkbBehaviorReferenceGenerator' 0fcb5423 Class Registered: 'hkbBindable' 2c1432d7 Class Registered: 'hkbBlendCurveUtils' 23041af0 Class Registered: 'hkbBlenderGenerator' 22df7147 Class Registered: 'hkbBlenderGeneratorChild' e2b384b0 Class Registered: 'hkbBlenderGeneratorChildInternalState' ff7327c0 Class Registered: 'hkbBlenderGeneratorInternalState' 84717488 Class Registered: 'hkbBlendingTransitionEffect' fd8584fe Class Registered: 'hkbBlendingTransitionEffectInternalState' b18c70c2 Class Registered: 'hkbBoneIndexArray' 00aa8619 Class Registered: 'hkbBoneWeightArray' cd902b77 Class Registered: 'hkbBoolVariableSequencedData' 37416fce Class Registered: 'hkbBoolVariableSequencedDataSample' 514763dc Class Registered: 'hkbCameraShakeEventPayload' 64136982 Class Registered: 'hkbCharacter' 3088a5c5 Class Registered: 'hkbCharacterAddedInfo' 3544e182 Class Registered: 'hkbCharacterControlCommand' 7a195d1d Class Registered: 'hkbCharacterControllerControlData' 5b6c03d9 Class Registered: 'hkbCharacterControllerModifier' f675d6fb Class Registered: 'hkbCharacterControllerModifierInternalState' f8dfec0d Class Registered: 'hkbCharacterData' 300d6808 Class Registered: 'hkbCharacterDataCharacterControllerInfo' a0f415bf Class Registered: 'hkbCharacterInfo' d9709ff2 Class Registered: 'hkbCharacterSetup' e5a2a413 Class Registered: 'hkbCharacterSkinInfo' 180d900d Class Registered: 'hkbCharacterSteppedInfo' 2eda84f8 Class Registered: 'hkbCharacterStringData' 655b42bc Class Registered: 'hkbClientCharacterState' a2624c97 Class Registered: 'hkbClipGenerator' 333b85b9 Class Registered: 'hkbClipGeneratorEcho' 750edf40 Class Registered: 'hkbClipGeneratorInternalState' 26ce5bf3 Class Registered: 'hkbClipTrigger' 7eb45cea Class Registered: 'hkbClipTriggerArray' 59c23a0f Class Registered: 'hkbCombineTransformsModifier' fd1f0b79 Class Registered: 'hkbCombineTransformsModifierInternalState' a92ed39f Class Registered: 'hkbCompiledExpressionSet' 3a7d76cc Class Registered: 'hkbCompiledExpressionSetToken' c6aaccc8 Class Registered: 'hkbComputeDirectionModifier' df358bd3 Class Registered: 'hkbComputeDirectionModifierInternalState' 6ac054d7 Class Registered: 'hkbComputeRotationFromAxisAngleModifier' 9b3f6936 Class Registered: 'hkbComputeRotationFromAxisAngleModifierInternalState' 71cd1eb0 Class Registered: 'hkbComputeRotationToTargetModifier' 47665f1c Class Registered: 'hkbComputeRotationToTargetModifierInternalState' 71cd1eb0 Class Registered: 'hkbCondition' da8c7d7d Class Registered: 'hkbContext' e0c4d4a7 Class Registered: 'hkbDampingModifier' 9a040f03 Class Registered: 'hkbDampingModifierInternalState' 508d3b36 Class Registered: 'hkbDefaultMessageLog' 7bd5c66f Class Registered: 'hkbDelayedModifier' 8e101a7a Class Registered: 'hkbDelayedModifierInternalState' 85fb0b80 Class Registered: 'hkbDetectCloseToGroundModifier' 981687b2 Class Registered: 'hkbDetectCloseToGroundModifierInternalState' 7b32d942 Class Registered: 'hkbEvaluateExpressionModifier' f900f6be Class Registered: 'hkbEvaluateExpressionModifierInternalExpressionData' b8686f6b Class Registered: 'hkbEvaluateExpressionModifierInternalState' b414d58e Class Registered: 'hkbEvaluateHandleModifier' 79757102 Class Registered: 'hkbEvent' 3e0fd810 Class Registered: 'hkbEventBase' 76bddb31 Class Registered: 'hkbEventDrivenModifier' 7ed3f44e Class Registered: 'hkbEventDrivenModifierInternalState' d14bf000 Class Registered: 'hkbEventInfo' 5874eed4 Class Registered: 'hkbEventPayload' da8c7d7d Class Registered: 'hkbEventPayloadList' 3d2dbd34 Class Registered: 'hkbEventProperty' 0db38a15 Class Registered: 'hkbEventRaisedInfo' 00c02da3 Class Registered: 'hkbEventRangeData' 6cb92c76 Class Registered: 'hkbEventRangeDataArray' 330a56ee Class Registered: 'hkbEventSequencedData' 76798eb8 Class Registered: 'hkbEventSequencedDataSequencedEvent' 9139b821 Class Registered: 'hkbEventsFromRangeModifier' bc561b6e Class Registered: 'hkbEventsFromRangeModifierInternalState' cc47b48d Class Registered: 'hkbExpressionCondition' 1c3c1045 Class Registered: 'hkbExpressionData' 6740042a Class Registered: 'hkbExpressionDataArray' 4b9ee1a2 Class Registered: 'hkbExtractRagdollPoseModifier' 804dcbab Class Registered: 'hkbFootIkControlData' a111b704 Class Registered: 'hkbFootIkControlsModifier' e5b6f544 Class Registered: 'hkbFootIkControlsModifierLeg' 9e17091a Class Registered: 'hkbFootIkDriverInfo' c6a09dbf Class Registered: 'hkbFootIkDriverInfoLeg' 224b18d1 Class Registered: 'hkbFootIkGains' a681b7f0 Class Registered: 'hkbFootIkModifier' ed8966c0 Class Registered: 'hkbFootIkModifierInternalLegData' e5ca3677 Class Registered: 'hkbFootIkModifierLeg' 9f3e3a04 Class Registered: 'hkbGenerator' 0d68aefc Class Registered: 'hkbGeneratorOutputListener' da8c7d7d Class Registered: 'hkbGeneratorSyncInfo' a3c341f8 Class Registered: 'hkbGeneratorSyncInfoSyncPoint' b597cf92 Class Registered: 'hkbGeneratorTransitionEffect' 5f771b12 Class Registered: 'hkbGeneratorTransitionEffectInternalState' d6692b5d Class Registered: 'hkbGetHandleOnBoneModifier' 50c34a17 Class Registered: 'hkbGetUpModifier' 61cb7ac0 Class Registered: 'hkbGetUpModifierInternalState' d84cad4a Class Registered: 'hkbGetWorldFromModelModifier' 873fc6f7 Class Registered: 'hkbGetWorldFromModelModifierInternalState' a92ed39f Class Registered: 'hkbHandIkControlData' d72b8d17 Class Registered: 'hkbHandIkControlsModifier' 9f0488bb Class Registered: 'hkbHandIkControlsModifierHand' 9c72e9e3 Class Registered: 'hkbHandIkDriverInfo' c299090a Class Registered: 'hkbHandIkDriverInfoHand' 14dfe1dd Class Registered: 'hkbHandIkModifier' ef8bc2f7 Class Registered: 'hkbHandIkModifierHand' 14dfe1dd Class Registered: 'hkbHandle' d8b6401c Class Registered: 'hkbIntEventPayload' ebbc1bd3 Class Registered: 'hkbIntVariableSequencedData' 7bfc518a Class Registered: 'hkbIntVariableSequencedDataSample' be7ac63c Class Registered: 'hkbKeyframeBonesModifier' 95f66629 Class Registered: 'hkbKeyframeBonesModifierKeyframeInfo' 72deb7a6 Class Registered: 'hkbLinkedSymbolInfo' 6a5094e3 Class Registered: 'hkbLookAtModifier' 3d28e066 Class Registered: 'hkbLookAtModifierInternalState' a14caba6 Class Registered: 'hkbManualSelectorGenerator' d932fab8 Class Registered: 'hkbManualSelectorGeneratorInternalState' 492c6137 Class Registered: 'hkbMessageLog' 26a196c5 Class Registered: 'hkbMirrorModifier' a9a271ea Class Registered: 'hkbMirroredSkeletonInfo' c6c2da4f Class Registered: 'hkbModifier' 96ec5ced Class Registered: 'hkbModifierGenerator' 1f81fae6 Class Registered: 'hkbModifierList' a4180ca1 Class Registered: 'hkbModifierWrapper' 3697e044 Class Registered: 'hkbMoveCharacterModifier' 8f7492a0 Class Registered: 'hkbMoveCharacterModifierInternalState' 28f67ba0 Class Registered: 'hkbNamedEventPayload' 65bdd3a0 Class Registered: 'hkbNamedIntEventPayload' 3c99bda4 Class Registered: 'hkbNamedRealEventPayload' 9c99fd70 Class Registered: 'hkbNamedStringEventPayload' 6caa9113 Class Registered: 'hkbNode' 6d26f61d Class Registered: 'hkbNodeInternalStateInfo' 7db9971d Class Registered: 'hkbParticleSystemEventPayload' 9df46cd6 Class Registered: 'hkbPoseMatchingGenerator' 29e271b4 Class Registered: 'hkbPoseMatchingGeneratorInternalState' 552d9dd4 Class Registered: 'hkbPoweredRagdollControlData' 0f5ba21b Class Registered: 'hkbPoweredRagdollControlsModifier' 7cb54065 Class Registered: 'hkbProjectData' 13a39ba7 Class Registered: 'hkbProjectStringData' 076ad60a Class Registered: 'hkbProxyModifier' 8a41554f Class Registered: 'hkbProxyModifierProxyInfo' 39de637e Class Registered: 'hkbRaiseEventCommand' a0a7bf9c Class Registered: 'hkbRealEventPayload' 9416affd Class Registered: 'hkbRealVariableSequencedData' e2862d02 Class Registered: 'hkbRealVariableSequencedDataSample' bb708bbd Class Registered: 'hkbReferencePoseGenerator' 26a5675a Class Registered: 'hkbRegisteredGenerator' 58b1d082 Class Registered: 'hkbRigidBodyRagdollControlData' 1e0bc068 Class Registered: 'hkbRigidBodyRagdollControlsModifier' aa87d1eb Class Registered: 'hkbRoleAttribute' 3eb2e082 Class Registered: 'hkbRotateCharacterModifier' 877ebc0b Class Registered: 'hkbRotateCharacterModifierInternalState' dc40bf4a Class Registered: 'hkbSenseHandleModifier' 2a064d99 Class Registered: 'hkbSenseHandleModifierRange' fb56b692 Class Registered: 'hkbSequence' 43182ca3 Class Registered: 'hkbSequenceInternalState' 419b9a05 Class Registered: 'hkbSequenceStringData' 6a5094e3 Class Registered: 'hkbSequencedData' da8c7d7d Class Registered: 'hkbSetBehaviorCommand' e18b74b9 Class Registered: 'hkbSetLocalTimeOfClipGeneratorCommand' fab12b45 Class Registered: 'hkbSetNodePropertyCommand' c5160b64 Class Registered: 'hkbSetWordVariableCommand' f3ae5fca Class Registered: 'hkbSetWorldFromModelModifier' afcfa211 Class Registered: 'hkbSimulationControlCommand' 2a241367 Class Registered: 'hkbSimulationStateInfo' a40822b4 Class Registered: 'hkbStateChooser' da8c7d7d Class Registered: 'hkbStateListener' da8c7d7d Class Registered: 'hkbStateMachine' 816c1dcb Class Registered: 'hkbStateMachineActiveTransitionInfo' bb90d54f Class Registered: 'hkbStateMachineDelayedTransitionInfo' 026d5499 Class Registered: 'hkbStateMachineEventPropertyArray' b07b4388 Class Registered: 'hkbStateMachineInternalState' bd1a7502 Class Registered: 'hkbStateMachineNestedStateMachineData' 7358f5da Class Registered: 'hkbStateMachineProspectiveTransitionInfo' 3ab09a2e Class Registered: 'hkbStateMachineStateInfo' 0ed7f9d0 Class Registered: 'hkbStateMachineTimeInterval' 60a881e5 Class Registered: 'hkbStateMachineTransitionInfo' cdec8025 Class Registered: 'hkbStateMachineTransitionInfoArray' e397b11e Class Registered: 'hkbStateMachineTransitionInfoReference' 9810c2d0 Class Registered: 'hkbStringCondition' 5ab50487 Class Registered: 'hkbStringEventPayload' ed04256a Class Registered: 'hkbTestStateChooser' c0fcc436 Class Registered: 'hkbTimerModifier' 338b4879 Class Registered: 'hkbTimerModifierInternalState' 83ec2d42 Class Registered: 'hkbTransformVectorModifier' f93e0e24 Class Registered: 'hkbTransformVectorModifierInternalState' 5ca91c99 Class Registered: 'hkbTransitionEffect' 945da157 Class Registered: 'hkbTwistModifier' b6b76b32 Class Registered: 'hkbVariableBindingSet' 338ad4ff Class Registered: 'hkbVariableBindingSetBinding' 4d592f72 Class Registered: 'hkbVariableInfo' 9e746ba2 Class Registered: 'hkbVariableValue' 0b99bd6a Class Registered: 'hkbVariableValueSet' 27812d8d Class Registered: 'hkbWorldEnums' 25640b46 Class Registered: 'hkbWorldFromModelModeData' a3af8783 ExportAnimation('C:\Users\Marc\tmp','C:\Users\Marc\Documents\Skyrim - Animations_bsa\meshe\actors\character\character assets\skeleton.hkx','C:\Users\Marc\tmp\animobjectchoploop.hkx') ExportAnimation Starting 'C:\Users\Marc\tmp\animobjectchoploop.kf' ExportAnimation Reading 'C:\Users\Marc\tmp\animobjectchoploop.kf' ExportAnimation Exporting 'C:\Users\Marc\tmp\animobjectchoploop.hkx' Missing scaling data for NPC COM [COM ] Missing rotation data for NPC Pelvis [Pelv] Missing scaling data for NPC Pelvis [Pelv] Missing scaling data for NPC L Thigh [LThg] Missing scaling data for NPC L Calf [LClf] Missing scaling data for NPC L Foot [Lft ] Missing scaling data for NPC R Thigh [RThg] Missing scaling data for NPC R Calf [RClf] Missing scaling data for NPC R Foot [Rft ] Missing scaling data for SkirtRBone01 Missing scaling data for SkirtRBone02 Missing scaling data for SkirtRBone03 Missing transform data for SkirtLBone01 Missing scaling data for SkirtLBone01 Missing scaling data for SkirtLBone02 Missing scaling data for SkirtLBone03 Missing scaling data for SkirtBBone01 Missing scaling data for SkirtBBone02 Missing scaling data for SkirtBBone03 Missing scaling data for SkirtFBone01 Missing scaling data for SkirtFBone02 Missing scaling data for SkirtFBone03 Missing scaling data for NPC Spine [Spn0] Missing transform data for NPC Spine1 [Spn1] Missing scaling data for NPC Spine1 [Spn1] Missing transform data for NPC Spine2 [Spn2] Missing scaling data for NPC Spine2 [Spn2] Missing scaling data for NPC L Clavicle [LClv] Missing transform data for NPC L UpperArm [LUar] Missing scaling data for NPC L UpperArm [LUar] Missing transform data for NPC L Forearm [LLar] Missing scaling data for NPC L Forearm [LLar] Missing scaling data for NPC R Clavicle [RClv] Missing scaling data for NPC R UpperArm [RUar] Missing scaling data for NPC R Forearm [RLar] Missing scaling data for AnimObjectA Missing scaling data for AnimObjectB Missing scaling data for NPC Neck [Neck] Missing scaling data for NPC Head [Head] Missing scaling data for NPCEyeBone Missing scaling data for NPC L Hand [LHnd] Missing scaling data for NPC R Hand [RHnd] Missing scaling data for AnimObjectL Missing scaling data for AnimObjectR Missing scaling data for Shield Missing scaling data for Weapon Missing scaling data for NPC L Pauldron Missing scaling data for NPC R Pauldron Missing scaling data for MagicEffectsNode Missing rotation data for NPC L MagicNode [LMag] Missing scaling data for NPC L MagicNode [LMag] Missing scaling data for NPC R MagicNode [RMag] Missing rotation data for NPC Head MagicNode [Hmag] Missing scaling data for NPC Head MagicNode [Hmag] Missing scaling data for NPC L Toe0 [LToe] Missing scaling data for NPC R Toe0 [RToe] Missing scaling data for NPC L ForearmTwist1 [LLt1]> Missing scaling data for NPC L ForearmTwist2 [LLt2] Missing scaling data for NPC L UpperarmTwist1 [LUt1] Missing scaling data for NPC L UpperarmTwist2 [LUt2] Missing scaling data for NPC R ForearmTwist1 [RLt1] Missing scaling data for NPC R ForearmTwist2 [RLt2] Missing transform data for NPC R UpperarmTwist1 [RUt1] Missing scaling data for NPC R UpperarmTwist1 [RUt1] Missing scaling data for NPC R UpperarmTwist2 [RUt2] Missing scaling data for Quiver Missing scaling data for WeaponAxe Missing scaling data for WeaponBack Missing scaling data for WeaponBow Missing transform data for WeaponDagger Missing scaling data for WeaponDagger Missing scaling data for WeaponMace Missing scaling data for WeaponSword Missing transform data for NPC L Finger00 [LF00] Missing scaling data for NPC L Finger00 [LF00] Missing transform data for NPC L Finger01 [LF01] Missing scaling data for NPC L Finger01 [LF01] Missing transform data for NPC L Finger02 [LF02] Missing scaling data for NPC L Finger02 [LF02] Missing transform data for NPC L Finger10 [LF10] Missing scaling data for NPC L Finger10 [LF10] Missing scaling data for NPC L Finger11 [LF11] Missing transform data for NPC L Finger12 [LF12] Missing scaling data for NPC L Finger12 [LF12] Missing transform data for NPC L Finger20 [LF20] Missing scaling data for NPC L Finger20 [LF20] Missing transform data for NPC L Finger21 [LF21] Missing scaling data for NPC L Finger21 [LF21] Missing transform data for NPC L Finger22 [LF22] Missing scaling data for NPC L Finger22 [LF22] Missing transform data for NPC L Finger30 [LF30] Missing scaling data for NPC L Finger30 [LF30] Missing transform data for NPC L Finger31 [LF31] Missing scaling data for NPC L Finger31 [LF31] Missing transform data for NPC L Finger32 [LF32] Missing scaling data for NPC L Finger32 [LF32] Missing scaling data for NPC L Finger40 [LF40] Missing transform data for NPC L Finger41 [LF41] Missing scaling data for NPC L Finger41 [LF41] Missing transform data for NPC L Finger42 [LF42] Missing scaling data for NPC L Finger42 [LF42] Missing transform data for NPC R Finger00 [RF00] Missing scaling data for NPC R Finger00 [RF00] Missing scaling data for NPC R Finger01 [RF01] Missing transform data for NPC R Finger02 [RF02] Missing scaling data for NPC R Finger02 [RF02] Missing transform data for NPC R Finger10 [RF10] Missing scaling data for NPC R Finger10 [RF10] Missing transform data for NPC R Finger11 [RF11] Missing scaling data for NPC R Finger11 [RF11] Missing transform data for NPC R Finger12 [RF12] Missing scaling data for NPC R Finger12 [RF12] Missing transform data for NPC R Finger20 [RF20] Missing scaling data for NPC R Finger20 [RF20] Missing transform data for NPC R Finger21 [RF21] Missing scaling data for NPC R Finger21 [RF21] Missing transform data for NPC R Finger22 [RF22] Missing scaling data for NPC R Finger22 [RF22] Missing transform data for NPC R Finger30 [RF30] Missing scaling data for NPC R Finger30 [RF30] Missing transform data for NPC R Finger31 [RF31] Missing scaling data for NPC R Finger31 [RF31] Missing transform data for NPC R Finger32 [RF32] Missing scaling data for NPC R Finger32 [RF32] Missing transform data for NPC R Finger40 [RF40] Missing scaling data for NPC R Finger40 [RF40] Missing transform data for NPC R Finger41 [RF41] Missing scaling data for NPC R Finger41 [RF41] Missing transform data for NPC R Finger42 [RF42] Missing scaling data for NPC R Finger42 [RF42] .\Animation\SplineCompressed\hkaSplineCompressedAnimationCtor.cpp(366): [0x36118E94] Report : Number of blocks: 2 .\Animation\SplineCompressed\hkaSplineCompressedAnimationCtor.cpp(367): [0x36118E94] Report : Size of largest block (PlayStation(R)3 SPU): 76224 bytes. .\Animation\SplineCompressed\hkaSplineCompressedAnimationCtor.cpp(372): [0x36118E94] Report : Original Size: 2030016 bytes. Compressed Size: 99612 bytes. .\Animation\SplineCompressed\hkaSplineCompressedAnimationCtor.cpp(373): [0x36118E94] Report : Compression Ratio: 20.379230:1. Exporting 'C:\Users\Marc\tmp\animobjectchoploop.hkx'

XML conversions.

hkxcmd convert -v:XML -f SAVE_DEFAULT -f SAVE_SERIALIZE_IGNORED_MEMBERS -f SAVE_TEXT "C:\Users\Marc\tmp\animobjectchoploop.hkx" animobjectchoploop.xml Converting '.\animobjectchoploop.hkx' ... hkxcmd convert -v:XML -f SAVE_DEFAULT -f SAVE_SERIALIZE_IGNORED_MEMBERS -f SAVE_TEXT "C:\Users\Marc\tmp\animobjectchoploop-orig.hkx" animobjectchoploop-orig.xml Converting '.\animobjectchoploop-orig.hkx' ...

P.S. After typing all this I figured to convertkf the KF file to XML, without going through convertkf to HKX first - it seems the items might be stripped/mangled in the exportkf process since the kf-xml exactly matches the new-hkx-xml file, and both differ from the vanilla-hkx-xml file.

figment commented 8 years ago

Thats a bit of a wall of text. I'm currently working on 3ds max tools at the moment and have not looked at this code in several years. I will probably take a look at this in a couple of weeks depending on my time availability. More likely I will wait for Fallout 4 release and update only if that game uses similar techniques and I'll fix any issues then.