Materials - Stellar-Blade-Modding-Team/Stellar-Blade-Modding-Guide GitHub Wiki

Overview

[!IMPORTANT] This section was written by our member peek6 and improved by Lady-420. In this document we will be introducing how to import MIs(Material Instance) and dummy MMs(Master Material) in Unreal Editor for Stellar Blade.

Appreciate Modder peek6 for providing source document and tips.

Previewing and exporting

We will be mainly using FModel to extract MI JSONs.

Workflow in UE

[!NOTE] This workflow is based on having Json2DA plugin installed for your Uproject.

Required Plugin

Json2DA

Step 1: Installing plugin

Move the (branch = ff7rebirth_ue426) into your Content/Python directory. Create a folder named Python if there isn't.

Screenshot_1617

Step 2: Uproject setting

[!NOTE] First make sure you have finished the step of Creating UE Project for your mod.

In Unreal editor we need to enable the Python script editor plugin and Editor scripting utilities plugin for running Json2DA.

Screenshot_1618

Step 3: Creating Dummy Materials & Material Instances

OPTION 1 - Use for MIs which have static flags:

image

https://github.com/user-attachments/assets/40e3d514-6af9-41ef-a8dc-e86a731c95e8

  1. In UE, right-click inside a folder -> create a Material (NOT a Material Instance / MI), and name it with the same name as the original game's MI whose properties you want to inherit. Let's call it MI_Source, but its name and directory must exactly match the original game MI whose properties you want.

  2. Right-click on the MI_Source material, and select scripted actions -> Import MI JSON 2 MM -> select your MI JSON.

  3. Right-click again on the MI_Source -> Create Material Instance. Keep the generated name if this instance, let's call it MI_Target, is not supposed to replace a different material. But if you want to change the material of Eve's costume then give it the name of the MI you want to replace.

  4. Double-click on the MI_Target and in the "Global Texture Param" section, enable ONLY the assets you modified and save. You will also notice if you scroll down at the bottom that the parent is selected to be the MI_Source. You can safely close the menu now.

  5. Double-click on the mesh and in the "Material Slots" section, choose the MI_Target. You could also simply drag and drop them into the slot.

[!WARNING] Do not put MI_Source into the material slots of skeletal mesh. Do not enable texture slots for the textures you dont replace in the created Material Instance. Enable only texture slots for the texture you imported and assign it in the Material Instance setting.

  1. Save all.

  2. Only include MI_Target and your textures in your chunk/label by following the instructions of Packaging Mods. DO NOT INCLUDE THE DUMMY MATERIAL (i.e., MI_Source) in your chunk.

OPTION 2 - It should work without modifying any meshes, but may have issues if the MI has static flags:

image2

  1. Create the parent master material for your MI, and make an instance of it. Name them as in the original game.

  2. Right-click on the master material asset, select scripted actions->Import MI JSON 2 MM and select your MI JSON.

  3. Right-click on the MI asset, select scripted actions->Import JSON 2 MI and again select your MI JSON.

You can now change the textures or other params of your MI and include the modded MI in your chunk by following instruction of Packaging Mods

Never include any dummy MMs in the chunk for your mod:

The dummy material hooks up all the parameters in the instance as nodes which feed into an adder, so that you can create instances of that material (e.g. MIs), which have those fields available for you to mod.

*example MA_CH_P_EVE_09

Screenshot_1619

[!NOTE] It's a dummy material created by Scripted Actions->Import MI JSON 2 MM and selecting MI_CH_P_EVE_09_Suit.json .

Since it's a dummy, If you include it in your mod's chunk, it will crash the game. But now, you can create an instance from it (e.g., an MI) called MI_CH_P_EVE_09_Suit and now run scripted actions->Import JSON 2 MI> again selecting MI_CH_P_EVE_09_Suit.json, which will populate all those parameters with specific textures etc. You can now modify that MI and point it to your own custom textures and include the MI in your chunk.

You can also replace an MI with your own custom MI which points to a different parent (e.g., a different dummy MM) having different properties. For example, if you have an MI for an opaque material and you want to make it semi-sheer. You can find a sheer material and corresponding MI, create a dummy MM and MI from it, and use that sheer MI instead of the original opaque one, pointing it to whatever textures you want.

As long as you can find a different MI to instance off which has the properties you want to inherit, then the best approach is to create a material, give it the name of that MI (whose properties you want to inherit), create an instance of it, and name the instance the same as the MI you want to replace (e.g., the one the mesh already points to). Then only include the instance in the chunk .

For stocking material (by Lady-420)

Stocking_Material_Result

Here's a video showing how to replace skin with stockings material in UE.

https://github.com/user-attachments/assets/1fa2b735-491f-468f-9297-83a8af00b1cc

In this example, we will use the stocking material CH_P_EVE_46_TypeB_M01 of "Silver Kunoichi" costume to replace the skin material MI_CH_P_EVE_61_BB of "Midsummer Alice" costume.

*example MI_CH_P_EVE_61_BB

Skin_Material

example CH_P_EVE_46_TypeB_M01

Stocking_Material

  1. In UE, import the model/mesh of the outfit you want to have the stokings on (follow Models page)

  2. Create a folder in the PC folder for the outfit from which you want to use the stocking materials, in this case folder CH_P_EVE_46 and follow the OPTION 1 from Step 3. But remember, we will replace something here.

  3. When the model/mesh was imported, some materials were imported as well, and one of them is the skin material of that model which we want to replace.

  4. Open the MI_Target, which is our stocking material now, by double-click and in the "Global Texture Params" section activate the "MASK_Stocking" option and also take note of the texture's name of that option, which in our case is CH_P_EVE_46_BB_StockingMask.

  5. The mesh of the outfit, the stocking material and the StockingMask texture (which you can find in the texture folder of the outfit the stockings came from, CH_P_EVE_46 in our case) needs to be assigned to the label.

For glow material (by Salt)

Screenshot_2025-06-25_204454

Here's an video to show how to use script action in UE to make glow MI.

https://github.com/user-attachments/assets/bedc5d1c-7e40-4e01-8f2b-2dd45c7ee40b

Example* MI_CH_EVE_30_GlowEmissive

FModel_UOgFcAJK5d

Some glow MIs are using the default color from MA_MachineGlow so it is not written in the properties json. Which means the json script is not enough on its own in this case. Fmodel can reveal the names if you set it to all material layers, in this case the name of the glow parameter is Eye Core HDR Tint.

image

This requires adding a new vector parameter with that name to the parent material, which you can then edit in your custom MI.

image2

Color values in unreal is greater than 1.0 for glow , so you can set higher number for more noticeable glow effect in visual.

image3

Known Bugs and Issues

Armpit joint shadow bug & solution:

image

Method 1: Enable Compute Skin Cache (found by 11001011)

First enable skinning cache in the project options.

Edit> Project Setting> Engine(Rendering)> Optimizations> Enable Support Compute Skin Cache

2

Restart your UE to apply changed settings.

Enable Recalculate Tangents in the LOD0 in your material property.

Double click on Skeleton mesh> Asset Details> LOD0> Enable Recalculate Tangents

3

Enable Recompute Normals

Capture

Click Save All.

However for custom model, you need your model painted with green vertex color. The devs did this for skin and some tight clothes, only leaving the neck line black. Otherwise it will give your model an extra seam with skin cache setting.

image image1

In UE, when you enable setting in LOD 0 , the default is green channel "Recompute Tangent Green". In Fmodel you can see game devs use this setting.

image2

Select your model in object mode> Enter vertex paint mode> It's easier to see if you set viewport lighting to flat.

Capture

Use full 1.0 green with max brightness: Hex code #00FF00. Paint the whole body to green expect neck line part , leave it as black.

2