Models - Stellar-Blade-Modding-Team/Stellar-Blade-Modding-Guide GitHub Wiki
Overview
[!IMPORTANT] Models from Stellar blade and other game's extracted mesh assets plays the main role of mesh modding. As one of the most popular section of modding category, you will need to understand the princple of model import and learn the basic of how to use blender and UE. We will be scripting the basic guide of import any in game meshes back to the game.
[!TIP] If you completed this guide, you can nagaviate to Custom Model Import Guide for advanced rigging tutorial.
Previewing and Exporting
[!NOTE] Follow the Extraction tips to find and preview your targeted mesh you planned to modify and export it from Fmodel.
For previewing, simply double click on the uasset that's for the model inside the subfolder it located. A 3D Viewport inside Fmodel will be opened and you can inspect the model.uasset details.
*example CH_P_EVE_09.uasset
Importing to Blender
[!NOTE] Keep in mind that
.uemodel
format from Fmodel works with some known bugs without neck seam because it's correct bone position upon export. So we will be mainly using.uemodel
format as example for this guide. However we still included instruction for.psk
import.
Required plugins
Blender UEFormat Addon (Recommended for correct bone position with model import)
Blender PSK/PSA Addon 4.0+ (Require fix with neck seam issue by incorrect bone position)
Blender FBX Exporter Fixes (Stellar Blade) (Recommended for fixing inverted bone bug upon export)
PS: Thanks to both Lemi21 and Njaecha for merging the updated FBX Exporter.
[!WARNING] Install the FBX Exporter manually by dragging
io_scene_fbx
folder from the zip intoblender-4.x.x-windows-x64\4.x\scripts\addons_core
. Make a back up of the defaultio_scene_fbx
folder before you replace it.
Step 1: Import Setting
Launch Blender. Remove object, camera and light from the default scene.
Before we import the extracted .uemodel
/.psk
file in blender, you need to have UEFormat and PSK plugin installed and finish import settings down below.
[!TIP] (UEFormat) If your blender scene doesn't show a drop-addon lists, click the
<
button which sits on the bordline in-between the object menu and main scene window.
(UEFormat) Find UEFormat tag in the dropped menu and click in > change the general scale from
0.01
to1
(UEFormat) Tog off
Import Sockets
option in UEFormat tag
On the right side click in Scene> Units> change Unit scale from
1
to0.01
Step 2: Mesh Import
Once Import Setting is done you can start import your extracted asset into blender scene.
(UEFormat) Click
Import Model
in UEFormat Tag
(PSK) Go File> Import> Unreal PSK (.psk/.pskx)
(UEFormat) Inside the new window the
General Scale
should have been1
if you done everything correct in the previous step.
(PSK) Inside the new window the
Scale
should have been1
by default.
Click Import
/Import Model
.
[!TIP] You can save your preset so the setting will always be applied when you launch your blender file.
Open new blender project:
Set units to
0.01
Import > UEFormat > Set scale to
1.00
> Cancel import
Files> Default> Save Startup File
Step 3: Mesh Export
Once model is imported in your blender scene, you will see the object carries the in game ID's in it's name. Double click on it and rename from its previous name to Armature. Remove 0.01
from model's name if it's there.
*example CH_P_EVE_09_LOD0_Skeleton> Armature for Skeleton(UEFormat)
*example CH_P_EVE_09_LOD0 for Model(UEFormat)
*example CH_P_EVE_09> Armature for Skeleton(PSK)
*example CH_P_EVE_09.001> CH_P_EVE_09 for Model(PSK)
[!TIP] You can make any edits on the imported model in blender. However for the purpose of verifying if your model is successfully imported in game, we suggest you to make some obvious changes on the mesh such as removing vertices on capes, gloves or any parts of the model, or use sculpt brush to make a drastic deform on your model.
Once your finished mesh editing, It's time to export.
File> Export> FBX (.fbx)
[!WARNING] In export setting: Disable
Add leaf bones
in Armature section and change other settings as the image shows.
[!WARNING] If you are exporting head mesh with blendshapes (morph targets), you need to disable
Apply modifiers
.
If there's no other objects aside your game model in the blender scene, you can export it right away but make sure the name is identical as what the model.uasset uses.
*example CH_P_EVE_09.fbx
IF you have other objects exists in the scene you must delete those before processing this step.
Selective Export:
Alternatively you can also do selective export in blender.
Select your armature and actual model in the scene >
Go in export setting > Include> limit> Tog on selected objects> Click "Export FBX"
This will ensure blender only export fbx file for the selected objects from the scene.
Inverted Bone Fix Export:
[!NOTE] Use Blender FBX Exporter Fixes and tog on
Inverted Bone Fix
option to export fbx for Stellar Blade. This exporter will fix inverted bone bug upon export. Tog off the option if you want the setting back to default exporter.
Importing to UE
[!NOTE] First make sure you completed the step of Creating Uproject
Once it's done, you need to start building folder structure inside your Uproject. Right click on Content
folder and start creating new sub folders each by each. The structure has to follow what the game file uses for your imported asset to be loaded up in game.
*example Art\Character\PC\CH_P_EVE_09
Make sure the name of each subfolder in Uproject is identical as the game file has.
To import your model.fbx inside Uproject, you can simply drag and drop it to the correct filepath or click manual import button to navigate to your exported fbx file.
Keep the import setting window as what the image showed below:
[!NOTE] Keep in mind that if its your first time import fbx file in UE, there won't be any existed
Skeleton
in the option to assign because you first need a mesh in unreal for the skeleton to be generated. You can continue without skeleton in option menu for the first time.
[!WARNING] For head mesh import from Stellar Blade you need to have
Import morph Targets
option togged on or the shapekeys on head mesh will be missing during import in UE (static facial animation in game).
Click "Import All"
There should be your model (skeletal mesh), a skeleton asset and materials which been generated in UE. There will also be a physicsasset.
[!TIP] If your cant find your imported model on the floor as the first sight of preview in UE, follow this solution to fix it.
Asset Inspection
Inspect Skeleton info
In Stellar Blade, all costumes for Eve shared the same skeleton so it can be assigned with any of your imported asset in UE. You can inspect the skeleton details and the correct filepath for it with Fmodel. Rename your Skeleton to the correct one in UE if names are miss-matched. Move it to the right filepath.
*Example for CH_P_EVE_09
Click on the model.uasset and click on objectpath
under "ObjectName": "SkeletalMesh'CH_P_EVE_09'"
.
In new opened page find "ObjectName": "Skeleton'CH_P_EVE_01_Skeleton'"
You will see "ObjectPath": "/Game/Art/Character/PC/CH_P_EVE_01/CH_P_EVE_01_Skeleton.101"
.
This contents skeleton name and filepath information. Rename your skeleton in UE to what been said there and move it to it's correct folder.
Inspect PhysicsAsset info
Click on the model.uasset in Fmodel and you should be able to find PhysicsAssset in the output window. You can also do Ctrl+F
and search Physic
to navigate to the related info. Rename and move it to the correct folder in UE according to Fmodel.
Ctrl+F >Type Physic and search
[!WARNING] If you are not planning to assign PhysicsAsset in PrimaryAssetLabel then don't rename it and leave it as named as
CH_P_EVE_09_Physics
, otherwise your model will be invisible in game.
Inspect Animation Blueprints info
Click on the model.uasset in Fmodel:
Ctrl+F >Type anim and search
Right click on your Skeletal Mesh in UE> Create> Anim Blueprint
Rename the created dummy AnimBP following by inspecting in fmodel.
*example CH_P_EVE_01_Skeleton_AnimBlueprint> CH_P_EVE_09_AnimBP
Assign the created AnimBP with your Skeletal Mesh.
Double click on Skeletal Mesh> Find Skeletal Mesh In Asset Details> Post Process Animation BluePrint> Select your created ABP> Save All
Move it to Blueprints folder.
[!WARNING] If you assign dummy AnimBP you basically can't add your own post process physics, for example making physics with spring controllers. However for reimport original model from the game, you need to create a dummy AnimBP for your Skeletal Mesh and assign with it. Otherwise your mesh will have missing bone physics in game. But this wont bring back physic from the model that's using chaoscloth. Make sure to follow the name and filepath for your dummy AnimBP if you just want to reimport original models. Make your own choice what's good for your mods and decide if you want to assign it or not.
Inspect Materials info
Material name in UE should match with what you see in Fmodel. Rename your materials that came with to the correct one in UE if names are miss-matched. Move it to the right filepath.
The best way is still inspecting from model.uasset so you wont miss any materials that might store in other ID's filepath.
Ctrl+F >Type MI_ and search
You can also review the material name and it's filepath with Fmodel by inspecting the output window after you navigated to "Materials" folder in Fmodel. But some model might not have all the materials stored in the same filepath. So keep in mind this might not be the best way to find filepath if some materials are located in other ID's folder.
*Example for CH_P_EVE_09
Alternatively you can also find the correct material name in blender when you inspect material proprieties on the model.
Example for inspecting material instance :
Click on the Material.uasset in Fmodel.
Find "ObjectName": "Material'MA_CH_P_EVE_09'"
You will see "ObjectPath": "/Game/Art/Character/PC/CH_P_EVE_09/Materials/MA_CH_P_EVE_09.0"
.
[!WARNING] Inspect any possible spelling errors on names or filepath mistakes for everything in UE before you continue.
Click Save All
once done.
[!NOTE] Next we will move on to the Packaging Mods
Known Bugs and Issues
Inverted bone with incorrect flipped weight & solution:
For stellar blade eve's body models, no matter you export the asset as in .uemodel
or .psk
format, it comes with issue that causes some part of the model deformed by the corresponded bones when imported it back to game.
[!NOTE] You can now download the FBX Exporter to fix inverted bone bugs. follow the instruction from here to install the plugin and tog on
Inverted Bones Fix
in export setting. Export your model.
koenji)
Legacy Method 1: Animation Blueprints fix (found by[!TIP] This method only works for fixing model deformation during gameplay and pause menu. It doesn't prevent model to get inverted bones in Photo Mode. For the new definitive solution that fix both Inverted Bone Bug and Photo Mode Bug use the FBX Exporter .
[!NOTE] Animation Blueprints are specialized Blueprints that control the animation of a Skeletal Mesh during simulation or gameplay, we can run this in Blueprints or in Skeletal Meshes as a Post Process Animation Blueprint.
In Stellar Blade, Post Process Animation Blueprint
are used in Skeletal Meshes primarily for simulating cloth like physics with a plugin called Kawaii Physics.
If we're making a custom outfit, we don't really need the animation blueprint that is running in the original outfit (unless we're rigging directly to those bones that are being simulated by Kawaii Physics). Additionally we can still use things like NVCloth for creating actual cloth physics anyway.
This is where we can use our own Animation Blueprint in the process to correct some errors that are currently happening with the Stellar Blade Pipeline.
Step 1: Create Animation Blueprint
Creating a Custom Post Process Animation Blueprint to Flip our Bones.
- Right Click your Model(Skeleton Mesh) and create a new Animation Blueprint, alternatively you can Right Click in your Content Browser, then go to Animation > Animation Blueprint and then select the SB Skeleton.
Rename the created ABP to what the game has for your model. Assign it to the Skeleton Mesh.
Step 2: AnimBP Workflow
-
Double Click AnimBP. Right Click in any empty space on your newly created Animation Blueprint and type
Input Pose
. An Input Pose is required otherwise your animations will not work. -
Drag off of your Input Pose and type
Local To Component
. -
Type in
Transform
and selectTransform (Modify) Bone
. -
In the Details Panel on the right update
Scale Mode
toAdd To Existing
. -
In the Transform (Modify) Bone node itself, update the Scale to be
-1.0
,-1.0
,-1.0
. -
In the details panel for the Bone To Modify add the first bone that is present on this list:
Ab-L-AX1
Ab-L-AX2
Ab-L-BrochiUp
Ab-L-Venter
Ab-R-AX1
Ab-R-AX2
Ab-R-BrochiUp
Ab-R-Deltoid
Ab-R-Venter
Ab_09Gear_L0
Dm-R-AX2
Dm-R-Breast-Point
Dm-R-Trape
[!NOTE] Skip Ab-L-AX1 and Ab-L-AX2 if you are replacing Nier DLC Suits.
- Make a copy of the Transform (Modify) Bone node and change the Bone To Modify for the other remaining bones in the list.
Click Save
in AnimBP setting.
Click Save all
in UE.
If done correctly your bones should be inverted back in-game.
Step 3: Fixing The Bones For the Pause Menu
In the Pause Menu some bones may be flipped around, most notably Dm-R-Breast-Point
.
A method of correcting this effect when the game is now paused has been figured out.
-
Open up the
EventGraph
in your Animation Blueprint and findEvent Blueprint Update Animation
, if you cannot find it you can create it by typing for it by right clicking the empty graph and searching for it. -
Right Click the empty graph and type
Is Game Paused
, create the node. -
Right Click the red side of the newly created node and create a new
Boolean variable
, name it whatever, I went withbIsGamePaused
. -
Now head to your
AnimGraph
and find a Translation (Modify) Bone node that affectsDm-R-Breast-Point
or any other problematic bones that get inverted when you pause.
-
Right Click where there's empty space and type in the name of your created Boolean variable, you want to get a reference for it.
-
Drag off of your Boolean variable and create a select node (can use either
Select Float
, or theSelect node
).
[!NOTE] The goal is to make it toggle between
0
or1
(No Flip or Flip) depending on if the game is paused. If your Select Node says Index setFalse
to be1.0
and keepTrue
to be0.0
. However, if your Select Node says Pick A keep A to be0.0
and set B to be1.0
.
Click Save
in AnimBP setting.
Click Save all
in UE.
If done correctly, the problematic bones that fix themselves in the character select screen will not be flipped when the game is not paused, and be flipped when the game is paused.
koenji
Video Guide Version by[!NOTE] The Select Node being used is the Wild Card Select Node which is just called
Select
(not Select Float)
[!TIP] The list of the Transform Modify Bone List would be the same as above.
https://github.com/user-attachments/assets/2f495fa2-eef5-4db7-9b25-048c87c5527d
Install fixed AnimBP for your project:
[!NOTE] If you don't want to create fixed AnimBP yourself, you can download the fixed AnimBP.uasset from here.
Extra the AnimBP.uasset file from downloaded.zip>
Move it to Unreal Projects/YourProjectname/Content/Art/Character/PC/CH_P_EVE_09/
Launch your Uproject> Right click on any asset> Click "Show in Explorer"
Find the AnimBP in UE and move it to Blueprints folder, or put it aside of Skeletal Mesh>
Rename the AnimBP in UE to what it supposes to be called which reference for your Skeleton Mesh
Double Click on Skeletal Mesh> Find Skeletal Mesh In Asset Details> Post Process Animation BluePrint> Select your renamed AnimBP
[!NOTE] Follow this page to create PrimaryAssetLabel and add the AnimBP in the list.
Click Save all
and Package project.
Photomode bug with model explosion & solution:
During mode reimport from blender, game asset will lose its negative scale value for bones and causing the game lose it's direction with wrong valued bones during animation which leads to what you see in the scene below.
https://github.com/user-attachments/assets/328b2768-aa62-44ca-8a64-ca600fc5776d
[!NOTE] You can now download the FBX Exporter to fix inverted bone bugs in Photo Mode. follow the instruction from here to install the plugin and tog on
Inverted Bones Fix
in export setting. Export your model.
If you are using UEFormat plugin, make sure you togged off Import Sockets
option before importing your model as .uemodel
in blender.
If you are using PSK then select Don't Export Bone Sockets
in Model Setting for Fmodel.
If you are using cloth physic then its not fixable yet with the explosion bug in Pose mode. Game snap vertices back to its original position during pose. We are still looking for a solution for mods that have cloth physics added.
Legacy Method 1 : Vertex weight mix transfer (found by Insider)
[!TIP] This method also fixed the known Inverted Bone Bug. But its modifying the vertex weights which isn't perfect. For the new definitive solution that fix both Inverted Bone Bug and Photo Mode Bug use the FBX Exporter .
Since the bone assigned with its vertex weight group, this solution is to bypass all the issued weights and rework it by mix it with other weights for the functional bones.
In other word, simplify the rigging and remove any problematic weight or mix it to another functional weight.
Transfer the problematic Weight A into a close Weight B that doesn't deform that much and that is also close to it, then clear Weight A entirely. The following weights can be mixed with no visible issues.
Ab-R-Breast
> Ab-L-Breast
Ab-L-BrochiUp
> Ab-L-UpperArm-Tw1
Ab-R-BrochiUp
> Ab-R-UpperArm-Tw1
Ab-L-Deltoid
> Ab-L-Trape1
Ab-R-Deltoid
> Ab-R-Trape1
Use vertex weight mix modifier to combine the two vertex groups.
click on the model in blender scene> find modifiers tag and click> add vertex weight mix modifier
After combining you can remove the previous vertex group that was assigned to the issued bone.
The result would be both mesh parts with the combined vertex weight assigned will have their movement affected by the single functional bone. For example the right breast after combining would be controlled by Ab-L-Breast
Bone in the game.
Lemi21)
Mix Vertex Weight Transfer Script (by[!NOTE] This blender script is an improved version that's based on the mix weight transfer solution for the Inverted bone bug and Photo mode bug. The script deleted the
Ab-L-Deltoid
andAb-R-Deltoid
vertex weights instead of mixing it. The rest would be the same as before.
You can check the difference from the image below. The deformation on shoulder looks better.
Download the Script from here and copy the text from it :
Open blender text editor
Paste the script
Select your mesh object
Hit the play button and Done
https://github.com/user-attachments/assets/72e9b5c5-5013-4b89-9908-2b255ece74ba
To be sure if the script worked, just check the Ab-L-Breast
vertex group and it should be like the image showed below:
Floating model in Unreal Editor preview & solution:
Once imported your fbx in UE, you will see the scene being empty from the first sight during the model is being positioned to the sky above as image showed.
The reason here is because one bone from model was way below the floor in the psk/uemodel exports from Fmodel. It will take your view of the model in UE from how it looks high up in the sky to. Model wasn't actually floating, root was still at 0,0,0. It was just the floor moved down to the bottom socket bone.
https://github.com/user-attachments/assets/f10a0ba0-bf65-4f25-b331-3456e7232c3c
[!NOTE] This only happens when you imported your model with socket bones. If you imported a model without socket bones it will appear normal on the floor in UE.
If you are using UEFormat plugin, make sure you togged off Import Sockets
option before importing your model as .uemodel
in blender.
If you are using PSK then select Don't Export Bone Sockets
in Model Setting for Fmodel.
Ridog and Salt)
Legacy Method 1: Remove FX_GunFire_Rail_End bone (found byDelete the bone in blender before exporting to fbx . The model will be positioned on the ground once imported in UE.
Object Mode> Select Armature> Select FX_GunFire_Rail_End bone> Edit Mode> Press X and Delete
https://github.com/user-attachments/assets/60cc1f1c-dc88-4841-b26b-e1e1b93e9f9d
Now the model in UE preview should be placed on the floor as in the right position.
Legacy Method 2: Turn off Auto align floor to Mesh (found by Salt)
Turn of the setting showed above will disable UE align floor to the bottom bone of model.
To disable the automatic floor alignment to mesh in Unreal Engine, navigate to the Viewport's View Options dropdown and uncheck the Auto Align Floor To Mesh
option. This feature, when enabled, causes the preview scene to dynamically adjust the floor based on the mesh's lower bounds.
Here's how to turn it off:
Open the Level Viewport: Go to the viewport where your 3D scene is displayed.
Locate View Options: Find the "View Options" dropdown menu, usually located in the top left corner of the viewport.
Disable Auto Align: Within the View Options, locate and uncheck the "Auto Align Floor To Mesh" option.
https://github.com/user-attachments/assets/499d8343-3f73-4e4e-8d3c-fb20d92d47a4
By turning this off, your mesh will no longer automatically adjust its position relative to the floor based on its bounds. You can also adjust the position of the mesh along the Z-axis manually if needed after disabling the auto-alignment.
Lemi21)
Umodel PSK model neck seam bug & solution (found byAfter having issues with seams in the neck area between the Head and Body model, it's been found out that the Armature that is generated by the PSK Importer, is not quite accurate to the game one, while the one from UEFormat(.uemodel
) Importer seems do a better job, we are not certain why the PSK Importer armature is not aligned, but here's a tricky hack to fix this manually.
First of all make sure you extracted both .psk
from Umodel and .uemodel
from Fmodel. Follow this page for extraction.
What we going to do is very simple, we import both skeletons using UEFormat and PSK Import, After importing, make sure they're both same scale, then we going to use a custom script, to copy and transfer the position of the bones from the .ueodel
to the .psk
armature/skeleton bone positions.
Step 1: Import setting
Before you import any asset in the blender scene make sure scene unit scale
set to 0.01
PSK Importer with scale of 1
UEFormat scale with scale of 1
Step 2: Align two Skeletons and run Skeleton Position Transfer Script
With both Skeletons/Armature aligned by correct import setting, we going to use the script to copy the position from Skeleton A to B.
Object Mode:
First select .uemodel Skeleton
Hold Ctrl and select .psk Skeleton
Open new Text Editor and past script in there then click Run button
Video version down below:
https://github.com/user-attachments/assets/8064e4c0-81d1-48f9-b82c-b8cc9e22ffbb
Download the script from here.
For reference, here's the same bone from both armature, very small difference in their locations, but enough to have visible seams in-game.
Once done you can remove .uemodel
armature.
Seams on model when import in UE & solution:
Method 1: Enable Import Normals (by Salt)
When you import a uemodel/psk into blender, the mesh has it's vertices ripped along all UV seams (this is normal for game engines). It looks seamless in Blender because the mesh normals hide the seams. You can either merge all vertices in blender, or just import the normals in Unreal. But you probably want to import normals anyways because it affects the neck seam with the head mesh in game.
When import your model in UE , change the Normal Import Method from Compute Normals
to Import Normals
Method 2: Merge split vertices (by Salt)
When you export/import a model to unreal engine (or any game engine) the model is split along it's UV seams. If it wasn't split, the textures would stretch between UV islands from the vertices be in 2 different coordinates. When making the model it's safe to merge those seams, they were merged when the original artist worked on it.
Here's a video we made to show how to merge vertices in blender.
https://github.com/user-attachments/assets/c355b3fc-9eda-46c6-a800-a9b9e12d4673
Select your model> Edit Mode> Press A(Select all)> Go Select> Select Loops> Select Boundary Loops>
You will see all the unmerged vertices display in yellow.
To visualize merged and unmerged vertices with red color in Blender, you need to use Mark seam feature in Edit mode.
After boundary loops are selected, Ctrl + E and select Mark Seam. It will mark the unmerged vertices as red.
After the seams are selected, You can do Merge By Distance
for those selected vertices. If you want to be extra safe you could separate your model by material first.
Select your model> Edit Mode> Press A to Select all> Go Select> Select Loops> Select Boundary Loops>
Mesh> Merge> By Distance
Method 3: Vertex Snapping twice (by Kirisame_Morisa)
You might have already done everything correct as said below but it still have seams when try to import a body to align with head in game.
Imported to Blender using .uemodel>
Exported with FBX Exporter Fixes (selected Face Smoothing under Geometry settings)>
Imported to UE with 'Import Normals' enabled
This method essentially requires exporting and moving vertices twice. It might seem tedious, but it works. You need to have the head mesh in blender scene for reference.
This is the default positioning after importing the original body and head models without any modifications.
- In Blender, enable Vertex Snapping and snap all torso vertices connected to the neck onto the neck vertices to ensure perfect alignment.
https://github.com/user-attachments/assets/04d04d19-00dd-4e6f-8253-5d265369dd33
An example of adjusted vertices position:
Export as FBX → Import to UE → Package the mod via standard workflow.
-
Place the packaged mod in the game's /Paks folder → Use FModel to extract this mod's mesh.
-
Re-import to Blender you will see the seam came back.
Repeat Step 1: Snap torso vertices to neck vertices again (You can see it's moved by -0.000234 mm)
Export FBX and import to UE> Package
You will see the vertices still won't fully align, but the offset distance will be significantly smaller than the first attempt.
A proof that the first import doesn't applies the adjustment from vertex snapping, but the 2nd import saved the adjustment, you can extract the mod file once again and import the mesh back to blender. We will see the adjustment from your 2nd attempt is saved.
As image showed the result is same as the second import, still shifted by -0.000234 mm