In Pixyz Studio, it is possible to define if textures should be exported as PNG or JPEG files, with a parameterization of image Quality for JPEG, and image Compression for PNG.
Indeed, Data Preparation is not only about meshes optimization. Texture maps (whether they were imported in Pixyz Studio or generated through a baking process) can also be optimized in order to be lighter, while having a control over their quality.
Almost all export formats handled by Pixyz support the export of textures, whether they are embedded or as separate files: FBX, glTF, OBJ, USDZ, etc...
How textures are exported from Pixyz Studio is defined in from Preferences (F9) > Material > Texture export.
Fine-tune the exposed parameters to your liking:
"Export Texture Format" parameter
Choose between PNG (default) and JPEG as the default texture export format for Pixyz Studio.
- When saving a file from the Texture Editor, the extension can be chosen from the "Export texture" dialog box (overriding Pixyz Studio's general preference)
- When exporting a file in script, using the function material.exportImage(), the extension can be chosen in the "Filename" path.
With the 2 methods, the Quality and Compression used are the ones defined in the `Preferences`
"Jpeg Quality" parameter
Defines the Quality of the textures saved as JPEG files. Choose between 0 and 100 (the higher is the better), 95 being the default value
"Png Compression" parameter
Defines the level of compression for textures saved as PNG files, from 0 to 9. A higher value means a smaller size and longer compression time
NOTE The JPEG format is lossy by definition, even if the quality level is set to 100. With the PNG format, even with the highest compression level the image is saved/loaded lossless. However, the saving/loading time raises with higher compression. The compression level is a trade-off between file size and encoding/decoding speed
These parameters can be set in a script using the following commands:
- core.setModuleProperty("Material", "ExportTextureFormat", "JPEG")
- core.setModuleProperty("Material", "JpegQuality", "[95, 0, 100]")
- core.setModuleProperty("Material", "PngCompression", "[1, 0, 9]")