Not sure if there's still any interest in getting out the models for this game on PC, but I made a python script that can extract both the character meshes as objs as well as the DDS textures. I haven't managed to figure out the exact format of these phyre files, so instead the script searches for the faces, vertices, UV maps, and normals by looking for certain markers. While this isn't absolutely foolproof, it's now robust enough to process every character mesh in FFX/FFX-2 without complaining. I haven't looked at every single mesh or texture to verify it, but for every file I have checked, it works correctly (including all the main character low and high poly meshes).
The main script itself is phyre.py. You'll need python 3 to run it (I ran it on 3.5). The basics to run it look like:
Code: Select all
from phyre import extractMesh, extractDDS
extractMesh(r'/path/to/file.dae.phyre', r'outputfile.obj')
extractDDS(r'/path/to/file.dds.phyre', r'outputfile.dds')
That's it. There are some additional keyword arguments you can supply, but they are debugging tools for the most part. The only one that might be of interest is includeNormals for extractMesh(). By default it doesn't export the normals since they're unnecessary, but if you want them just add includeNormals=True to extractMesh().
I've also included my two test wrapper scripts. test_extraction.py is just a simple wrapper for extracting a single model. grab_meshes.py will extract all the models in the chr folder for both games. It'll create about 2GB of data and create some log files from the output, and it takes a couple minutes to run. For both scripts, you'll need to change ffxBaseDir and ffx2BaseDir to your install location. They'll both dump everything into the current working directory.
There are a number of files that it can't process, but these don't appear to have any actual mesh data in them anyway. For FFX the files are c051, k002, k004, k007, k014, k015, k017, k201, k212, k214, k302, k303, k403 and k999. For FFX-2 they're k015, k201, k303, k403, and k999. The script will also give a warning for a random NPC (n174 in FFX, n119 in FFX-2) about the UV maps being out of bounds, but it's for a single tri, and that's actually how it's defined in the .dae.phyre file. The script will still process the file with the warning.
Finally, some caveats. This script is almost certainly only gonna work on the PC port of FFX/FFX-2 HD Remaster. It will definitely fail for the PS3 files due to the difference in endianness, and I'd be shocked if it worked on the PS4 version. I made it specifically for character meshes, and I haven't tested it out on anything outside of chr/. Finally, this is good for extracting meshes only. You're still SOL if you want to modify the meshes for in-game use.
You do not have the required permissions to view the files attached to this post.