f3d icon indicating copy to clipboard operation
f3d copied to clipboard

Add support for "UEFormat" filetype

Open muuyo opened this issue 9 months ago • 6 comments

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.

muuyo avatar Mar 24 '25 18:03 muuyo

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 ?

mwestphal avatar Mar 24 '25 19:03 mwestphal

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

h4lfheart avatar Mar 24 '25 19:03 h4lfheart

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 .

mwestphal avatar Mar 24 '25 20:03 mwestphal

will definitely take a look at it, any pointers on where to start?

h4lfheart avatar Mar 24 '25 20:03 h4lfheart

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

mwestphal avatar Mar 24 '25 20:03 mwestphal