f3d-app / f3d

Fast and minimalist 3D viewer.
https://f3d.app
BSD 3-Clause "New" or "Revised" License
2.92k stars 214 forks source link

Feature Request: Support WebP Texturemaps in WaveFront OBJ MTL Files #1700

Open Saijin-Naib opened 2 weeks ago

Saijin-Naib commented 2 weeks ago

Is your feature request related to a problem? Please describe. In the pursuit of a texturemap format that achieves good compression, easy tooling, and supports transparency well, I have settled in WebP.

Describe the solution you'd like I would love if F3D would be able to read the WebP texutremaps for my WaveFront OBJ files as specified in their MTL file. Currently Blender, MeshLab, and CloudCompare support this, though F3D/Exhibit do not currently.

Describe alternatives you've considered Maintaining current PNG texturemaps and accepting incredibly inflated filesize.

Additional context A conversion from TIFF/TGA/PNG to WebP with the right settings results in a shockingly good compressed texturemap with no visible issues, so I think it might be something that could catch on if supported.

Contribution I can not currently contribute this feature, but I can test Flatpak builds of F3D/Exhibit, and possibly native build for Alpine if I can get the APKBUILD written successfully (I think F3D should be reasonable to do).

Meakk commented 2 weeks ago

For the OBJ format, a patch is needed to use the VTK image factory, as described in https://github.com/f3d-app/f3d/issues/1281

Regarding the WebP, we can create a new module to add the format to the image factory, just like we did with EXR (see vtkF3DEXRReader) and integrate the WebP decoder library.
Alternatively, we can integrate FreeImage that wraps many formats using a unified API.

Saijin-Naib commented 2 weeks ago

Ah, wow, that sounds amazing!

Thanks for the great explanation.

Saijin-Naib commented 2 weeks ago

Have a working Alpine package, and am enabling more modules as I play dependency packaging whack-a-mole 🤣

So, I can likely test any new builds easily now.