Auto-Optimize File Size#
Need to optimize files for AR? VR? Web? Games?
Transmogrifier has a toolset for automatically reducing file size with texture- and mesh-optimizing features!
Perform automatic file-optimization methods that are adaptive to every model in order reduce exports' file sizes below a custom target threshold.
Tip
This feature adapts to each model, meaning that Transmogrifier iteratively reduces an export's file size only inasmuch as required to "sneak" below the target threshold. This allows you to always have each individual export exist at its maximum allowable quality within the limit you set.
Target#
Set a target threshold below which Transmogrifier should attempt to adaptively reduce each export files' size (in Megabytes).
Overwrite Files#
If you elected to Overwrite Exports in the Exports box above, then you have the option to overwrite All existing export files or overwrite export files Only Above Target.
How is this helpful?
Sometimes a batch conversion with auto-optimize can still yield some exports with file sizes above the target threshold. This allows you to focus on re-batch-converting only the few outliers that need extra optimization.
Example
-
Let's say that out of
100models converted,5models are still above a target of15MB.- Let's also say that batch took
7min.to process, - but you absolutely have to have all
100models below15MB.
- Let's also say that batch took
-
You have two options:
Overwrite All๐ขOverwrite Only Above Target๐Adjust your auto-optimize settings, re-batch-convert, and wait another 7min.for the100models to convert all over again when95didn't need to.Adjust your auto-optimize settings, then Only Above Targetwill only re-batch-convert those5files in, say,20sec.. You just saved about6.5min.!
Methods#
Choose among texture- and mesh-optimization methods to use.
| Method | Description | Adjustment |
|---|---|---|
| Draco | Try activating Draco compression for exported models. (Only works for glTF/GLB files). |
Draco compression level |
| Resize textures | Set minimum image texture resolution for auto file size not to go below. Images will not be upscaled. | Resolution |
| Reformat textures | Try reformatting all textures except the normal map to JPEG's to lower the exported file size. | Include Normal Maps (usually avoided because JPG compression causes artifacts in normal maps) |
| Decimate | Try decimating objects to lower the exported file size (Uses edge collapse at a 50% ratio each time. Set a maximum decimate iteration). | Decimate iteration limit |
Decimate Warning
Decimation is a destructive form of mesh optimization. When batch converting models with textures, it's important to note that while Blender does its best to preserve UV's when decimating, texture distortion can occur.
Example
For example, let's say you want to Transmogrify a single FBX file into a USDZ file. Let's also say you have the Target threshold set to 15MB and with default Methods settings. Your import file is a 10MB FBX + (4) 4K, PNG external textures at 10MB each = 50MB total.
Transmogrifier will run through the following steps in order to optimize the file:
- Export the model
- Export the model with no adjustments
- Get the export file's size (
50MB)
- First iteration
Resize Texturesby halving their resolution4096px/2=2048px- Export the model again
- Get the export file's size (
30MB)
Reformat Texturesby converting them to aJPEGformat- Export the model again
- Get the export file's size (
22MB)- Since
22MBis still greater than your target of15MB, Transmogrifier will begin again with another optimize iteration. ๐
- Since
- Second iteration
Resize Texturesby halving their resolution2048px/2=1024px- Export the model again
- Get the export file's size (
14MB)- Since
14MB<15MB, Transmogrifier will exit the auto-optimize loop and move on the converting the next model. โ
- Since
What if Transmogrifier Runs out of options?
If all methods are exhausted and the file size is still above the target maximum, Transmogrifier will report this in the Conversion Log and move on to converting the next file.
Missing Something?
Do you think we're missing a feature? Submit a request on Github!
