Who is this for?
- Total beginners who have never touched Unreal before.
- Anyone who, like me, is still figuring things out as they go.
Important: I am not an expert. When I’m unsure, I flag it with ❓ and explain my best guess.
- Table of Contents
- Why We Use the Altar Project
- Step 1 – Open the Altar Project in UE 5.3.2
- Step 2 – Extract the Skeleton & Animations with FModel
- Step 3 – Import Everything into Blender
- Step 4 (Optional) – Edit in MotionBuilder or Cascadeur
- Step 5 – Bring the Mesh into Unreal without Breakage
- Step 6 – Import Your Animations at 60 FPS
- Step 7 – Mirror the Game’s Folder Structure
- Step 8 – Add Animation Notifies with JsonAsAsset
- Step 9 – Final Tweaks & Packaging
- Common Pitfalls
- Useful Links
Table of Contents
- Why We Use the Altar Project
- Step 1 – Open the Altar Project in UE 5.3.2
- Step 2 – Extract the Skeleton & Animations with FModel
- Step 3 – Import Everything into Blender
- Step 4 (Optional) – Edit in MotionBuilder / Cascadeur
- Step 5 – Bring the Mesh into Unreal without Breakage
- Step 6 – Import Your Animations at 60 FPS
- Step 7 – Mirror the Game’s Folder Structure
- Step 8 – Add Animation Notifies with JsonAsAsset
- Step 9 – Final Tweaks & Packaging
- Common Pitfalls
- Useful Links
Why We Use the Altar Project
Oblivion Remastered was built with a custom branch of Unreal. Altar is a public demo project on GitHub that matches that branch. By loading our new animations into Altar first, we can package them so the game will actually read them. Think of Altar as a sandbox that speaks the same language as the final game.
Step 1 – Open the Altar Project in UE 5.3.2
- Download the project: https://github.com/Kein/Altar
- Use exactly UE 5.3.2. Newer versions may break things.
- If Unreal refuses to open the project because it “can’t build C++ files,” the problem is often Visual Studio:
- UE tries to compile with every compiler it finds.
- If you have only VS 2022 installed, UE sometimes chokes.
- Quick fix: Temporarily rename or delete the
MSVC\14.*
folder for the newer toolset. UE will then fall back to the older one and the project opens.
Analogy: UE is picky like a restaurant that only accepts one brand of credit card. Hide the others and it’s happy.
Step 2 – Extract the Skeleton & Animations with FModel
We need the game’s Humanoid skeleton and the vanilla animations so we can edit them.
- Grab the latest FModel release (older ones miss some assets).
- Open the archive
OblivionRemastered‑Windows.utoc
and navigate to:OblivionRemastered/Content/Art/Character/Humanoid/
- Right‑click
SK_HumanoidFull
→ Export → .psk (this is the mesh + bones). - Export any animation you plan to replace as .psa. Example sprint:
.../Animation/Humanoid/ThirdPerson/Passive/Locomotion/Normal/A_Humanoid_Passive_Sprint.uasset
Two FModel Versions? ❓
JsonAsAsset (Step 8) sometimes requires a different FModel build to fetch notify data. Check their Discord for the recommended version.
About .usmap Files
Both FModel and JsonAsAsset will ask for usmap
files. You can dump them with UE4SS. If that sounds annoying, I shared my own dump here (no guarantee it still works):
Step 3 – Import Everything into Blender
- Install the PSA/PSK Importer: https://extensions.blender.org/add-ons/io-scene-psk-psa/
- Import
SK_HumanoidFull.psk
. In the Outliner, rename the top node toArmature
.- Why? Unreal treats the top node name as root. Calling it
Armature
tricks UE into using a cleanroot
hierarchy.
- Why? Unreal treats the top node name as root. Calling it
- Immediately export to FBX with scale
0.01
(Blender is giant by default). - To bring in vanilla animations:
- Select the
Armature
. - File → Import → PSA and choose the file from Step 2.
- Select the

FPS Minefield ★
Set Blender’s scene FPS to 30 before importing the PSA. The developers animated at 30 FPS but imported to UE at 60 FPS (custom sample rate). If you forget this, the total length doubles, and notifies will fire at the wrong time.
Rule of Thumb: Always ask, “What FPS was the source made at?” before touching anything.

Blender ‘Action’ Tracks
After import, you might see nothing change. Switch the Action dropdown—each animation lives there, similar to MotionBuilder Takes.
Step 4 (Optional) – Edit in MotionBuilder or Cascadeur
I animate in MotionBuilder because I’m old‑school, but it’s pricey. Cascadeur is a cheaper modern alternative. I’ll upload the rig to Nexus soon so everyone can use it.
Step 5 – Bring the Mesh into Unreal without Breakage
- In Altar, recreate the folder path you saw in FModel. Example:
Content/Art/Character/Humanoid/
- Import your FBX there.
- Unreal auto‑creates a new Skeleton asset. Rename it (e.g.,
SK_HumanoidFull_fake
) so it never overwrites the game’s real one. We only need it so the animations have something to reference while cooking.
Step 6 – Import Your Animations at 60 FPS
- Right‑click in the same folder → Import → select your FBX animation.
- Choose the fake skeleton.
- In the import options, set Sample Rate = 60.
- Double‑check that the timeline length matches the original (seconds and frames).
Step 7 – Mirror the Game’s Folder Structure
If the game’s file lives at
.../Passive/Locomotion/Normal/
your replacement must follow the exact same path inside the .pak
. If not, the engine ignores it.
Step 8 – Add Animation Notifies with JsonAsAsset
- Install the JsonAsAsset plugin in Altar.
- Dump the notify data from the original animation as
.json
via FModel. - Create an empty Blueprint with the same name and parent class shown inside the
.json
. Place it in the matching folder. ❓ Why is this needed? JsonAsAsset copies tags from the Blueprint when pasting notifies. No BP, no notifies. - Right‑click your new Anim Sequence → Scripts → Attach Notifies from JSON.

Analogy: Think of JsonAsAsset as a stamp factory. The Blueprint is the rubber sheet with the pattern. Without it, the stamp machine has nothing to copy.
Step 9 – Final Tweaks & Packaging
- Open the Anim Sequence, slide notifies if the timing feels off.
- Unreal 5.3 removed Chunk Assignments. Now we use Primary Asset Labels:
- Right‑click → Misc → Primary Asset Label.
- Add your assets.
- Pick a Chunk ID (any unused number).
- Cook the project. Your
.pak
ends with_P.pak
. - Drop the file into the game’s
~mods
folder. Launch the game and swing that sword!
Common Pitfalls
Problem | Likely Cause | Quick Fix |
---|---|---|
Project won’t open | VS 2022 toolset conflict | Hide newer MSVC folder |
Animation plays at double length | Imported PSA at wrong FPS | Set Blender scene to 30 FPS first |
Notifies missing | No Blueprint with matching name | Create empty BP before JsonAsAsset |
Mod doesn’t load | Wrong folder path inside .pak | Mirror original path exactly |
Useful Links
- Altar Project: https://github.com/Kein/Altar
- PSA/PSK Blender Add‑on: https://extensions.blender.org/add-ons/io-scene-psk-psa/
- JsonAsAsset Discord: https://discord.gg/xXEw4jc2UT
- UE4SS: https://github.com/UE4SS/UE4SS
- My example .usmap dump:
Final Words
If anything here is unclear—or flat‑out wrong—please shout at me in the comments. I’m learning too, and I’ll keep polishing this guide. Happy modding!
コメント