Smooth Motion Factory
Precautions when creating Skyrim locomotion 본문
Understanding Skyrim Locomotion Animation: Footstep Events, Looping, and Weapon-Type Differences
Skyrim’s locomotion system is fundamentally built on eight-directional walk and run animations, with additional strafe animations used for left and right movement. In this article, I’ll explain how Skyrim’s locomotion works—using the two-handed sword locomotion set as the primary example—and why certain animation issues occur with weapons like warhammers and battleaxes.
Two-Handed Sword Locomotion (2hm_): Structure and Footstep Rules
When wielding a two-handed sword, Skyrim uses a total of 18 locomotion animations consisting of:
- 8 directional run animations
- 8 directional walk animations
- Left/right strafe run
- Left/right strafe walk
Important Note About Footstep Events
For 2hm locomotion, footstep annotations are embedded in the behavior files, not in the animation files. Because these events are not stored in the HKX animation itself:
- You must not add footstep annotations to your animation files
- You cannot change the footstep timing manually
- Animations must be created to match the timing defined in the behavior
To assist animators, I documented the vanilla behavior’s locomotion data below. All values are based on 30 FPS.
Example Data (2hm Run Animations)
(Only a portion shown here — the full list can follow the same structure.)
2hm_runbackward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.433000 FootLeft
2hm_runbackwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootRight
0.433000 FootLeft
2hm_runbackwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootRight
0.400000 FootLeft
2hm_runforward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hm_runforwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hm_runforwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hm_runleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hm_runright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hm_runstrafeleft.hkx
# numOriginalFrames: 26
# duration: 0.833333
0.300000 FootLeft
0.600000 FootRight
2hm_runstraferight.hkx
# numOriginalFrames: 26
# duration: 0.833333
0.266667 FootLeft
0.600000 FootRight
Example Data (2hm Walk Animations)
2hm_walkbackward.hkx
# numOriginalFrames: 57
# duration: 1.866667
0.100000 FootLeft
0.933000 FootRight
2hm_walkbackwardleft.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.066667 FootLeft
2hm_walkbackwardright.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.766667 FootRight
0.800000 FootLeft
2hm_walkforward.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hm_walkforwardleft.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hm_walkforwardright.hkx
# numOriginalFrames: 51
# duration: 1.666667
0.033333 FootLeft
0.967000 FootRight
2hm_walkleft.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.033000 FootRight
2hm_walkright.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.700000 FootLeft
1.433333 FootRight
The Special Case: 2hw Locomotion (Warhammers & Battleaxes)
Two-handed blunt weapons use a completely different locomotion structure.
Vanilla Structure
2hw_runarmblend.hkx2hw_walkarmblend.hkx
These animations:
- Control upper-body movement only
- Include no footstep events
- Are independent of the 2hm lower-body animations
Meanwhile, the legs still use the 2hm locomotion animations.
The Problem: Upper and Lower Body Drift Over Time
Because:
- the 2hw upper-body loops
- and the 2hm lower-body loops
…have different cycle lengths, the animations eventually fall out of sync. This causes:
- Upper and lower body moving at different rhythms
- Visible jitter or shaking during long movement
- A “disconnected” look when sprinting in a single direction
Even if the upper-body animation is almost static, the desync still becomes noticeable over time.
The Fix: Replacing 2hw Locomotion with a Full 2hm-Style Set
The mod War Hammer and Battle Axe Movement Fix corrects this problem by:
- Replacing the upper-body blends with full locomotion animations
- Matching the exact structure used by two-handed swords
- Adding footstep events directly into the animation files (since 2hw behavior does not include them)
What You Need to Create
You must recreate the entire locomotion set:
- 8 run animations
- 8 walk animations
- No strafe animations (vanilla 2hw does not use them)
- Footstep annotations added directly into each HKX file
The footstep timing should match the 2hm reference values.
Example Data (2hw Run Animations)
2hw_runbackward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.433000 FootLeft
2hw_runbackwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootRight
0.433000 FootLeft
2hw_runbackwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootRight
0.400000 FootLeft
2hw_runforward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hw_runforwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hw_runforwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hw_runleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hw_runright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
Example Data (2hw Walk Animations)
2hw_walkbackward.hkx
# numOriginalFrames: 57
# duration: 1.866667
0.100000 FootLeft
0.933000 FootRight
2hw_walkbackwardleft.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.066667 FootLeft
2hw_walkbackwardright.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.766667 FootRight
0.800000 FootLeft
2hw_walkforward.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hw_walkforwardleft.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hw_walkforwardright.hkx
# numOriginalFrames: 51
# duration: 1.666667
0.033333 FootLeft
0.967000 FootRight
2hw_walkleft.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.033000 FootRight
2hw_walkright.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.700000 FootLeft
1.433333 FootRight
Conclusion
To create polished and functional Skyrim locomotion animations:
- Follow the vanilla locomotion timing (especially footstep events)
- Ensure loop curves are clean and seamless
- Match the correct animation structure for each weapon type
- For 2hw locomotion, rebuild the entire locomotion set to prevent desync between upper and lower body
By following these rules, animators can avoid many of the problems commonly encountered when creating custom movement animations for Skyrim.
스카이림 로코모션 애니메이션 구조, 발소리 타이밍, 무기 타입별 차이
스카이림의 이동 애니메이션(로코모션)은 기본적으로 8방향 걷기와 8방향 달리기로 구성되어 있으며, 좌우 이동에는 추가로 스트레이프(strafe) 모션이 포함되어 있습니다. 이 글에서는 특히 양손검(2hm) 로코모션을 기준으로 스카이림 엔진이 이동 애니메이션을 어떻게 처리하는지 설명하고, 양손망치·양손도끼(2hw) 무기를 사용할 때 발생하는 문제점과 해결 방식까지 정리해보겠습니다.
양손검 로코모션(2hm)의 구조와 발소리 규칙
2hm 로코모션은 총 18개의 애니메이션으로 구성됩니다.
- 8 방향 달리기(run)
- 8 방향 걷기(walk)
- 좌/우 스트레이프 달리기
- 좌/우 스트레이프 걷기
발소리(footstep) 주석은 애니메이션 파일에 넣으면 안 된다
스카이림의 2hm 로코모션은 발소리 이벤트가 비헤이비어 파일에 내장되어 있습니다. 즉, 애니메이션 파일(.hkx)에는 발소리 주석을 추가하면 안 되며, 애니메이션 제작 시 반드시 비헤이비어에 기록된 타이밍에 맞추어 애니메이션을 제작해야 합니다.
아래는 바닐라 2hm 로코모션의 발소리 타이밍을 정리한 자료이며, FPS 30 기준으로 작성되었습니다.
예시: 2hm 러닝 애니메이션 발소리 데이터
2hm_runbackward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.433000 FootLeft
2hm_runbackwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootRight
0.433000 FootLeft
2hm_runbackwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootRight
0.400000 FootLeft
2hm_runforward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hm_runforwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hm_runforwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hm_runleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hm_runright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hm_runstrafeleft.hkx
# numOriginalFrames: 26
# duration: 0.833333
0.300000 FootLeft
0.600000 FootRight
2hm_runstraferight.hkx
# numOriginalFrames: 26
# duration: 0.833333
0.266667 FootLeft
0.600000 FootRight
Example Data (2hm Walk Animations)
2hm_walkbackward.hkx
# numOriginalFrames: 57
# duration: 1.866667
0.100000 FootLeft
0.933000 FootRight
2hm_walkbackwardleft.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.066667 FootLeft
2hm_walkbackwardright.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.766667 FootRight
0.800000 FootLeft
2hm_walkforward.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hm_walkforwardleft.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hm_walkforwardright.hkx
# numOriginalFrames: 51
# duration: 1.666667
0.033333 FootLeft
0.967000 FootRight
2hm_walkleft.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.033000 FootRight
2hm_walkright.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.700000 FootLeft
1.433333 FootRight
로코모션이 ‘뚝뚝 끊겨 보이는’ 이유
이동 중 애니메이션이 뚝 끊기거나 루프 전환이 부자연스럽게 보인다면, 대부분의 원인은 그래프 에디터에서 루프 처리가 제대로 되지 않았기 때문입니다.
- 곡선이 시작과 끝에서 자연스럽게 이어지는지
- 마지막 프레임이 첫 프레임으로 부드럽게 연결되는지
이 두 가지를 확인해야 완벽한 루프 애니메이션을 만들 수 있습니다.
양손망치·양손도끼(2hw)의 로코모션 문제
2hw 무기(양손망치/양손도끼)는 로코모션 구조가 2hm과 완전히 다릅니다.
바닐라 2hw 로코모션 구성
2hw_runarmblend.hkx— 상체 달리기 루프2hw_walkarmblend.hkx— 상체 걷기 루프
2hw에서는 상체 애니메이션만 별도로 루프되며, 하체는 여전히 2hm_ 로코모션을 사용합니다.
이 구조의 문제점
상체와 하체의 루프 길이가 서로 다르기 때문에 다음 문제가 발생합니다:
- 오래 이동할수록 상체와 하체가 따로 움직임
- 장시간 이동 시 상체 떨림(jitter)
- 하체와 상체 리듬이 계속 어긋남
바닐라의 상체 모션이 거의 정적인 포즈 형태라면 티가 덜 날 수 있지만, 실제로는 이동할수록 점점 심하게 드러납니다.
해결 방법 War Hammer and Battle Axe Movement Fix
해당 모드는 2hw 이동 구조를 아예 2hm 방식으로 재구성하여 상/하체가 같은 루프를 따라가도록 수정합니다.
적용 방식은 다음과 같습니다:
- 2hm 구조와 동일한 8방향 걷기/달리기 애니메이션 제작
- 2hw에는 발소리가 없으므로 애니메이션 파일에 직접 Foot 이벤트 추가
- 스트레이프 애니메이션은 사용하지 않으므로 제작할 필요 없음
이 방식으로 구성하면 상체와 하체가 완전히 동기화되며, 2hw 무기의 이동 떨림 문제를 해결할 수 있습니다.
2hw 예시 데이터
2hw_runbackward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.433000 FootLeft
2hw_runbackwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootRight
0.433000 FootLeft
2hw_runbackwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootRight
0.400000 FootLeft
2hw_runforward.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hw_runforwardleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hw_runforwardright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
2hw_runleft.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033000 FootLeft
0.367000 FootRight
2hw_runright.hkx
# numOriginalFrames: 23
# duration: 0.733333
0.033333 FootLeft
0.366667 FootRight
Example Data (2hw Walk Animations)
2hw_walkbackward.hkx
# numOriginalFrames: 57
# duration: 1.866667
0.100000 FootLeft
0.933000 FootRight
2hw_walkbackwardleft.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.066667 FootLeft
2hw_walkbackwardright.hkx
# numOriginalFrames: 57
# duration: 1.866667
1.766667 FootRight
0.800000 FootLeft
2hw_walkforward.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hw_walkforwardleft.hkx
# numOriginalFrames: 48
# duration: 1.566667
0.033333 FootLeft
0.800000 FootRight
2hw_walkforwardright.hkx
# numOriginalFrames: 51
# duration: 1.666667
0.033333 FootLeft
0.967000 FootRight
2hw_walkleft.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.033000 FootRight
2hw_walkright.hkx
# numOriginalFrames: 52
# duration: 1.700000
0.700000 FootLeft
1.433333 FootRight
정리
스카이림 로코모션을 안정적으로 제작하려면 다음을 지켜야 합니다:
- 바닐라의 정확한 발소리 타이밍 준수
- 루프 그래프를 반드시 매끄럽게 처리
- 무기 타입마다 사용되는 로코모션 구조 이해
- 2hw는 2hm 방식으로 전체 로코모션을 교체해야 상하체 불일치 문제 해결
이러한 원리를 알고 제작하면 로코모션 품질이 크게 향상되며, 이동 중 떨림이나 발소리 오류 같은 문제도 예방할 수 있습니다.
'Modding' 카테고리의 다른 글
| Understanding DirectInput (DXScanCode) Keycodes for Modding (0) | 2025.12.06 |
|---|