Add support for "UEFormat" filetype
Hello! I'm a member of the Guilty Gear modding community. Long story short, most Unreal modders or dataminers use a program called Fmodel to extract assets from Unreal-based games. It supports a format called "UEFormat", which is generally the highest quality available for this kinda thing. A selfish request; I've no model format development experience, but I'd like to raise support for this niche filetype, specifically to use F3D as a thumbnail generation tool to massively accelerate my (and hopefully other's) workflow. https://github.com/h4lfheart/UEFormat/tree/master Here's the github for the format.
Hi @muuyo !
That looks like an interesting format to support! I've added it to the main format issue: https://github.com/f3d-app/f3d/issues/38 However, the repository you linked doesnt seem to contain the format specifications, only Unreal and Blender plugins.
@h4lfheart is there a spec for UEFormat ? Is there a lib we can use to read it ?
woah this is cool!! there's no proper "reading" library (though it would be cool to make a native c++ reader library eventually)
here's some sources that could be of use: exporter (cue4parse, c#):
- general container: https://github.com/FabianFG/CUE4Parse/tree/master/CUE4Parse-Conversion/UEFormat
- model structure: https://github.com/FabianFG/CUE4Parse/blob/master/CUE4Parse-Conversion/Meshes/UEFormat/UEModel.cs
- anim structure: https://github.com/FabianFG/CUE4Parse/blob/master/CUE4Parse-Conversion/Animations/UEFormat/UEAnim.cs
importers:
- unreal engine importer (c++): https://github.com/h4lfheart/UEFormat/tree/master/Unreal/UEFormat
- blender importer (python): https://github.com/h4lfheart/UEFormat/tree/master/Blender/io_scene_ueformat
there's no proper specifications, but these should help, maybe I could write up a doc on the structure if this isn't enough though
lmk if you have any more questions!! you can contact me on discord @halfheart. (with the dot) if needed
Thanks, we will see if anyone from the F3D community takes this on :). If you feel like it do not hesitate to give it a go @h4lfheart .
will definitely take a look at it, any pointers on where to start?
In short you need to add a new "reader" to the "native plugin": https://f3d.app/doc/libf3d/PLUGINS.html
The right way to implement it depends on the feature support by the format but in short, you want to consider:
- Geometries (points and cells)
- Data (UVs, normals and such)
- Animations
- Textures
- Cameras
- Skinning/Morphing
First you may want to look at the trivial example in examples/plugins/example-plugin
If the format does not support textures, cameras, skining, then you can look at vtkF3DDracoReader for an example.
If the format supports textures and animations, it gets more complicated, but you can look at vtkF3DUSDImporter, another simpler example but not yet merged in the vtkF3DQuakeMDLImporter (https://github.com/f3d-app/f3d/pull/1591).
Do not hesitate to join our discord for help !
https://discord.f3d.app