In Hogwarts Legacy most elements of a character's appearance (face, hair, clothing etc) are controlled via a Data Asset. If you want to change how a character looks, you need to edit that character's Data Asset. Unfortunately, as with most assets in this game, the Data Assets that shipped with the game have been “cooked”. Cooked assets can't be edited. To edit a Data Asset you must therefore recreate it from scratch, and then edit the one you created. The good news is that (unlike most cooked assets) all the information we need to recreate the Data Asset still exists in the cooked file. We can view this information using FModel and import it into a blank Data Asset using JSON2DA. This guide will walk you through that process. I'll be changing the way Poppy Sweeting looks, as an example.
You'll need this later. Detailed installation instructions can be found here. If I'm honest, installing this is probably the hardest part of the whole process. Tips:
We'll need FModel. If you don't have it, install it as follows:
FModel from here: https://github.com/LongerWarrior/FModel/releases/tag/HW_1.0.0.0FModel.exe to reside. Anywhere is fine.FModel.exe to run it.Directory Selector / Instruction window should appear:
Steam\SteamApps\commmon\Hogwarts Legacy\Phoenix\Content\Paks folder. Mine's in D:\Games but yours may be elsewhere.FModel should open. The pakchunk-* files are the game files. The others are mods. Note that only cooked mods (the ones with a .pak, .utoc and .ucas file) can be examined with FModel.
Settings > General > MapStructTypes.If you get the following error (or the English version of it) while using FModel:

Fix it by placing the following file in your Fmodel\Output\.data\ folder:
You'll need the Custom Engine installed before you do this. Then:
Code then Download ZIP :
PhoenixUProj\Content\ folder.Json2DA-master to Python (or move the contents to the Python folder if it already exists).Data Assets are stored in various places within the game folders, depending on what they are. Here's how to find them:
FModel.Loading Mode = ALL and hit Load. You should now see:
Phoenix folder is the original game folder. The phoenix folder is where some mods end up. Consider them to be the same. It doesn't seem to make any difference to how the game runs. The > symbol means that each folder contains sub-folders. The tiny numbers on the icons indicate that this particular folder contains some assets. Assets in sub-folders are not included in this number.SHIFT-CTRL-F.Search View window will appear. This is how you search for assets. (Note that you must have the Folders tab in the top left selected for this search to work.)Data Assets start with DA_ so type DA_ and hit return. You should see:
DA_.DA_ PoppySweeting:

DA_NPC_YF_PoppySweeting_Master.uasset:
FModel has displayed the information available from inside the asset. It's not much. But there are entries for DefaultMesh and FacialPoseAsset.
3D Viewer window will appear:
3D Viewer window, click the Folders tab, and hit SHIFT-CTRL-F again. Our previous search results should reappear. Double click on the bottom one, Phoenix/Content/Data/CC/Student/DA_PoppySweeting.uasset, this time. You should see:

DA_PoppySweeting.uasset we need to double-click it:
Class is Customizable Character Definition. (Remember that we'll need it later.)FEMALE, and her Scale (i.e. height compared to the average for people her age) as 0.929593. So she's petite. You can change that later if you like. 🙂Head Character Piece to be the skeletal mesh Data Asset which we were just looking at, followed by some Scalar Overrides to do with skin surface properties and eye size.Vector Overrides (i.e. colours) for hair, eyes and makeup.Hair Character Piece and an Outfit Upper Character Piece. (There's no Lower because Poppy is wearing a full-length Upper outfit.)Data Asset we'll need to recreate and edit, if we want to change the way Poppy looks.Data Asset is in folder Phoenix/Content/Data/CC/Student.Data Assets for the professors are in Phoenix/Content/Data/CC/Professor, prefects are in Phoenix/Content/Data/CC/Prefects, un-named students are in Phoenix/Content/Data/CC/T3Student, etc.The process to re-create Poppy's Data Asset will be as follows:
Data Asset in the Custom Engine.Data Asset.Let's do it!
phoenix.uproject:
Fmodel that we need to create an empty Data Asset called DA_PoppySweeting (don't worry about the .uasset part - the game will add that) in folder Data/CC/Student .Data folder, so we'll need to create it. Right click on the Content folder and select New Folder :
Data. Inside there create another folder called CC and inside there another called Student.Miscellaneous > Data Asset:
Customizable in the search field, choose Customizable Character Definition (the Class we remember from earlier), and hit Select:
DA_PoppySweeting:

This is the clever bit. Proceed as follows:
Scripted Actions > Import JSON:

FModel which should still be showing our DA_PoppySweeting Data Asset:CTRL-a to select all the text and CTRL-c to copy it:
OK.
Data Asset, but it will also create Dummies of all the assets that the Data Asset depends on! Brilliant! Thanks, Tangerie!Data Asset to see how it looks now:
Head to expand that heading:
Head Character Piece has been filled-in and points to a new Dummy Asset called DA_NPC_YF_PoppySweeting_Master.None that would mean that something went wrong, the Dummy Asset is missing and your Data Asset won't work. Go back and review what you did.Hair heading:
Head's Scalar Overrides or Vector Overrides:
Please note that at present JSON2DA DOES NOT WORK with CharacterPiece Data Asset's.
This is because JSON2DA is not able to create dummy assets for Skeletal Meshes, so it fails at that point in the DA and the rest of the DA will be missing.
In general this will not be a problem because you'll be using the DA that refers to the CharacterPiece as a dummy asset, so it doesn't matter what's inside it. But if you need to make any changes to it (like changing the Head mesh in a Head DA) then you need the contents to be correct because you'll have to pakchunk it.
For example, if you run JSON2DA on a Head DA (e.g. Sebastian's head: DA_NPC_YM_SebastianSallow_Master) you'll get:

The items in green are correct. The two in red are not. These must be set manually. Check the original DA using FModel to see what you need to put in there. In Seb's case:
RiggedObjects/Characters/Human/Heads/NPC_YM_SebastianSallow/NPC_YM_SebastienSallow_Master.RiggedObjects/Characters/Human/Heads/Young_M/Facial/SK_Young_M_Head_Master_Facial_Anim_PoseAsset.If you've edited the skeletal mesh for the head (because you're doing a face mod or you've removed the hands) you should use that as the Default Mesh. If not you need to create a dummy. I don't know how to do that for skeletal meshes so just use the one below and rename it as required. You'll be using it as a dummy asset so it should not be given a pakchunk.
For the Facial Pose Asset use the one below (which also should not be pakchunked):
The final Head DA should look like this:

Please note that at present JSON2DA DOES NOT WORK if the Data Asset contains TAGs.
If the Data Asset you are trying to recreate has TAGs you will need to paste the JSON into a file, edit the JSON to remove the TAGs, paste the edited JSON into your DA, then add the TAG's to your DA manually by double-clicking the DA to edit it in the Custom Engine.
So that's it. That's how you use JSON2DA to create a Data Asset. You're now ready to start changing it. But we'll cover that in a separate tutorial.