They specify how the library will postprocess the imported data. This is done by several configurable pipeline stages, called 'post processing steps'. Below you can find a list of all supported steps along with short descriptions of what they're doing.
Programmers: more information can be found in the aiPostProcess.h
header.
Parameter | Long parameter | Description |
---|---|---|
-ptv | --pretransform-vertices | Move all vertices into worldspace and collapse the scene graph. Animation data is lost. This is intended for applications which don't support scenegraph-oriented rendering. |
-gsn | --gen-smooth-normals | Computes 'smooth' per-vertex normal vectors if necessary. Mutually exclusive with -gn |
-gn | --gen-normals | Computes 'hard' per-face normal vectors if necessary. Mutually exclusive with -gsn |
-cts | --calc-tangent-space | If one UV channel and normal vectors are given, compute tangents and bitangents |
-jiv | --join-identical-vertices | Optimize the index buffer. If this flag is not specified all vertices are referenced once. |
-rrm | --remove-redundant-materials | Remove redundant materials from the imported data. |
-fd | --find-degenerates | Find and process degenerates primitives. |
-slm | --split-large-meshes | Split large meshes over a specific treshold in smaller sub meshes. The default vertex & face limit is 1000000 |
-lbw | --limit-bone-weights | Limit the number of bones influencing a single vertex. The default limit is 4. |
-vds | --validate-data-structure | Performs a full validation of the imported data structure. Recommended to avoid crashes if an import plugin produces rubbish |
-icl | --improve-cache-locality | Improve the cache locality of the vertex buffer by reordering the index buffer to achieve a lower ACMR (average post-transform vertex cache miss ratio) |
-sbpt | --sort-by-ptype | Splits meshes which consist of more than one kind of primitives (e.g. lines and triangles mixed up) in 'clean' submeshes. |
-lh | --convert-to-lh | Converts the imported data to left-handed coordinate space |
-fuv | --flip-uv | Flip UV coordinates from upper-left origin to lower-left origin |
-fwo | --flip-winding-order | Flip face winding order from CCW to CW |
-ett | --evaluate-texture-transform | Evaluate per-texture UV transformations (e.g scaling, offset) and build pretransformed UV channels |
-guv | --gen-uvcoords | Replace abstract mapping descriptions, such as 'spherical' or 'cylindrical' with proper UV channels |
-fixn | --fix-normals | Run a heuristic algorithm to detect meshes with wrong face winding order/normals. |
-tri | --triangulate | Triangulate poylgons with 4 and more points. Lines, points and triangles are not affected. |
-fi | --find-instances | Search the data structure for instanced meshes and replace them by references. This can reduce vertex/face counts but the postprocessing-step takes some time.
|
-og | --optimize-graph | Simplify and optimize the scenegraph. Use it with care, all hierarchy information could be lost. Animations remain untouched.
|
-om | --optimize-mesh | Optimize mesh usage. Meshes are merged, if possible. Very effective in combination with --optimize-graph |
For convenience some default postprocessing configurations are provided. The corresponding command line parameter is -c<name>
(or --config=<name>
).
Name | Description | List of steps executed |
---|---|---|
fast | Fast post processing config, performs some essential optimizations and computes tangents | -cts, -gn, -jiv, -tri, -guv, -sbpt |
default | Balanced post processing config; performs most optimizations | -cts, -gsn, -jiv, -icl, -lbw, -rrm, -slm, -tri, -guv, -sbpt, -fd, -fiv |
full | Full post processing. May take a while but results in best output quality for most purposes | -cts, -gsn, -jiv, -icl, -lbw, -rrm, -slm, -tri, -guv, -sbpt, -fd, -fiv, -fi, -vds -om |
The -tuv, -ptv, -og
flags always need to be enabled manually.
There are also some common flags to customize Assimp's logging behaviour:
Name | Description |
---|---|
-l or --show-log | Show log file on console window (stderr) |
-lo<file> or --log-out=<file> | Streams the log to <file> |
-v or --verbose | Enables verbose logging. Debug messages will be produced too. This might decrease loading performance and result in *very* long logs ... use with caution if you experience strange issues. |