/** @file dox_cmd.h
* @brief General documentation for assimp_cmd
*/
//----------------------------------------------------------------------------------------------
// ASSIMP CMD MAINPAGE
/**
@mainpage ASSIMP Command-line tools
@section intro Introduction
This document describes the usage of assimp's command line tools.
This is *not* the SDK reference and programming-related stuff is not covered here.
NOTE: For simplicity, the following sections are written with Windows in mind. However
it's not different for Linux/Mac at all, except there's probably no assimp.exe ...
@section basic_use Basic use
Open a command prompt and navigate to the directory where assimp.exe resides. The basic command line is:
@code
assimp [command] [parameters]
@endcode
The following commands are available:
@link version version @endlink | Retrieve the current version of assimp |
@link help help @endlink | Get a list of all commands (yes, it's this list ...) |
@link dump dump @endlink | Generate a human-readable text dump of a model |
@link extract extract @endlink | Extract an embedded texture image |
@link iinfo info @endlink | Load a model and print basic statistics |
@link cmpdump cmpdump @endlink | Regression checking tool |
file
Required. Input file.
-r
Optional. Don't perform any postprocessing. The long form of this parameter is --raw.
actual
Required. Mini dump now.
expected
Required. Archived dump from some point in the past.
model
Required. Relative or absolute path to the input model.
out
Optional. Relative or absolute path to write the output dump to. If it is omitted,
the dump is written to <model>-dump.txt
-b
Optional. If this switch is specified, the dump is written in binary format.
The long form of this parameter is --binary.
-s<n>
Optional. If this switch is specified, the dump is shortened to include only
min/max values for all vertex components and animation channels. The resulting
file is much smaller, but the original model can't be reconstructed from it. This is
used by Assimp's regression test suite, comparing those minidumps provides
a fast way to verify whether a loader works correctly or not.
The long form of this parameter is --short.
common parameters
Optional. Import configuration & postprocessing.
See the @link common common parameters page @endlink for more information.
model
Required. Relative or absolute path to the input model.
out
Optional. Relative or absolute path to write the output images to. If the file name is
omitted the output images are named
The suffix _img<n> is appended to the file name if the -s switch is not specified
(where <n> is the zero-based index of the texture in the model file).
The output file format is determined from the given file extension. Supported
formats are BMP and TGA. If the file format can't be determined,
the value specified with the -f switch is taken.
Format settings are ignored for compressed embedded textures. They're always
written in their native file format (e.g. jpg).
-t<n>
Optional. Specifies the (zero-based) index of the embedded texture to be extracted from
the model. If this option is *not* specified all textures found are exported.
The long form of this parameter is --texture=<n>.
-ba<n>
Optional. Specifies whether output BMPs contain an alpha channel or not.
The long form of this parameter is --bmp-with-alpha=<n>.
-f<n>
Optional. Specifies the output file format. Supported
formats are BMP and TGA. The default value is BMP (if a full output filename is
specified, the output file format is taken from its extension, not from here).
The long form of this parameter is --format=<n>.
-s<n>
Optional. Prevents the tool from adding the _img<n> suffix to all filenames. This option
must be specified together with -t to ensure that just one image is written.
The long form of this parameter is --nosuffix.
common parameters
Optional. Import configuration & postprocessing. Most postprocessing-steps don't affect
embedded texture images, configuring too much is probably senseless here.
See the @link common common parameters page @endlink for more information.
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 threshold 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-meshes | Optimize mesh usage. Meshes are merged, if possible. Very effective in combination with --optimize-graph |
-tuv | --transform-uv-coords | Will transform uv-coordinates if possible. |
-guv | --gen-uvcoords | Will generate uv-coordinates for textures if possible. |
-fid | --find-invalid-data | Will look for invalid data in the imported model structure. |
-fixn | --fix normals | Imported normal vector will be fixed. |
-db | --debone | Removes nearly losslessly or according to a configured threshold bones from the model. |
-sbc | --split-by-bone-count | Split meshes with too many bones. Necessary for our (limited) hardware skinning shader. |
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 |
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. |