Should be available for a long time
(just need to tune better my automatic hosting payments).
I am making some improvements, especially with KTX textures conversion speed, and will make the repo public when the code will be in suitable condition.
Hey @labris, and thanks for this great tool. It has been really helpful for asset creation within the small team that I am working with. I have a feature request (below), but would also like to offer to help with it’s development, if it benefits you.
We are using KTX textures, and would like to be able to use UTASC for some (normals, high frequency detail maps, etc) and ETC1 for the others (albedo, metallic, etc). For that purpose, we would like to be able to assign different compression methods to PBR material texture inputs. It is a feature available in glTF-Transform which we would like to port or emulate to your web-UI based tool.
Thanks again, and let me know how or if you would like any help,
r
Hello @rdurnin and thank you for the feedback! I am very glad that this tool is useful.
Here is my latest optimization demo (not yet finished completely) - BabylonPress WORKSHOP
The size of 70 GLB models is less than 45 Mb (1024*1024 texture resolution).
This feature could be quite easily implemented. To make convenient UI for it is harder but possible
I was going also to implement another worker pool for KTX conversion, so it would be much faster (at least I hope so).
Among other planned improvements there are:
More user settings for saved file names (user prefix, postfix, etc)
User color for comparison screenshots and the ability to choose texture channel to compare
center() function to center the model
Change all materials transparency mode (often needed for FBX-converted models)
Change all materials backface culling
Add the ability to read/add metadata like author, copyright etc
Multiple files processing
Continue according your needs
I’ll prepare the repo and will send you DM. Your help will be very much appreciated!
@labris . So what I see above is a web based tool to drag and drop a glb file. Looks like the user can save back out an optimized glb file. I want to do the same without a UI as a backend service. Ideally, the backend service would take an input glb, run through the same optimization steps as the webapp and then save the optimized glb in blob storage somewhere. The details of the backend service isnt important here, several ways that can be achieved , what Id like is if there is an API I can use to do what the webapp does. Do you have the API available somewhere?
My tool is based (among several other packages) mainly on GLTF-Transform - https://gltf-transform.dev/ which has quite detailed API and CLI as well.
Actually, you can do everything with this API with the same settings as in GLB Optimizer. The main difference it that GLTF-Transform doesn’t provide any visual comparison which is done with Babylon screenshots processed through Pixel Match.
Another thing is that, since GLB Optimizer is based on Sandbox, is should accept URLS with parameters. But this function, while working in the Sandbox, is temporarily switched off in my GLB Optimizer.
If you have a lot of user uploaded GLBs it is possible to implement instant optimization “on-the-fly” when uploaded GLB is automatically optimized at the loading stage.
Let me know if you have any questions!
Here is the latest update - https://glb.babylonpress.org/
To choose the mode (ETC/UASTC) for each texture slot choose KTX2/USER in the Texture Format drop-up list, then check needed slots in the ‘User defined KTX2 Compression for Texture Slots’ panel in Settings.
Let me know if you’ll have any questions and suggestions!
It is a pity but detail map are not supported in GLTF/GLB format, they should be provided separately. Currently I am testing the feature which will allow to convert images to UASTC and download them in .ktx2 format (actually it works already but needs better interface).
Slots which are not checked are processed with ETC1S, all checked with UASTC (don’t forget to choose KTX2/USER mode first).
In case of UI bugs just reload the page