VNTANA MeshOptimizer Documentation


VNTANA MeshOptimizer Overview


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:

  • Geometry Operations

    • 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.

More detail can be found in Release notes: