This guide is unfinished, but still being published in order to help people get started in the meantime.
Persona 4 Golden (Vita, PC) and Persona 3 Portable (PSP) share a model format called GMO (commonly used in several other games on Sony’s portable systems). Fortunately, the official gmotool program is available which allows you to convert model data to and from editable text format called MDS. The program can also convert custom FBX models to MDS, which can then be converted back to GMO.
Getting Familiar With the Tools
In P3P, these GMO models can be found in the game’s umd0.cpk/data/model/pack folder, inside PAC archives. These can be opened with Amicitia, our multipurpose editor for various game formats.
As always, CPK archives can be extracted from the ISO using 7zip, and the contents of the CPK themselves using CriPakGUI.
P4G, on the other hand, has them contained in ARC files inside the PACs in the data/model/pack folder. ARC is essentially just a fancy header that the GMO files now have for no discernible reason– you need to use Amicitia 1.7.1 to extract and replace the GMO data in the PAC (later versions crash for some reason). Be sure to give it the .gmo extension when exporting!
In order to help save you time, here’s a collection of extracted GMO files from P4G’s PAC/ARC archives.
Depending on the version, getting a dump of the game’s files may require different tools. The PSVita version uses CPK like many other Persona games, so CriPakGUI does a fine job. However, on PC, the files need to be extracted from the several PAC files (not to be confused with the Atlus PACs we’ve been talking about) that must be extracted using a tool like NR2_Unpacker.
In the case of Persona 3 Portable, working with GMO models goes about the same as it would for other formats like P4 vanilla’s RMD and P5’s GMD). On the other hand, users have reported mesh visibility issues with custom models in P4G when using gmotool. Apparently, this is due to the meshes needing to be split up into individual parts, whereas P3P can handle them being grouped together.
P4GMOdelConverter is here to help with that! Head over to the releases page and snag the latest. This tool is designed to make converting between FBX <=> MDS <=> GMO as easy as dragging and dropping files. It even exports a “fixed” MDS from your FBX or GMO so that you can use custom models in Golden without glitches… we hope!
UPDATE: The program in its current state has been found to still have some issues with custom FBX. Improvements are in the works, please be patient!
Finally, you’re going to want Noesis. This handy program supports viewing GMO models and animations, as well as converting them to other formats like FBX. This is how we’ll get our original model imported into a 3D program for editing. Simply open the extracted GMO from earlier, choose File > Export and choose DAE or FBX. In my experience, DAE works best at preserving rigging and meshes, while FBX preserves textures and materials. In this case, we only need the bones (in the right pose) so I’ll be going with DAE as that’s good enough for a full model replacement.
Check “No Animations” before exporting to ensure that the model is in a default pose when you load it up in the next step.
Alternatively, if you’re only making a partial edit to the model and wish to reimport it, I find it best to export as SMD. At least for 3DSMax this requires a plugin that allows you to import them. It will likely import without textures, but the materials will still appear in the material editor, and you can reassign the proper bitmap to them.
It’s also normal for the model to be facing backwards, since that’s just how Atlus converted them for some reason. You’ll notice when you load a GMO in Noesis it’s always facing away at first too. You can correct this in 3DSmax by rotating and centering the viewcube and then right clicking it to “set current view as Front”.
Creating the Custom Model
Once you have the model and textures exported, open it in your preferred program. In my case, I’ll use 3DSMax 2020. Go to File > Import and select your model and wait for it to load. It might show up without textures, but we don’t really need them in this case, since we’ll be using our custom model’s meshes and materials soon.
I like to start by using the scene explorer on the left (if you don’t see one, go to Tools > Scene Explorer), selecting all the bones and adding them to their own Layer by right clicking. You can easily hide meshes from the list by unchecking the sphere icon at the top left. After they’ve been added to a new layer, you can turn the sphere icon back on.
Next, I’m loading my custom model that I want to import over Narukami’s skeleton and putting it on its own layer. In my case it’s his model from Persona 4 Dancing all Night using the GMD Maxscript. If you want the models, you can get a dump from here, along with a list of which files are which.
Obviously, the model’s proportions and scale will be different from the one you’re editing, so you may need to make manual adjustments using the Editable Mesh modifier. You can also use the existing skin/bones of your new model to position it more precisely, for instance you’ll notice P4G Narukami’s arms aren’t straight– they’re bent slightly forward.
Using the original model as a guide, with the new model’s arms resized to roughly match the length of the original, we can see that the elbows must be rotated 15 degrees forward and 15 degrees down.
The scale and the position of the head bone also needs updating, as well as the length of his legs.
Once you’ve aligned everything, you can bake the bone positions into the model by selecting all the new meshes, right clicking and choosing “Convert to Editable Mesh”. Then you can safely delete the new model’s bones as they’re no longer needed. Continue reshaping the mesh until it matches the one you’re replacing as close as possible, and then you can delete the P4G model’s meshes as well.
You should be left with the old model’s bones and the new model’s mesh only, and then you can begin creating a new skin modifier for the meshes. The process of skinning is a bit too in depth for the purposes of this guide, so I recommend watching a video like this one (which is the very same one I learned from):
When I think I’m about done rigging, rather than jump the gun and import it straight into the game, it’s wise to load an animation to test.
Be sure to back up your current scene pre-animation so you don’t lose all your progress and import the DAE (or SMD) from Noesis. Choose “Update animation” in the import options to skip reloading bones/meshes.
As you can see, rigging blindly doesn’t always turn out great. It’s easy to miss spots, but at least provides you with a working start. I like to pause the animation and tweak certain vertices in the Skin that stick out until it looks A-okay.
Converting Back to GMO
This part of the guide is still heavily work-in-progress, writing is on hold as the tool is being updated to improve compatability with custom FBX files. Thank you for your patience.
Export your finished scene as FBX (without animations) and drag it onto the P4GMOdelConverter window. Your MDS files should be generated and textures should be exported. If the program worked as intended, this should include a MDS file ending with “_p4g.mds” — this is the one you want to drag onto the P4GMOdelConverter to generate your new GMO.
Please note: due to a bug, “keep animations” doesn’t appear to be working, so you’d have to manually copy/paste the Motion section of the original MDS made from the unedited GMO to your _p4g.MDS made from your custom FBX. This is a lot of text to select by hand, so you might want to wait for the fix.
Be sure to check if the model looks correct in Noesis before proceeding to replace the MODEL_DATA in your PAC, as there are known issues with the current version of the tool.