VNTANA’s MeshOptimizer is a CLI tool for 3D asset optimization and sanitization. It optimizes 3D assets for a variety of targets, including polygon count, material count, texture count and size, draw call count and file size. It also sanitizes (fixes) various common errors 3D assets may have, such as computing missing normal/tangent vectors, clamping out-of-bounds material properties and joint indices, computing correct polygon winding and more. Finally, it offers various transformation capabilities such as mesh merging, transform freezing, reflection transformation removal and more.
All this is achieved through a variety of tasks, each of which implements an algorithm which optimizes, sanitizes or transforms the input 3D asset. These tasks are controlled by command line flags or configuration files (see latest release notes for details). These tasks can be split into a number of categories:
Includes a proprietary decimation algorithm, which can reduce triangle counts by a factor of a 1000 while keeping the asset topology intact
Obstructed geometry removal algorithm which removal all geometry which is not visible from the outside of the asset
Small feature baking algorithm which bakes small geometric features like stitches to alpha masked quads
Instance detection algorithms which detect mesh instances
Various intelligent welding operations
Degenerate polygon sanitization
Intersecting geometry sanitization
Material Operations which remove unused and duplicate materials, images and textures, as well as unused image channels. Material alpha modes are also sanitized if they are incorrectly set (e.g. Blend materials that don’t actually have any transparency)
Texture Operations optimize the image space of the input 3D asset, including but not limited to cropping, resizing to a specified texel density, atlassing and compression to PNG, JPEG or KTX
Texture Baking - UV space unwrapping and texture baking the high poly input asset to the decimated low poly asset. Differences in geometric normals are baked into normal maps, and optionally AO may be baked
The MeshOptimizer supports glTF assets, including all Khronos ratified extensions (except material variants and Draco on input). Simple and skin animations are also supported.