AssimpNet
An animation consists of keyframe data for a number of nodes. For
each node affected by the animation, a separate series of data is given.
Gets or sets the name of the animation. If the modeling package the
data was exported from only supports a single animation channel, this
name is usually empty.
Gets or sets the duration of the animation in number of ticks.
Gets or sets the number of ticks per second. It may be zero
if it is not specified in the imported file.
Gets if the animation has node animation channels.
Gets the number of node animation channels where each channel
affects a single node.
Gets the node animation channels.
Gets if the animation has mesh animations.
Gets the number of mesh animation channels.
Gets the number of mesh morph animation channels.
Gets the mesh animation channels.
Gets the mesh morph animation channels.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Represents an Assimp Import/Export context that load or save models using the unmanaged library. Additionally, conversion
functionality is offered to bypass loading model data into managed memory.
Gets if the context has been disposed.
Gets or sets the uniform scale for the model. This is multiplied
with the existing root node's transform. This is only used during import.
Gets or sets the model's rotation about the X-Axis, in degrees. This is multiplied
with the existing root node's transform. This is only used during import.
Gets or sets the model's rotation abut the Y-Axis, in degrees. This is multiplied
with the existing root node's transform. This is only used during import.
Gets or sets the model's rotation about the Z-Axis, in degrees. This is multiplied
with the existing root node's transform. This is only used during import.
Gets whether this context is using a user-defined IO system for file handling.
Gets the property configurations set to this context. This is only used during import.
Constructs a new instance of the class.
Imports a model from the stream without running any post-process steps. The importer sets configurations
and loads the model into managed memory, releasing the unmanaged memory used by Assimp. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ImportFile" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful.
The imported scene
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Imports a model from the stream. The importer sets configurations and loads the model into managed memory, releasing the unmanaged memory
used by Assimp. It is up to the caller to dispose of the stream. If the format is distributed across multiple files/streams, set a custom
and use the "ImportFile" family of functions.
Stream to read from
Post processing flags, if any
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful.
The imported scene
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Imports a model from the specified file without running any post-process steps. The importer sets configurations
and loads the model into managed memory, releasing the unmanaged memory used by Assimp.
Full path to the file
The imported scene
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Imports a model from the specified file. The importer sets configurations
and loads the model into managed memory, releasing the unmanaged memory used by Assimp.
Full path to the file
Post processing flags, if any
The imported scene
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Exports a scene to the specified format and writes it to a file.
Scene containing the model to export.
Path to the file.
FormatID representing the format to export to.
True if the scene was exported successfully, false otherwise.
Thrown if the scene is null.
Thrown if the context has already been disposed of.
Exports a scene to the specified format and writes it to a file.
Scene containing the model to export.
Path to the file.
FormatID representing the format to export to.
Preprocessing flags to apply to the model before it is exported.
True if the scene was exported successfully, false otherwise.
Thrown if the scene is null.
Thrown if the context has already been disposed of.
Exports a scene to the specified format and writes it to a data blob.
Scene containing the model to export.
FormatID representing the format to export to.
The resulting data blob, or null if the export failed.
Thrown if the scene is null.
Thrown if the context has already been disposed of.
Exports a scene to the specified format and writes it to a data blob.
Scene containing the model to export.
FormatID representing the format to export to.
Preprocessing flags to apply to the model before it is exported.
The resulting data blob, or null if the export failed.
Thrown if the scene is null.
Thrown if the context has already been disposed of.
Converts the model contained in the file to the specified format and save it to a file.
Input file name to import
Output file name to export to
Format id that specifies what format to export to
True if the conversion was successful or not, false otherwise.
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Converts the model contained in the file to the specified format and save it to a file.
Input file name to import
Output file name to export to
Format id that specifies what format to export to
Pre processing steps used for the export
True if the conversion was successful or not, false otherwise.
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Converts the model contained in the file to the specified format and save it to a file.
Input file name to import
Post processing steps used for the import
Output file name to export to
Format id that specifies what format to export to
Pre processing steps used for the export
True if the conversion was successful or not, false otherwise.
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Converts the model contained in the file to the specified format and save it to a data blob.
Input file name to import
Format id that specifies what format to export to
Data blob containing the exported scene in a binary form
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Converts the model contained in the file to the specified format and save it to a data blob.
Input file name to import
Format id that specifies what format to export to
Pre processing steps used for the export
Data blob containing the exported scene in a binary form
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Converts the model contained in the file to the specified format and save it to a data blob.
Input file name to import
Post processing steps used for the import
Format id that specifies what format to export to
Pre processing steps used for the export
Data blob containing the exported scene in a binary form
Thrown if there was a general error in importing the model.
Thrown if the file could not be located.
Thrown if the context has already been disposed of.
Converts the model contained in the stream to the specified format and save it to a file. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ConvertFromFileToFile" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful
Output file name to export to
Format id that specifies what format to export to
True if the conversion was successful or not, false otherwise.
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Converts the model contained in the stream to the specified format and save it to a file. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ConvertFromFileToFile" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful
Output file name to export to
Format id that specifies what format to export to
Pre processing steps used for the export
True if the conversion was successful or not, false otherwise.
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Converts the model contained in the stream to the specified format and save it to a file. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ConvertFromFileToFile" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful
Post processing steps used for import
Output file name to export to
Format id that specifies what format to export to
Pre processing steps used for the export
True if the conversion was successful or not, false otherwise.
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Converts the model contained in the stream to the specified format and save it to a data blob. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ConvertFromFileToBlob" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful
Format id that specifies what format to export to
Data blob containing the exported scene in a binary form
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Converts the model contained in the stream to the specified format and save it to a data blob. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ConvertFromFileToBlob" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful
Format id that specifies what format to export to
Pre processing steps used for the export
Data blob containing the exported scene in a binary form
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Converts the model contained in the stream to the specified format and save it to a data blob. It is up to the caller to dispose of the stream.
If the format is distributed across multiple files/streams, set a custom
and use the "ConvertFromFileToBlob" family of functions.
Stream to read from
Optional format extension to serve as a hint to Assimp to choose which importer to use. If null or empty, the system will
try to detect what importer to use from the data which may or may not be successful
Post processing steps used for import
Format id that specifies what format to export to
Pre processing steps used for the export
Data blob containing the exported scene in a binary form
Thrown if the stream is not valid (null or write-only).
Thrown if the context has already been disposed of.
Sets a custom file system implementation that is used by this importer. If it is null, then the default assimp file system
is used instead.
Custom file system implementation
Removes the currently set custom file system implementation from the importer.
Gets the model formats that are supported for export by Assimp.
Export formats supported
Gets the model formats that are supported for import by Assimp.
Import formats supported
Gets descriptions for each importer that assimp has registered.
Descriptions of supported importers.
Gets an importer description for the specified file extension. If no importers support it, null is returned. Multiple importers may support the file extension,
they are called in the order that they were registered.
File extension to query importer support for.
Importer description or null if it does not exist.
Checks if the format extension (e.g. ".dae" or ".obj") is supported for import.
Model format
True if the format is supported, false otherwise
Checks if the format extension (e.g. ".dae" or ".obj") is supported for export.
Model format
True if the format is supported, false otherwise
Sets a configuration property to the context. This is only used during import.
Config to set
Removes a set configuration property by name.
Name of the config property
Removes all configuration properties from the context.
Checks if the context has a config set by the specified name.
Name of the config property
True if the config is present, false otherwise
Disposes of resources held by the context. These include IO systems still attached.
Releases unmanaged and - optionally - managed resources
True to release both managed and unmanaged resources; False to release only unmanaged resources.
AssimpNet general exception.
Initializes a new instance of the class.
Initializes a new instance of the class.
The error message.
Initializes a new instance of the class.
Name of the param.
The error message.
Initializes a new instance of the class.
The error message
The inner exception.
Represents a single bone of a mesh. A bone has a name which allows it to be found in the frame
hierarchy and by which it can be addressed by animations. In addition it has a number of
influences on vertices.
Gets or sets the name of the bone.
Gets the number of vertex influences the bone contains.
Gets if the bone has vertex weights - this should always be true.
Gets the vertex weights owned by the bone.
Gets or sets the matrix that transforms from mesh space to bone space in bind pose.
Constructs a new instance of the class.
Constructs a new instance of the class.
Name of the bone
Bone's offset matrix
Vertex weights
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Describes a right-handed camera in the scene. An important aspect is that
the camera itself is also part of the scenegraph, meaning any values such
as the direction vector are not *absolute*, they can be relative to the coordinate
system defined by the node which corresponds to the camera. This allows for camera
animations.
Gets or sets the name of the camera. This corresponds to a node in the
scenegraph with the same name. This node specifies the position of the
camera in the scene hierarchy and can be animated.
Gets or sets the position of the camera relative to the coordinate space defined by
the corresponding node. THe default value is 0|0|0.
Gets or sets the 'up' vector of the camera, relative to the coordinate space defined by the
corresponding node. The 'right' vector of the camera is the cross product of the up
and direction vectors. The default value is 0|1|0.
Gets or sets the viewing direction of the camera, relative to the coordinate space defined by the corresponding node.
The default value is 0|0|1.
Gets or sets the half horizontal field of view angle, in radians. The FoV angle is
the angle between the center line of the screen and the left or right border. The default
value is 1/4PI.
Gets or sets the distance of the near clipping plane from the camera. The value may not
be 0.0f for arithmetic reasons to prevent a division through zero. The default value is 0.1f;
Gets or sets the distance of the far clipping plane from the camera. The far clippling plane must
be further than the near clippling plane. The default value is 1000.0f. The ratio between
the near and far plane should not be too large (between 1000 - 10000 should be ok) to avoid
floating-point inaccuracies which can lead to z-fighting.
Gets or sets the screen aspect ratio. This is the ratio between the width and height of the screen. Typical
values are 4/3, 1/2, or 1/1. This value is 0 if the aspect ratio is not defined in the source file.
The default value is zero.
Gets a right-handed view matrix.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Represents a RGB color.
Red component.
Green component.
Blue component.
Gets or sets the component value at the specified zero-based index
in the order of RGBA (index 0 access R, 1 access G, etc). If
the index is not in range, a value of zero is returned.
Zero-based index.
The component value
Constructs a Color3D.
Red component
Green component
Blue component
Constructs a Color3D where each component is
set to the same value.
Value to set R, G, B components
Determines if the color is black, or close to being black.
True if the color is black/nearly block, false otherwise.
Adds the two colors together.
First color
Second color
Added color
Adds the value to each of the components of the color.
Source color
Value to add to each component
Added color
Adds the value to each of the components of the color.
Value to add to each component
Source color
Added color
Subtracts the second color from the first color.
First color
Second color
Resulting color
Subtracts the value from each of the color's components.
Source color
Value to subtract from each component
Resulting color
Subtracts the color's components from the value, returning
the result as a new color. Same as new Color4D(value) - color
Value for each component of the first color
Second color
Resulting color
Multiplies the two colors.
First color
Second color
Multiplied color.
Multiplies the color by a scalar value, component wise.
Source color
Scalar value
Resulting color
Multiplies the color by a scalar value, component wise.
Scalar value
Source color
Resulting color
Divides the first color by the second color, component wise.
First color
Second color
Resulting color
Divides the color by a divisor value.
Source color
Divisor
Resulting color
Tets equality between two colors.
First color
Second color
True if the colors are equal, false otherwise
Tets inequality between two colors.
First color
Second color
True if the colors are not equal, false otherwise
Tests equality between this color and another color
Color to test against
True if components are equal
Tests equality between this color and another object.
Object to test against
True if the object is a color and the components are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Represents a Red-Green-Blue-Alpha (RGBA) color.
Color values range from 0 to 1.
Red component.
Green component.
Blue component.
Alpha component.
Gets or sets the component value at the specified zero-based index
in the order of RGBA (index 0 access R, 1 access G, etc). If
the index is not in range, a value of zero is returned.
Zero-based index.
The component value
Constructs a Color4D.
Red component
Green component
Blue component
Alpha component
Constructs a Color4D. Alpha is set to 1.0.
Red component
Green component
Blue component
Constructs a Color4D where each component is
set to the same value.
Value to set R, G, B, A components
Constructs a Color4D from a Color3D. Alpha is set to 1.0.
RGB values
Constructs a Color4D from a Color3D and alpha value.
RGB values
Alpha value
Determines if the color is black, or close to being black.
True if the color is black/nearly block, false otherwise.
Adds the two colors together.
First color
Second color
Added color
Adds the value to each of the components of the color.
Source color
Value to add to each component
Added color
Adds the value to each of the components of the color.
Value to add to each component
Source color
Added color
Subtracts the second color from the first color.
First color
Second color
Resulting color
Subtracts the value from each of the color's components.
Source color
Value to subtract from each component
Resulting color
Subtracts the color's components from the value, returning
the result as a new color. Same as new Color4D(value) - color
Value for each component of the first color
Second color
Resulting color
Multiplies the two colors.
First color
Second color
Multiplied color.
Multiplies the color by a scalar value, component wise.
Source color
Scalar value
Resulting color
Multiplies the color by a scalar value, component wise.
Scalar value
Source color
Resulting color
Divides the first color by the second color, component wise.
First color
Second color
Resulting color
Divides the color by a divisor value.
Source color
Divisor
Resulting color
Tets equality between two colors.
First color
Second color
True if the colors are equal, false otherwise
Tets inequality between two colors.
First color
Second color
True if the colors are not equal, false otherwise
Tests equality between this color and another color
Color to test against
True if components are equal
Tests equality between this color and another object.
Object to test against
True if the object is a color and the components are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Base property config.
Gets the property name.
Creates a new property config that has no active Assimp property store.
Name of the property.
Sets the current value to the default value.
Applies the property value to the given Assimp property store.
Assimp property store
Applies the property value to the given Assimp property store.
Assimp property store
Describes an integer configuration property.
Gets the property value.
Gets the default property value.
Constructs a new IntengerPropertyConfig.
Name of the property
Property value
constructs a new IntegerPropertyConfig with a default value.
Name of the property
Property value
The default property value
Sets the current value to the default value.
Applies the property value to the given Assimp property store.
Assimp property store
Describes a float configuration property.
Gets the property value.
Gets the default property value.
Constructs a new FloatPropertyConfig.
Name of the property
Property value
Constructs a new FloatPropertyConfig with a default value.
Name of the property
Property value
The default property value
Sets the current value to the default value.
Applies the property value to the given Assimp property store.
Assimp property store
Describes a configuration property.
Gets the property value.
Gets the default property value.
Constructs a new MatrixPropertyConfig.
Name of the property
Property value
Constructs a new MatrixPropertyConfig.
Name of the property
Property value
The default property value
Sets the current value to the default value.
Applies the property value to the given Assimp property store.
Assimp property store
Describes a boolean configuration property.
Gets the property value.
Gets the default property value.
Constructs a new BooleanPropertyConfig.
Name of the property
Property value
Constructs a new BooleanPropertyConfig with a default value.
Name of the property
Property value
The default property value
Sets the current value to the default value.
Applies the property value to the given Assimp property store.
Assimp property store
Describes a string configuration property.
Gets the property value.
Gets the default property value.
Constructs a new StringPropertyConfig.
Name of the property
Property value
Constructs a new StringPropertyConfig with a default value.
Name of the property
Property value
The default property value
Sets the current value to the default value.
Applies the property value to the given Assimp property store.
Assimp property store
Convience method for constructing a whitespace delimited name list.
Array of names
White-space delimited list as a string
Configuration to enable time measurements. If enabled, each
part of the loading process is timed and logged. Default value is false.
Gets the string name used by MeasureTimeConfig.
Constructs a new MeasureTimeConfig.
True if the loading process should be timed or not.
Configuration to set Assimp's multithreading policy. Possible
values are -1 to let Assimp decide, 0 to disable multithreading, or
any number larger than zero to force a specific number of threads. This
is only a hint and may be ignored by Assimp. Default value is -1.
Gets the string name used by MultithreadingConfig.
Constructs a new MultithreadingConfig.
A value of -1 will let Assimp decide,
a value of zero to disable multithreading, and a value greater than zero
to force a specific number of threads.
Global setting to disable generation of skeleton dummy meshes. These are generated as a visualization aid
in cases which the input data contains no geometry, but only animation data. So the geometry are visualizing
the bones. Default value is false.
Gets the string name used by NoSkeletonMeshConfig.
Constructs a new NoSkeletonMeshConfig.
True if dummy skeleton mesh generation should be disabled, false otherwise.
Configuration to set the maximum angle that may be between two vertex tangents/bitangents
when they are smoothed during the step to calculate the tangent basis. The default
value is 45 degrees.
Gets the string name used by TangentSmoothingAngleConfig.
Constructs a new TangentSmoothingAngleConfig.
Smoothing angle, in degrees.
Configuration to set the maximum angle between two face normals at a vertex when
they are smoothed during the step to calculate smooth normals. This is frequently
called the "crease angle". The maximum and default value is 175 degrees.
Gets the string name used by NormalSmoothingAngleConfig.
Constructs a new NormalSmoothingAngleConfig.
Smoothing angle, in degrees.
Configuration to set the colormap (palette) to be used to decode embedded textures in MDL (Quake or 3DG5)
files. This must be a valid path to a file. The file is 768 (256 * 3) bytes alrge and contains
RGB triplets for each of the 256 palette entries. If the file is not found, a
default palette (from Quake 1) is used. The default value is "colormap.lmp".
Gets the string name used by MDLColorMapConfig.
Constructs a new MDLColorMapConfig.
Colormap filename
Configuration for the the step
to determine what materials to keep. If a material matches one of these names it will not
be modified or removed by the post processing step. Default is an empty string.
Gets the string name used by MaterialExcludeListConfig.
Constructs a new MaterialExcludeListConfig. Material names containing whitespace
must be enclosed in single quotation marks.
List of material names that will not be modified or replaced by the remove redundant materials post process step.
Configuration for the step
to keep the scene hierarchy. Meshes are moved to worldspace, but no optimization is performed
where meshes with the same materials are not joined. This option can be useful
if you have a scene hierarchy that contains important additional information
which you intend to parse. The default value is false.
Gets the string name used by KeepSceneHierarchyConfig.
Constructs a new KeepHierarchyConfig.
True to keep the hierarchy, false otherwise.
Configuration for the step
to normalize all vertex components into the -1...1 range. The default value is
false.
Gets the string name used by NormalizeVertexComponentsConfig.
Constructs a new NormalizeVertexComponentsConfig.
True if the post process step should normalize vertex components, false otherwise.
Configuration for the step to
remove degenerted primitives from the import immediately. The default value is false,
where degenerated triangles are converted to lines, and degenerated lines to points.
Gets the string name used by RemoveDegeneratePrimitivesConfig.
Constructs a new RemoveDegeneratePrimitivesConfig.
True if the post process step should remove degenerate primitives, false otherwise.
Configuration for the step. If true, the area of the triangles are checked
to see if they are greater than 1e-6. If so, the triangle is removed if is set to true.
Gets the string name used by RemoveDegeneratePrimitivesCheckAreaConfig.
Constructs a new RemoveDegeneratePrimitivesCheckAreaConfig.
True if the post process step should check the area of triangles when finding degenerate primitives, false otherwise.
Configuration for the step
to preserve nodes matching a name in the given list. Nodes that match the names in the list
will not be modified or removed. Identifiers containing whitespaces
must be enclosed in single quotation marks. The default value is an
empty string.
Gets the string name used by NodeExcludeListConfig.
Constructs a new NodeExcludeListConfig.
List of node names
Configuration for the step
that specifies the maximum number of triangles a mesh can contain. The
default value is MeshTriangleLimitConfigDefaultValue.
Gets the string name used by MeshTriangleLimitConfig.
Gets the defined default limit value, this corresponds to the
constant.
Constructs a new MeshTriangleLimitConfig.
Max number of triangles a mesh can contain.
Configuration for the step
that specifies the maximum number of vertices a mesh can contain. The
default value is MeshVertexLimitConfigDefaultValue.
Gets the string name used by MeshVertexLimitConfig.
Gets the defined default limit value, this corresponds to the
constant.
Constructs a new MeshVertexLimitConfig.
Max number of vertices a mesh can contain.
Configuration for the step
that specifies the maximum number of bone weights per vertex. The default
value is VertexBoneWeightLimitConfigDefaultValue.
gets the string name used by VertexBoneWeightLimitConfig.
Gets the defined default limit value, this corresponds to the
constant.
Constructs a new VertexBoneWeightLimitConfig.
Max number of bone weights per vertex.
Configuration for the step
that specifies the size of the post-transform vertex cache. The size is
given in number of vertices and the default value is VertexCacheSizeConfigDefaultValue.
Gets the string name used by VertexCacheConfig.
Gets the defined default vertex cache size, this corresponds to
the .
Constructs a new VertexCacheSizeConfig.
Size of the post-transform vertex cache, in number of vertices.
Configuration for the step that
specifies which parts of the data structure is to be removed. If no valid mesh
remains after the step, the import fails. The default value i .
Gets the string name used by RemoveComponentConfig.
Constructs a new RemoveComponentConfig.
Bit-wise combination of components to exclude.
Configuration for the step that
specifies which primitive types are to be removed by the step. Specifying all
primitive types is illegal. The default value is zero specifying none.
Gets the string name used by SortByPrimitiveTypeConfig.
Constructs a new SortByPrimitiveTypeConfig.
Bit-wise combination of primitive types to remove
Configuration for the step that
specifies the floating point accuracy for animation values, specifically
the episilon during comparisons. The default value is 0.0f.
Gets the string name used by AnimationAccuracyConfig.
Constructs a new AnimationAccuracyConfig.
Episilon for animation value comparisons.
Configuration for the step that
specifies which UV transformations are to be evaluated. The default value
is for all combinations (scaling, rotation, translation).
Gets the string name used by TransformUVConfig.
Constructs a new TransformUVConfig.
Bit-wise combination specifying which UV transforms that should be evaluated.
Configuration that is a hint to Assimp to favor speed against import quality. Enabling this
option may result in faster loading, or it may not. It is just a hint to loaders
and post-process steps to use faster code paths if possible. The default value is false.
Gets the string name used by FavorSpeedConfig.
Constructs a new FavorSpeedConfig.
True if Assimp should favor speed at the expense of quality, false otherwise.
Configures the maximum bone count per mesh for the step. Meshes are
split until the maximum number of bones is reached.
Gets the string name used by MaxBoneCountConfig.
Constructs a new MaxBoneCountConfig.
The maximum bone count.
Configures which texture channel is used for tangent space computations. The channel must exist or an error will be raised.
Gets the string name used by TangentTextureChannelIndexConfig.
Constructs a new TangentTextureChannelIndexConfig.
The zero-based texture channel index.
Configures the threshold that is used to determine what bones are removed.
Gets the string name used by DeboneThresholdConfig.
Constructs a new DeboneThresholdConfig.
The debone threshold.
Configuration that requires all bones to qualify for deboning before any are removed.
Gets the string name used by DeboneAllOrNoneConfig.
Constructs a new DeboneAllOrNoneConfig.
True if all are required, false if none need to qualify.
Configuration for that sets a user defined matrix as the scene root node transformation before
transforming vertices. Default value is the identity matrix.
Gets the string name used by RootTransformationConfig.
Constructs a new RootTransformationConfig.
Root transformation matrix to be set to the root scene node during the pretransform post process step.
Applies the property value to the given Assimp property store.
Assimp property store
Configures the step to scale the entire scene by a certain amount. Some importers provide a mechanism to define a scaling unit for the model,
which this processing step can utilize.
Gets the string name used by GlobalScaleConfig.
Constructs a new GlobalScaleConfig.
Value to scale the entire scene by.
Sets the vertex animation keyframe to be imported. Assimp does not support vertex keyframes (only
bone animation is supported). the library reads only one keyframe with vertex animations. By default this is the
first frame. This config sets the "global" keyframe that will be imported. There are other configs
for specific importers that will override the global setting.
Gets the string name used by GlobalKeyFrameImportConfig.
Constructs a new GlobalKeyFrameImportConfig.
Keyframe index
Sets the vertex animation keyframe to be imported. Assimp does not support vertex keyframes (only
bone animation is supported). the library reads only one keyframe with vertex animations. By default this is the
first frame. This config sets the global override for the MD3 format.
Gets the string name used by MD3KeyFrameImportConfig.
Constructs a new MD3KeyFrameImportConfig.
Keyframe index
Sets the vertex animation keyframe to be imported. Assimp does not support vertex keyframes (only
bone animation is supported). the library reads only one keyframe with vertex animations. By default this is the
first frame. This config sets the global override for the MD2 format.
Gets the string name used by MD2KeyFrameImportConfig.
Constructs a new MD2KeyFrameImportConfig.
Keyframe index
Sets the vertex animation keyframe to be imported. Assimp does not support vertex keyframes (only
bone animation is supported). the library reads only one keyframe with vertex animations. By default this is the
first frame. This config sets the global override for the MDL format.
Gets the string name used by MDLKeyFrameImportConfig.
Constructs a new MDLKeyFrameImportConfig.
Keyframe index
Sets the vertex animation keyframe to be imported. Assimp does not support vertex keyframes (only
bone animation is supported). the library reads only one keyframe with vertex animations. By default this is the
first frame. This config sets the global override for the SMD format.
Gets the string name used by SMDKeyFrameImportConfig.
Constructs a new SMDKeyFrameImportConfig.
Keyframe index
Sets the vertex animation keyframe to be imported. Assimp does not support vertex keyframes (only
bone animation is supported). the library reads only one keyframe with vertex animations. By default this is the
first frame. This config sets the global override for the Unreal format.
Gets the string name used by UnrealKeyFrameImportConfig.
Constructs a new UnrealKeyFrameImportConfig.
Keyframe index
Configures the AC loader to collect all surfaces which have the "Backface cull" flag set in separate
meshes. The default value is true.
Gets the string name used by ACSeparateBackfaceCullConfig.
Constructs a new ACSeparateBackfaceCullConfig.
True if all surfaces that have the "backface cull" flag set should be collected in separate meshes, false otherwise.
Configures whether the AC loader evaluates subdivision surfaces (indicated by the presence
of the 'subdiv' attribute in the file). By default, Assimp performs
the subdivision using the standard Catmull-Clark algorithm. The default value is true.
Gets the string name used by ACEvaluateSubdivisionConfig.
Constructs a new ACEvaluateSubdivisionConfig.
True if the AC loader should evaluate subdivisions, false otherwise.
Configures the UNREAL 3D loader to separate faces with different surface flags (e.g. two-sided vs single-sided).
The default value is true.
Gets the string name used by UnrealHandleFlagsConfig.
Constructs a new UnrealHandleFlagsConfig.
True if the unreal loader should separate faces with different surface flags, false otherwise.
Configures the terragen import plugin to compute UV's for terrains, if
they are not given. Furthermore, a default texture is assigned. The default value is false.
UV coordinates for terrains are so simple to compute that you'll usually
want to compute them on your own, if you need them. This option is intended for model viewers which
want to offer an easy way to apply textures to terrains.
Gets the string name used by TerragenComputeTexCoordsConfig.
Constructs a new TerragenComputeTexCoordsConfig.
True if terran UV coordinates should be computed, false otherwise.
Configures the ASE loader to always reconstruct normal vectors basing on the smoothing groups
loaded from the file. Some ASE files carry invalid normals, others don't. The default value is true.
Gets the string name used by ASEReconstructNormalsConfig.
Constructs a new ASEReconstructNormalsConfig.
True if normals should be re-computed, false otherwise.
Configures the M3D loader to detect and process multi-part Quake player models. These models
usually consit of three files, lower.md3, upper.md3 and head.md3. If this propery is
set to true, Assimp will try to load and combine all three files if one of them is loaded. The
default value is true.
Gets the string name used by MD3HandleMultiPartConfig.
Constructs a new MD3HandleMultiPartConfig.
True if the split files should be loaded and combined, false otherwise.
Tells the MD3 loader which skin files to load. When loading MD3 files, Assimp checks
whether a file named "md3_file_name"_"skin_name".skin exists. These files are used by
Quake III to be able to assign different skins (e.g. red and blue team) to models. 'default', 'red', 'blue'
are typical skin names. The default string value is "default".
Gets the string name used by MD3SkinNameConfig.
Constructs a new MD3SkinNameConfig.
The skin name.
Specifies the Quake 3 shader file to be used for a particular MD3 file. This can be a full path or
relative to where all MD3 shaders reside. the default string value is an empty string.
Gets the string name used by MD3ShaderSourceConfig.
Constructs a new MD3ShaderSourceConfig.
The shader file.
Configures the LWO loader to load just one layer from the model.
LWO files consist of layers and in some cases it could be useful to load only one of them.
This property can be either a string - which specifies the name of the layer - or an integer - the index
of the layer. If the property is not set then the whole LWO model is loaded. Loading fails
if the requested layer is not vailable. The layer index is zero-based and the layer name may not be empty
The default value is false (all layers are loaded).
Gets the string name used by LWOImportOneLayerConfig.
Constructs a new LWOImportOneLayerConfig.
True if only one layer should be imported, false if all layers should be imported.
Configures the MD5 loader to not load the MD5ANIM file for a MD5MESH file automatically.
The default value is false.
The default strategy is to look for a file with the same name but with the MD5ANIm extension
in the same directory. If it is found it is loaded and combined with the MD5MESH file. This configuration
option can be used to disable this behavior.
Gets the string name used by MD5NoAnimationAutoLoadConfig.
Constructs a new MD5NoAnimationAutoLoadConfig.
True if animations should not be automatically loaded, false if they should be.
Defines the beginning of the time range for which the LWS loader evaluates animations and computes
AiNodeAnim's. The default value is the one taken from the file.
Assimp provides full conversion of Lightwave's envelope system, including pre and post
conditions. The loader computes linearly subsampled animation channels with the frame rate
given in the LWS file. This property defines the start time.
Animation channels are only generated if a node has at least one envelope with more than one key
assigned. This property is given in frames where '0' is the first. By default,
if this property is not set, the importer takes the animation start from the input LWS
file ('FirstFrame' line)
Gets the string name used by LWSAnimationStartConfig.
Constructs a new LWSAnimationStartConfig.
Beginning of the time range
Defines the ending of the time range for which the LWS loader evaluates animations and computes
AiNodeAnim's. The default value is the one taken from the file
Assimp provides full conversion of Lightwave's envelope system, including pre and post
conditions. The loader computes linearly subsampled animation channels with the frame rate
given in the LWS file. This property defines the end time.
Animation channels are only generated if a node has at least one envelope with more than one key
assigned. This property is given in frames where '0' is the first. By default,
if this property is not set, the importer takes the animation end from the input LWS
file.
Gets the string name used by LWSAnimationEndConfig.
Constructs a new LWSAnimationEndConfig.
Ending of the time range
Defines the output frame rate of the IRR loader.
IRR animations are difficult to convert for Assimp and there will always be
a loss of quality. This setting defines how many keys per second are returned by the converter.
The default value is 100 frames per second.
Gets the string name used by IRRAnimationFrameRateConfig.
Constructs a new IRRAnimationFramerateConfig.
Number of frames per second to output.
The Ogre importer will try to load this MaterialFile. Ogre meshes reference with material names, this does not tell Assimp
where the file is located. Assimp will try to find the source file in the following order: [material-name].material, [mesh-filename-base].material,
and lastly the material name defined by this config property. The default value is "Scene.Material".
Gets the string name used by OgreMaterialFileConfig.
Constructs a new OgreMaterialFileConfig.
Material file name to load.
The Ogre importer will detect the texture usage from the filename. Normally a texture is loaded as a color map, if no target is specified
in the material file. If this is enabled, then Assimp will try to detect the type from the texture filename postfix:
- Normal Maps: _n, _nrm, _nrml, _normal, _normals, _normalmap
- Specular Maps: _s, _spec, _specular, _specularmap
- Light Maps: _l, _light, _lightmap, _occ, _occlusion
- Displacement Maps: _dis, _displacement
The matching is case insensitive. Postfix is taken between the last "_" and last ".". The default behavior is to detect type from lower cased
texture unit name by matching against: normalmap, specularmap, lightmap, and displacementmap. For both cases if no match is found then,
is used. The default value is false.
Gets the string name used by OgreTextureTypeFromFilenameConfig.
Constructs a new OgreTextureTypeFromFilenameConfig.
True if the filename defines texture usage, false otherwise.
Specifies whether the IFC loader skips over IfcSpace elements. IfcSpace elements (and their geometric representations) are used to represent free space in a building story.
Gets the string name used by IFCSkipSpaceRepresentationsConfig.
Constructs a new IFCSkipSpaceRepresentationsConfig.
True if the IfcSpace elements are skipped, false if otherwise.
Specifies whether the IFC loader will use its own, custom triangulation algorithm to triangulate wall and floor meshes. If this is set to false,
walls will be either triangulated by the post process triangulation or will be passed through as huge polygons with faked holes (e.g. holes that are connected
with the outer boundary using a dummy edge). It is highly recommended to leave this property set to true as the default post process has some known
issues with these kind of polygons.
Gets the string name used by IFCUseCustomTriangulationConfig.
Constructs a new IFCUseCustomTriangulationConfig.
True if the loader should use its own triangulation routine for walls/floors, false otherwise.
Specifies the tessellation conic angle for IFC smoothing curves. Accepted range of values is between [5, 120]
Gets the string name used by IFCSmoothingAngleConfig.
Constructs a new IFCSmoothingAngleConfig.
Smoothing angle when tessellating curves. Needs to be in the range of [5, 120].
Specifies the tessellation for IFC cylindrical shapes. E.g. the number of segments used to approximate a circle. Accepted range of values is between [3, 180].
Gets the string name used by IFCCylindricalTessellationConfig.
Constructs a new IFCCylindricalTessellationConfig.
Tessellation of cylindrical shapes (e.g. the number of segments used to approximate a circle). Needs to be in the range of [3, 180].
Specifies whether the collada loader will ignore the up direction. Default is false.
Gets the string name used by ColladaIgnoreUpDirectionConfig.
Constructs a new ColladaIgnoreUpDirectionConfig.
True if the loader should ignore the up direction, false otherwise.
Specifies whether the FBX importer will merge all geometry layers present in the source file or import only the first. Default is true.
Gets the string name used by FBXImportAllGeometryLayersConfig.
Constructs a new FBXImportAllGeometryLayersConfig.
True if all geometry layers should be merged, false otherwise to take only the first layer.
Specifies whether the FBX importer will import all materials present in the source file or take only the referenced materials,
if the importer is configured to import materials at all. Otherwise this will have no effect. Default is false.
Gets the string name used by FBXImportAllMaterialsConfig.
Constructs a new FBXImportAllMaterialsConfig.
True if the FBX importer should import ALL materials even if not referenced, false otherwise (take only the referenced materials).
Specifies whether the FBX importer will import materials. Default is true.
Gets the string name used by FBXImportMaterialsConfig.
Constructs a new FBXImportMaterialsConfig.
True if the FBX importer should import materials, false otherwise.
Specifies whether the FBX importer will import embedded textures. Default is true.
Gets the string name used by FBXImportEmbeddedTexturesConfig.
Constructs a new FBXImportEmbeddedTexturesConfig.
True if the FBX importer should import embedded textures, false otherwise.
Specifies if the FBX importer should search for embedded loaded textures, where no embedded texture data is provided. Default is false.
Gets the string name used by FBXImportSearchEmbeddedTexturesConfig.
Constructs a new FBXImportSearchEmbeddedTexturesConfig.
True if the FBX importer should search for embedded loaded textures, where no embedded texture data is provided.
Specifies whether the FBX importer will import cameras. Default is true.
Gets the string name used by FBXImportCamerasConfig.
Constructs a new FBXImportCamerasConfig.
True if the FBX importer should import cameras, false otherwise.
Specifies whether the FBX importer will import lights. Default is true.
Gets the string name used by FBXImportLightsConfig.
Constructs a new FBXImportLightsConfig.
True if the FBX importer should import lights, false otherwise.
Specifies whether the FBX importer will import animations. Default is true.
Gets the string name used by FBXImportAnimationsConfig.
Constructs a new FBXImportAnimationsConfig.
True if the FBX importer should import animations, false otherwise.
Specifies whether the FBX importer will act in strict mode in which only the FBX 2013
format is supported and any other sub formats are rejected. FBX 2013 is the primary target for the importer, so this
format is best supported and well-tested. Default is false.
Gets the string name used by FBXStrictModeConfig.
Constructs a new FBXStrictModeConfig.
True if FBX strict mode should be used, false otherwise.
Specifies whether the FBX importer will preserve pivot points for transformations (as extra nodes). If set to false, pivots
and offsets will be evaluated whenever possible. Default value is true.
Gets the string name used by FBXPreservePivotsConfig.
Constructs a new FBXPreservePivotsConfig.
True if pivots should be preserved, false otherwise.
Specifies whether the importer will drop empty animation curves or animation curves which match the bind pose
transformation over their entire defined range. Default value is true.
Gets the string name used by FBXOptimizeEmptyAnimationCurvesConfig.
Constructs a new FBXOptimizeEmptyAnimationCurvesConfig.
True if empty animation curves should be dropped, false otherwise.
Specifies if the X-file exporter should use 64-bit doubles rather than 32-bit floats.
Gets the string name used by XFileUseDoublesConfig.
Constructs a new XFileUseDoublesConfig.
True if the x file uses 64-bit double values rather than 32-bit float values.
Represents an embedded texture. Some file formats directly embed texture assets.
Embedded textures may be uncompressed, where the data is given in an uncompressed format.
Or it may be compressed in a format like png or jpg. In the latter case, the raw
file bytes are given so the application must utilize an image decoder (e.g. DevIL) to
get access to the actual color data. This object represents both types, so some properties may or may not be valid depending
if it is compressed or not.
Gets if the texture is compressed or not.
Gets the width of the texture in pixels. Only valid for non-compressed textures.
Gets the height of the texture in pixels. Only valid for non-compressed textures.
Gets if the texture has non-compressed texel data. Only valid for non-compressed textures.
Gets the size of the non-compressed texel data. Only valid for non-compressed textures.
Gets the non-compressed texel data, the array is of size Width * Height. Only valid for non-compressed textures.
Gets if the embedded texture has compressed data. Only valid for compressed textures.
Gets the size of the compressed data. Only valid for compressed textures.
Gets the raw byte data representing the compressed texture. Only valid for compressed textures.
Gets the format hint to determine the type of compressed data. This hint
is a three-character lower-case hint like "dds", "jpg", "png".
Constructs a new instance of the class. Should use only if
reading from a native value.
Constructs a new instance of the class. This creates a compressed
embedded texture.
The 3 character format hint.
The compressed data.
Constructs a new instance of the class. This creates an uncompressed
embedded texture.
Width of the texture
Height of the texture
Color data
Thrown if the data size does not match width * height.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Enumerates metadata data types.
Metadata is a boolean.
Metadata is an integer.
Metadata is an unsigned 64-bit integer.
Metadata is a float.
Metadata is a double.
Metadata is a string.
Metadata is a .
Post processing flag options, specifying a number of steps
that can be run on the data to either generate additional vertex
data or optimize the imported data.
No flags enabled.
Calculates the tangents and binormals (bitangents)
for the imported meshes.
This does nothing if a mesh does not have normals. You might
want this post processing step to be executed if you plan
to use tangent space calculations such as normal mapping. There is a
config setting AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE which
allows you to specify a maximimum smoothing angle for the algorithm.
However, usually you'll want to leave it at the default value.
Identifies and joins identical vertex data sets within all
imported meshes.
After this step is run each mesh does contain only unique vertices
anymore, so a vertex is possibly used by multiple faces. You usually
want to use this post processing step. If your application deals with
indexed geometry, this step is compulsory or you'll just waste rendering
time.
If this flag is not specified, no vertices are referenced by more than one
face and no index buffer is required for rendering.
Converts all imported data to a left handed coordinate space.
By default the data is returned in a right-handed coordinate space,
where +X points to the right, +Z towards the viewer, and +Y upwards.
Triangulates all faces of all meshes.
By default the imported mesh data might contain faces with more than
three indices. For rendering you'll usually want all faces to
be triangles. This post processing step splits up all
higher faces to triangles. Line and point primitives are *not*
modified. If you want 'triangles only' with no other kinds of primitives,
try the following:
-
Specify both and .
-
Ignore all point and line meshes when you process Assimp's output
Removes some parts of the data structure (animations, materials,
light sources, cameras, textures, vertex components).
The components to be removed are specified in a separate configuration
option, AI_CONFIG_PP_RVC_FLAGS. This is quite useful if you don't
need all parts of the output structure. Especially vertex colors are rarely used today...calling this step to remove
unrequired stuff from the pipeline as early as possible results in an increased
performance and a better optimized output data structure.
This step is also useful if you want to force Assimp to recompute normals
or tangents. the corresponding steps don't recompute them if they're already
there (loaded from the source asset). By using this step you can make sure
they are NOT there.
Generates normals for all faces of all meshes. It may not be
specified together with .
This is ignored if normals are already there at the time where this
flag is evaluated. Model importers try to load them from the source file,
so they're usually already there. Face normals are shared between all
points of a single face, so a single point can have multiple normals,
which in other words, forces the library to duplicate vertices in
some cases. This makes senseless then.
Generates smooth normals for all vertices of all meshes. It
may not be specified together with .
This is ignored if normals are already there at the time where
this flag is evaluated. Model importers try to load them from the
source file, so they're usually already there.
The configuration option AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE
allows you to specify an angle maximum for the normal smoothing algorithm.
Normals exceeding this limit are not smoothed, resulting in a 'hard' seam
between two faces. using a decent angle here (e.g. 80 degrees) results in a very good visual
appearance.
Splits large meshes into smaller submeshes.
This is useful for realtime rendering where the number
of triangles which can be maximally processed in a single draw call is
usually limited by the video driver/hardware. The maximum vertex buffer
is usually limited, too. Both requirements can be met with this step:
you may specify both a triangle and a vertex limit for a single mesh.
The split limits can be set through the AI_CONFIG_PP_SLM_VERTEX_LIMIT
and AI_CONFIG_PP_SLM_TRIANGLE_LIMIT config settings. The default
values are 1,000,000.
Warning: This can be a time consuming task.
Removes the node graph and "bakes" (pre-transforms) all
vertices with the local transformation matrices of their nodes.
The output scene does still contain nodes, however, there is only
a root node with children, each one referencing only one mesh.
Each mesh referencing one material. For rendering, you can simply render
all meshes in order, you don't need to pay attention to local transformations
and the node hierarchy.
Warning: Animations are removed during this step.
Limits the number of bones simultaneously affecting a single
vertex to a maximum value.
If any vertex is affected by more than that number of bones,
the least important vertex weights are removed and the remaining vertex
weights are re-normalized so that the weights still sum up to 1.
The default bone weight limit is 4 and uses the
AI_LMW_MAX_WEIGHTS config. If you intend to perform the skinning in hardware, this post processing
step might be of interest for you.
Validates the imported scene data structure.
This makes sure that all indices are valid, all animations
and bones are linked correctly, all material references are
correct, etc.
It is recommended to capture Assimp's log output if you use this flag,
so you can easily find out what's actually wrong if a file fails the
validation. The validator is quite rude and will find *all* inconsistencies
in the data structure. There are two types of failures:
-
Error: There's something wrong with the imported data. Further
postprocessing is not possible and the data is not usable at all. The import
fails.
-
Warning: There are some minor issues (e.g. 1000000 animation keyframes
with the same time), but further postprocessing and use of the data structure is still
safe. Warning details are written to the log file.
Re-orders triangles for better vertex cache locality.
This step tries to improve the ACMR (average post-transform vertex cache
miss ratio) for all meshes. The implementation runs in O(n) time
and is roughly based on the 'tipsify' algorithm.
If you intend to render huge models in hardware, this step might be of interest for you.
The AI_CONFIG_PP_ICL_PTCACHE_SIZE config setting can be used to fine tune
the cache optimization.
Searches for redundant/unreferenced materials and removes them.
This is especially useful in combination with the PreTransformVertices
and OptimizeMeshes flags. Both join small meshes with equal characteristics, but
they can't do their work if two meshes have different materials. Because several
material settings are always lost during Assimp's import filders and because many
exporters don't check for redundant materials, huge models often have materials which
are defined several times with exactly the same settings.
Several material settings not contributing to the final appearance of a surface
are ignored in all comparisons ... the material name is one of them. So, if you're passing
additional information through the content pipeline (probably using *magic* material names),
don't specify this flag. Alternatively, take a look at the AI_CONFIG_PP_RRM_EXCLUDE_LIST
setting.
This step tries to determine which meshes have normal vectors
that are facing inwards.
The algorithm is simple but effective:
The bounding box of all vertices and their normals are compared
against the volume of the bounding box of all vertices without their normals.
This works well for most objects, problems might occur with planar surfaces. However,
the step tries to filter such cases. The step inverts all in-facing normals.
Generally, it is recommended to enable this step, although the result is not
always correct.
This step splits meshes with more than one primitive type in homogeneous submeshes.
This step is executed after triangulation and after it returns, just one
bit is set in aiMesh:mPrimitiveTypes. This is especially useful for real-time
rendering where point and line primitives are often ignored or rendered separately.
You can use AI_CONFIG_PP_SBP_REMOVE option to specify which primitive types you need.
This can be used to easily exclude lines and points, which are rarely used,
from the import.
This step searches all meshes for degenerated primitives and
converts them to proper lines or points. A face is 'degenerated' if one or more of its points are identical.
To have degenerated primitives removed, specify the flag
try one of the following procedures:
-
To support lines and points: Set the
AI_CONFIG_PP_FD_REMOVE option to one. This will cause the step to remove degenerated triangles as
soon as they are detected. They won't pass any further pipeline steps.
-
If you don't support lines and points: Specify flag, which
will move line and point primitives to separate meshes. Then set the AI_CONFIG_PP_SBP_REMOVE
option to and to cause step
to reject point and line meshes from the scene.
Degenerated polygons are not necessarily evil and that's why they are not removed by default. There are several
file formats which do not support lines or points where exporters bypass the format specification and write
them as degenerated triangles instead.
This step searches all meshes for invalid data, such as zeroed
normal vectors or invalid UV coordinates and removes or fixes them.
This is intended to get rid of some common exporter rrors.
This is especially useful for normals. If they are invalid,
and the step recognizes this, they will be removed and can later
be recomputed, e.g. by the GenerateSmoothNormals flag. The step
will also remove meshes that are infinitely small and reduce animation
tracks consisting of hundreds of redundant keys to a single key. The
AI_CONFIG_PP_FID_ANIM_ACCURACY config property decides the accuracy of the check
for duplicate animation tracks.
This step converts non-UV mappings (such as spherical or
cylindrical mapping) to proper texture coordinate channels.
Most applications will support UV mapping only, so you will
probably want to specify this step in every case. Note that Assimp
is not always able to match the original mapping implementation of the 3D
app which produced a model perfectly. It's always better
to let the father app compute the UV channels, at least 3DS max, maya, blender,
lightwave, modo, .... are able to achieve this.
If this step is not requested, you'll need to process the MATKEY_MAPPING
material property in order to display all assets properly.
Applies per-texture UV transformations and bakes them to stand-alone vtexture
coordinate channels.
UV Transformations are specified per-texture - see the MATKEY_UVTRANSFORM material
key for more information. This step processes all textures with transformed input UV coordinates
and generates new (pretransformed) UV channel transformations, so you will probably
want to specify this step.
UV transformations are usually implemented in realtime apps by
transforming texture coordinates in a vertex shader stage with a 3x3 (homogenous)
transformation matrix.
Searches for duplicated meshes and replaces them with a reference
to the first mesh.
This is time consuming, so don't use it if you have no time. Its
main purpose is to work around the limitation with some
file formats that don't support instanced meshes, so exporters
duplicate meshes.
Attempts to reduce the number of meshes (and draw calls).
This is recommended to be used together with
and is fully compatible with both and .
Optimizes scene hierarchy. Nodes with no animations, bones,
lights, or cameras assigned are collapsed and joined.
Node names can be lost during this step, you can specify
names of nodes that should'nt be touched or modified
with AI_CONFIG_PP_OG_EXCLUDE_LIST.
Use this flag with caution. Most simple files will be collapsed to a
single node, complex hierarchies are usually completely lost. That's not
the right choice for editor environments, but probably a very effective
optimization if you just want to get the model data, convert it to your
own format and render it as fast as possible.
This flag is designed to be used with for best
results.
Scenes with thousands of extremely small meshes packed
in deeply nested nodes exist for almost all file formats.
Usage of this and usually fixes them all and
makes them renderable.
Flips all UV coordinates along the y-axis
and adjusts material settings/bitangents accordingly.
Flips face winding order from CCW (default) to CW.
Splits meshes with many bones into submeshes so that each submesh has fewer or as many bones as a given limit.
Removes bones losslessly or according to some threshold. In some cases (e.g. formats that require it) exporters
are faced to assign dummy bone weights to otherwise static meshes assigned to animated meshes. Full, weight-based skinning is expensive while
animating nodes is extremely cheap, so this step is offered to clean up the data in that regard.
Usage of the configuration AI_CONFIG_PP_DB_THRESHOLD to control the threshold and AI_CONFIG_PP_DB_ALL_OR_NONE if you want bones
removed if and only if all bones within the scene qualify for removal.
This step will perform a global scale of the model. Some importers provide a mechanism to define a scaling unit for the model, which this processing step can utilize.
Use AI_CONFIG_GLOBAL_SCALE_FACTOR_KEY to control this.
Enumerates components of the scene or mesh data that
can be excluded from the import using the post process step
RemoveComponent.
No components to be excluded.
Removes normal vectors
Removes tangents/binormals
Removes all color sets.
Removes all texture UV sets.
Remove all boneweights from all meshes. Scenegraph
nodes corresponding to the bones are NOT removed.
Use OptimizeGraph step to remove them.
Removes all node animations. Coressponding scenegraph
nodes are NOT removed. Use OptimizeGraph step to
remove them.
Removes all embedded textures.
Removes all light sources. The corresponding scenegraph nodes are
NOT removed. Use the OptimizeGraph step to do this.
Removes all cameras. The corresponding scenegraph
nodes are NOT removed. Use the OptimizeGraph step
to do this.
Removes all meshes.
Removes all materials. One default material will be generated.
Enumerates geometric primitive types.
Point primitive. This is just a single vertex
in the virtual world. A face has one index for such a primitive.
Line primitive. This is a line defined through a start and an
end position. A face contains exactly two indices for such a primitive.
Triangle primitive, consisting of three indices.
A n-Gon that has more than three edges (thus is not a triangle).
Defines an animation channel behaves outside the defined
time range. This corresponds to the prestate and poststates
of the animation node.
The value from the default node transformation is taken.
The nearest key value is used without interpolation.
The value of the nearest two keys is linearly extrapolated for the current
time value.
The animation is repeated. If the animation key goes from n to m
and the current time is t, use the value at (t - n ) % (|m-n|).
Defines the methods of mesh morphing supported.
No morphing.
Interpolation between morph targets.
Normalized morphing between morph targets.
Relative morphing between morph targets.
Enumerates all supported light sources.
Unknown light.
Directional light source that has a well-defined
direction but is infinitely far away, e.g. the sun.
Point light source that has a well-defined position in
space but is omni-directional, e.g. a light bulb.
Spot light source emits light from a position in space,
in a certain direction that is limited by an angle, like
a cone.
Generic light level of the world, including the bounces of all other light sources. Typically, there's at most one ambient light in a scene and
is usually just a constant color. This light does not have a valid position, direction, or other properties - just the color.
An area light is a rectangle with a predefined size that uniformly emits light from one of its sides. The position is center of the rectangle and the direction is its normal vector.
Defines alpha blending flags, how the final
color value of a pixel is computed, based on the following equation:
sourceColor * sourceBlend + destColor * destBlend
Where the destColor is the previous color in the frame buffer
and sourceColor is the material color before the
transparency calculation. This corresponds to the AI_MATKEY_BLEND_FUNC property.
Default blending: sourceColor * sourceAlpha + destColor * (1 - sourceAlpha)
Additive blending: sourcecolor * 1 + destColor * 1.
Defines all shading models supported by the library.
The list of shading modes has been taken from Blender. See Blender
documentation for more information.
No shading mode defined.
Flat shading. Shading is done on a per-face basis and is diffuse only. Also known
as 'faceted shading'.
Simple Gouraud shading.
Phong Shading.
Phong-Blinn Shading.
Toon-shading, also known as a 'comic' shader.
OrenNayer shading model. Extension to standard Lambertian shading, taking the roughness
of the material into account.
Minnaert shading model. Extension to standard Lambertian shading, taking the "darkness" of
the material into account.
CookTorrance shading model. Special shader for metallic surfaces.
No shading at all. Constant light influence of 1.0.
Fresnel shading.
Defines some mixed flags for a particular texture. This corresponds
to the AI_MAT_KEY_TEXFLAGS property.
The texture's color values have to be inverted (componentwise 1-n).
Explicit request to the application to process the alpha channel of the texture. This is mutually
exclusive with . These flags are
set if the library can say for sure that the alpha channel is used/is not used.
If the model format does not define this, iti s left to the application to decide
whether the texture alpha channel - if any - is evaluated or not.
Explicit request to the application to ignore the alpha channel of the texture. This is mutually
exclusive with .
Defines how UV coordinates outside the [0..1] range are handled. Commonly
referred to as the 'wrapping mode'
A texture coordinate u|v is translated to u % 1| v % 1.
Texture coordinates outside [0...1] are clamped to the nearest valid value.
A texture coordinate u|v becomes u1|v1 if (u - (u % 1)) % 2 is zero
and 1 - (u % 1) | 1 - (v % 1) otherwise.
If the texture coordinates for a pixel are outside [0...1] the texture is not
applied to that pixel.
Defines how texture coordinates are generated
Real-time applications typically require full UV coordinates. So the use
of step is highly recommended.
It generates proper UV channels for non-UV mapped objects, as long as an accurate
description of how the mapping should look like is given.
Coordinates are taken from the an existing UV channel.
The AI_MATKEY_UVWSRC key specifies from the UV channel the texture coordinates
are to be taken from since meshes can have more than one UV channel.
Spherical mapping
Cylinder mapping
Cubic mapping
Planar mapping
Unknown mapping that is not recognied.
Defines how the Nth texture of a specific type is combined
with the result of all previous layers.
Example (left: key, right: value):
DiffColor0 - gray
DiffTextureOp0 - TextureOperation.Multiply
DiffTexture0 - tex1.png
DiffTextureOp0 - TextureOperation.Add
DiffTexture1 - tex2.png
Written as an equation, the final diffuse term for a specific
pixel would be:
diffFinal = DiffColor0 * sampleTex(DiffTexture0, UV0) + sampleTex(DiffTexture1, UV0) * diffContrib;
T = T1 * T2
T = T1 + T2
T = T1 - T2
T = T1 / T2
T = (T1 + T2) - (T1 * T2)
T = T1 + (T2 - 0.5)
Defines the purpose of a texture.
No texture, but the value can be used as a 'texture semantic'.
A diffuse texture that is combined with the result of the diffuse lighting equation.
A specular texture that is combined with the result of the specular lighting equation.
An ambient texture that is combined with the ambient lighting equation.
An emissive texture that is added to the result of the lighting calculation. It is not influenced
by incoming light, instead it represents the light that the object is naturally emitting.
A height map texture. by convention, higher gray-scale values stand for
higher elevations from some base height.
A tangent-space normal map. There are several conventions for normal maps
and Assimp does (intentionally) not distinguish here.
A texture that defines the glossiness of the material. This is the exponent of the specular (phong)
lighting equation. Usually there is a conversion function defined to map the linear color values
in the texture to a suitable exponent.
The texture defines per-pixel opacity. usually 'white' means opaque and 'black' means 'transparency. Or quite
the opposite.
A displacement texture. The exact purpose and format is application-dependent. Higher color values stand for higher vertex displacements.
A lightmap texture (aka Ambient occlusion). Both 'lightmaps' and dedicated 'ambient occlusion maps' are covered by this material property. The
texture contains a scaling value for the final color value of a pixel. Its intensity is not affected by incoming light.
A reflection texture. Contains the color of a perfect mirror reflection. This is rarely used, almost never for real-time applications.
An unknown texture that does not mention any of the defined texture type definitions. It is still imported, but is excluded from any
further postprocessing.
Defines the state of the imported scene data structure.
Default state of the scene, it imported successfully.
Specifies that the scene data structure that was imported is not complete.
This flag bypasses some internal validations and allows the import
of animation skeletons, material libaries, or camera animation paths
using Assimp. Most applications won't support such data.
This flag is set by the
post process step if validation is successful. In a validated scene you can be sure that any
cross references in the data structure (e.g. vertex indices) are valid.
This flag is set by the
post process step if validation is successful, but some issues have been found. This can for example
mean that a texture that does not exist is referenced by a material or that the bone weights for a vertex
do not sum to 1.0. In most cases you should still be able to use the import. This flag can be useful
for applications which do not capture Assimp's log output.
This flag is set by the post process step.
It indicates that the vertices of the output mesh are not in the internal verbose format anymore. In the
verbose format, all vertices are unique where no vertex is ever referenced by more than one face.
Denotes the scene is pure height-map terrain data. Pure terrains usually consist of quads, sometimes triangles,
in a regular grid. The x,y coordinates of all vertex positions refer to the x,y coordinates on the terrain height map, the
z-axis stores the elevation at a specific point.
TER (Terragen) and HMP (3D Game Studio) are height map formats.
Specifies that the scene data can be shared between structures. For example: one vertex in a few faces. This differs from as
that has internal meanings about postprocessing steps.
Enumerates Assimp function result codes.
Function returned successfully.
There was an error.
Assimp ran out of memory.
Seek origins for Assimp's virtual file system API.
Beginning of the file
Current position of the file pointer.
End of the file, offsets must be negative.
Enumerates predefined log streaming destinations.
Stream log to a file
Stream log to the standard output
Stream log to the standard error output.
MSVC only: Stream the log to the debugger (this relies
on OutputDebugString from the Win32 SDK).
Defines material property types.
Array of single-precision (32 bit) floats.
Array of double-precision (64 bit) floats.
Property is a string.
Array of 32 bit integers.
Byte buffer where the content is undefined.
Enumerates how the native Assimp DLL was compiled
Assimp compiled as a shared object (Windows: DLL);
Assimp was compiled against STLport
Assimp was compiled as a debug build
Assimp was compiled with the boost work around.
Assimp was compiled built to run single threaded.
Defines how UV coordinates should be transformed.
Scaling is evaluated.
Rotation is evaluated.
Translation is evaluated.
Defines the desired file I/O mode is when opening a new file.
Open the file for writing.
Open the file for writing binary data to it.
Open the file for writing text data to it.
Open the file for reading.
Open the file for reading binary data from it.
Open the file for reading text data from it.
Defines flags that indicate level of support for common features for a given importer.
Indicates there is a textual encoding of the file format and it is supported.
Indicates there is a binary encoding of the file format and it is supported.
Indicates there is a compressed encoding of the file format and it is supported.
Indicates that the importer reads only a very particular subset of the file format. This is common
for formats that cannot easily be mapped to the Scene data structure.
Indicates that the importer is experimental and used with caution - this is only reserved for importers still in
development, and not typically yet in released production code.
Describes a blob of exported scene data. Blobs can be nested - each blob may reference another blob, which in
turn can reference another and so on. This is used to allow exporters to write more than one output for a given
scene, such as material files. Existence of such files depends on the format.
The stream representation of an ExportDataBlob is as follows:
String: Name of the Blob
int: Length of Binary Data
byte[]: Binary Data
bool: If has next data blob
String: Name of nested blob
int: Length of nested blob binary data
byte[]: Nested blob binary data
bool: If nested blob has next data blob
....
Gets the name of the blob. The first and primary blob always has an empty string for a name. Auxillary files
that are nested will have names.
Get the blob data.
Gets the next data blob.
Gets if the blob data is valid.
Creates a new ExportDataBlob.
Unmanaged structure.
Creates a new ExportDataBlob.
Name
Data
Writes the data blob to the specified stream.
Output stream
Reads a data blob from the specified stream.
Input stream
Data blob
Describes a file format which Assimp can export to.
Gets a short string ID to uniquely identify the export format. E.g. "collada" or "obj".
Gets a short description of the file format to present to users.
Gets the recommended file extension for the exported file in lower case.
Constructs a new ExportFormatDescription.
Unmanaged structure
A single face in a mesh, referring to multiple vertices. This can be a triangle
if the index count is equal to three, or a polygon if the count is greater than three.
Since multiple primitive types can be contained in a single mesh, this approach
allows you to better examine how the mesh is constructed. If you use the
post process step flag during import, then each mesh will be homogenous where primitive type is concerned.
Gets the number of indices defined in the face.
Gets if the face has faces (should always be true).
Gets or sets the indices that refer to positions of vertex data in the mesh's vertex
arrays.
Constructs a new instance of the class.
Constructs a new instance of the class.
Face indices
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Simple implementation of an IOSystem that searches for files on the disk. This implementation
can be given a number of search directories that it will attempt to locate the file in first, before
using the file path given by Assimp. That way, you can load models that have files distributed in a number of other
directories besides the root model's.
Constructs a new FileIOSystem that does not have any search directories.
Constructs a new FileIOSystem that uses the specified search directories.
Search directories to search for files in
Sets the search directories the FileIOSystem will use when searching for files.
Directory paths
Gets the search directories the FileIOSystem is using.
Directory paths
Opens a stream to a file.
Path to the file
Desired file access mode
The IO stream
Finds the first file that matches the file name (name + extension) in the search paths.
File name (+ extension) to search for
Found file path
True if the file was found, false otherwise
Wraps a FileStream.
Metadata and feature support information for a given importer.
Gets the name of the importer (e.g. Blender3D Importer)
Gets the original author (blank if unknown or assimp team).
Gets the name of the current maintainer, if empty then the author maintains.
Gets any implementation comments.
Gets the features supported by the importer.
Gets the minimum version of the file format supported. If no version scheme, forwards compatible, or importer doesn't care, major/min will be zero.
Gets the maximum version of the file format supported. If no version scheme, forwards compatible, or importer doesn't care, major/min will be zero.
Gets the list of file extensions the importer can handle. All entries are lower case and do NOT have a leading dot.
Represents an object that can be marshaled to and from a native representation.
Managed object type
Native value type
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Custom marshaler for usage with the for performing marshaling
to-and-from unmanaged memory for non-blittable types. A type must be attributed with
to automatically have an instance of its marshaler be utilized.
Gets the native data size in bytes.
Marshals the managed object to the unmanaged chunk of memory.
Managed object to marshal.
Unmanaged chunk of memory to write to.
Marshals the managed object from the unmanaged chunk of memory.
Unmanaged chunk of memory to read from.
Managed object marshaled.
Defines a stream to some file input or output source. This object is responsible for reading/writing data
that is used by Assimp.
Gets whether or not this IOStream has been disposed.
Gets the original path to file given by Assimp.
Gets the original desired file access mode.
Gets whether the stream is in fact valid - that is, the input/output has been
properly located and can be read/written.
Constructs a new IOStream.
Path to file given by Assimp
Desired file access mode
Finalizes an instance of the class.
Disposes of resources held by the IOStream.
Releases unmanaged and - optionally - managed resources.
True to release both managed and unmanaged resources; False to release only unmanaged resources.
Writes data to the stream.
Data to write
Number of bytes to write
Number of bytes actually written. Should be equal to the specified count, unless if EoF was hit or an error occured.
Reads data from the stream.
Byte buffer to store the read data in
Number of bytes to read
Number of bytes actually read. Should be equal to the specified count, unless if EoF was hit or an error occured.
Sets the current file position pointer.
Offset in bytes from the origin
Origin reference
ReturnCode indicating success or failure.
Gets the current file position pointer (in bytes).
Current file position pointer (in bytes)
Gets the total file size (in bytes).
File size in bytes
Flushes all data currently in the stream buffers.
Closes the stream - flushing any data not yet read/written and disposes of resources.
Defines a custom IO handler that can be registered to an importer that will handle I/O for assimp. This includes searching/opening
files to read during import, and creating/writing to files during export.
Gets whether or not this IOSystem has been disposed.
Gets the number of currently opened streams.
Constructs a new IOSystem.
Finalizes an instance of the class.
Opens a stream to a file.
Path to the file
Desired file access mode
The IO stream
Closes a stream that is owned by this IOSystem.
Stream to close
Closes all outstanding streams owned by this IOSystem.
Disposes of all resources held by this object.
Releases unmanaged and - optionally - managed resources.
True to release both managed and unmanaged resources; False to release only unmanaged resources.
Describes a light source in the scene. Assimp supports multiple light sources
including spot, point, and directional lights. All are defined by a single structure
and distinguished by their parameters. Lights have corresponding nodes in the scenegraph.
Some file formats such as 3DS and ASE export a "target point", e.g. the point
a spot light is looking at (it can even be animated). Assimp writes the target point as a subnode
of a spotlight's main node called "spotName.Target". However, this is just additional information
then, the transform tracks of the main node make the spot light already point in the right direction.
Gets or sets the name of the light source. This corresponds to a node present in the scenegraph.
Gets or sets the type of light source. This should never be undefined.
Gets or sets the inner angle of a spot light's light cone. The spot light has
maximum influence on objects inside this angle. The angle is given in radians, it
is 2PI for point lights and defined for directional lights.
Gets or sets the outer angle of a spot light's light cone. The spot light does not affect objects outside
this angle. The angle is given in radians. It is 2PI for point lights and undefined for
directional lights. The outer angle must be greater than or equal to the inner angle.
Gets or sets the constant light attenuation factor. The intensity of the light source
at a given distance 'd' from the light position is Atten = 1 / (att0 + att1 * d + att2 * d*d)
.
This member corresponds to the att0 variable in the equation and is undefined for directional lights.
Gets or sets the linear light attenuation factor. The intensity of the light source
at a given distance 'd' from the light position is Atten = 1 / (att0 + att1 * d + att2 * d*d)
This member corresponds to the att1 variable in the equation and is undefined for directional lights.
Gets or sets the quadratic light attenuation factor. The intensity of the light source
at a given distance 'd' from the light position is Atten = 1 / (att0 + att1 * d + att2 * d*d)
.
This member corresponds to the att2 variable in the equation and is undefined for directional lights.
Gets or sets the position of the light source in space, relative to the
transformation of the node corresponding to the light. This is undefined for
directional lights.
Gets or sets the direction of the light source in space, relative to the transformation
of the node corresponding to the light. This is undefined for point lights.
Gets or sets the up vector of the light source in space, relative to the transformation of the node corresponding to the light.
This is undefined for point lights.
Gets or sets the diffuse color of the light source. The diffuse light color is multiplied with
the diffuse material color to obtain the final color that contributes to the diffuse shading term.
Gets or sets the specular color of the light source. The specular light color is multiplied with the
specular material color to obtain the final color that contributes to the specular shading term.
Gets or sets the ambient color of the light source. The ambient light color is multiplied with the ambient
material color to obtain the final color that contributes to the ambient shading term.
Gets or sets the Width (X) and Height (Y) of the area that represents an light.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Callback delegate for Assimp's LogStream.
Log message
Supplied user data
Represents a log stream, which receives all log messages and streams them somewhere.
Gets or sets, if verbose logging is enabled globally.
Gets or sets the user data to be passed to the callback.
Gets whether the logstream has been disposed or not.
Gets whether or not the logstream is currently attached to the library.
Static constructor.
Constructs a new LogStream.
Constructs a new LogStream.
User-supplied data
Constructs a new LogStream.
Logging callback that is called when messages are received by the log stream.
Constructs a new LogStream.
Logging callback that is called when messages are received by the log stream.
User-supplied data
Finalizes an instance of the class.
Detaches all active logstreams from the library.
Gets all active logstreams that are currently attached to the library.
Collection of active logstreams attached to the library.
Attaches the logstream to the library.
Detaches the logstream from the library.
Logs a message.
Message contents
Releases unmanaged resources held by the LogStream. This should not be called by the user if the logstream is currently attached to an assimp importer.
Releases unmanaged and - optionally - managed resources.
True to release both managed and unmanaged resources; False to release only unmanaged resources.
Override this method to log a message for a subclass of Logstream, if no callback
was set.
Message
User data
Called when the log stream has been attached to the assimp importer. At this point it may start receiving messages.
Called when the log stream has been detatched from the assimp importer. After this point it will stop receiving
messages until it is re-attached.
Log stream that writes messages to the Console.
Constructs a new console logstream.
Constructs a new console logstream.
User supplied data
Log a message to the console.
Message
Userdata
A material contains all the information that describes how to render a mesh. E.g. textures, colors, and render states. Internally
all this information is stored as key-value pair properties. The class contains many convienence methods and properties for
accessing non-texture/texture properties without having to know the Assimp material key names. Not all properties may be present,
and if they aren't a default value will be returned.
Gets the number of properties contained in the material.
Checks if the material has a name property.
Gets the material name value, if any. Default value is an empty string.
Checks if the material has a two-sided property.
Gets if the material should be rendered as two-sided. Default value is false.
Checks if the material has a shading-mode property.
Gets the shading mode. Default value is , meaning it is not defined.
Checks if the material has a wireframe property.
Gets if wireframe should be enabled. Default value is false.
Checks if the material has a blend mode property.
Gets the blending mode. Default value is .
Checks if the material has an opacity property.
Gets the opacity. Default value is 1.0f.
Checks if the material has a bump scaling property.
Gets the bump scaling. Default value is 0.0f;
Checks if the material has a shininess property.
Gets the shininess. Default value is 0.0f;
Checks if the material has a shininess strength property.
Gets the shininess strength. Default vaulue is 1.0f.
Checks if the material has a reflectivty property.
Gets the reflectivity. Default value is 0.0f;
Checks if the material has a color diffuse property.
Gets the color diffuse. Default value is white.
Checks if the material has a color ambient property.
Gets the color ambient. Default value is (.2f, .2f, .2f, 1.0f).
Checks if the material has a color specular property.
Gets the color specular. Default value is black.
Checks if the material has a color emissive property.
Gets the color emissive. Default value is black.
Checks if the material has a color transparent property.
Gets the color transparent. Default value is black.
Checks if the material has a color reflective property.
Gets the color reflective. Default value is black.
Gets if the material has a diffuse texture in the first texture index.
Gets or sets diffuse texture properties in the first texture index.
Gets if the material has a specular texture in the first texture index.
Gets or sets specular texture properties in the first texture index.
Gets if the material has a ambient texture in the first texture index.
Gets or sets ambient texture properties in the first texture index.
Gets if the material has a emissive texture in the first texture index.
Gets or sets emissive texture properties in the first texture index.
Gets if the material has a height texture in the first texture index.
Gets or sets height texture properties in the first texture index.
Gets if the material has a normal texture in the first texture index.
Gets or sets normal texture properties in the first texture index.
Gets if the material has an opacity texture in the first texture index.
Gets or sets opacity texture properties in the first texture index.
Gets if the material has a displacement texture in the first texture index.
Gets or sets displacement texture properties in the first texture index.
Gets if the material has a light map texture in the first texture index.
Gets or sets light map texture properties in the first texture index.
Gets if the material has a reflection texture in the first texture index.
Gets or sets reflection texture properties in the first texture index.
Constructs a new instance of the class.
Helper method to construct a fully qualified name from the input parameters. All the input parameters are combined into the fully qualified name: {baseName},{texType},{texIndex}. E.g.
"$clr.diffuse,0,0" or "$tex.file,1,0". This is the name that is used as the material dictionary key.
Key basename, this must not be null or empty
Texture type; non-texture properties should leave this
Texture index; non-texture properties should leave this zero.
The fully qualified name
Gets the non-texture properties contained in this Material. The name should be
the "base name", as in it should not contain texture type/texture index information. E.g. "$clr.diffuse" rather than "$clr.diffuse,0,0". The extra
data will be filled in automatically.
Key basename
The material property, if it exists
Gets the material property. All the input parameters are combined into the fully qualified name: {baseName},{texType},{texIndex}. E.g.
"$clr.diffuse,0,0" or "$tex.file,1,0".
Key basename
Texture type; non-texture properties should leave this
Texture index; non-texture properties should leave this zero.
The material property, if it exists
Gets the material property by its fully qualified name. The format is: {baseName},{texType},{texIndex}. E.g.
"$clr.diffuse,0,0" or "$tex.file,1,0".
Fully qualified name of the property
The material property, if it exists
Checks if the material has the specified non-texture property. The name should be
the "base name", as in it should not contain texture type/texture index information. E.g. "$clr.diffuse" rather than "$clr.diffuse,0,0". The extra
data will be filled in automatically.
Key basename
True if the property exists, false otherwise.
Checks if the material has the specified property. All the input parameters are combined into the fully qualified name: {baseName},{texType},{texIndex}. E.g.
"$clr.diffuse,0,0" or "$tex.file,1,0".
Key basename
Texture type; non-texture properties should leave this
Texture index; non-texture properties should leave this zero.
True if the property exists, false otherwise.
Checks if the material has the specified property by looking up its fully qualified name. The format is: {baseName},{texType},{texIndex}. E.g.
"$clr.diffuse,0,0" or "$tex.file,1,0".
Fully qualified name of the property
True if the property exists, false otherwise.
Adds a property to this material.
Material property
True if the property was successfully added, false otherwise (e.g. null or key already present).
Removes a non-texture property from the material.
Property name
True if the property was removed, false otherwise
Removes a property from the material.
Name of the property
Property texture type
Property texture index
True if the property was removed, false otherwise
Removes a property from the material.
Fully qualified name of the property ({basename},{texType},{texIndex})
True if the property was removed, false otherwise
Removes all properties from the material;
Gets -all- properties contained in the Material.
All properties in the material property map.
Gets all the number of textures that are of the specified texture type.
Texture type
Texture count
Adds a texture to the material - this bulk creates a property for each field. This will
either create properties or overwrite existing properties. If the texture has no
file path, nothing is added.
Texture to add
True if the texture properties were added or modified
Adds a texture to the material - this bulk creates a property for each field. This will
either create properties or overwrite existing properties. If the texture has no
file path, nothing is added.
Texture to add
True to only set the texture's file path, false otherwise
True if the texture properties were added or modified
Removes a texture from the material - this bulk removes a property for each field.
If the texture has no file path, nothing is removed
Texture to remove
True if the texture was removed, false otherwise.
Gets a texture that corresponds to the type/index.
Texture type
Texture index
Texture description
True if the texture was found in the material
Gets all textures that correspond to the type.
Texture type
The array of textures
Gets all textures in the material.
The array of textures
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
A key-value pairing that represents some material property.
Gets or sets the property key name. E.g. $tex.file. This corresponds to the
"AiMatKeys" base name constants.
Gets or sets the type of property.
Gets the raw byte data count.
Checks if the property has data.
Gets the raw byte data. To modify/read this data, see the Get/SetXXXValue methods.
Gets or sets the texture type semantic, for non-texture properties this is always .
Gets or sets the texture index, for non-texture properties this is always zero.
Gets the property's fully qualified name. Format: "{base name},{texture type semantic},{texture index}". E.g. "$clr.diffuse,0,0". This
is the key that is used to index the property in the material property map.
Constructs a new instance of the class.
Constructs a new instance of the class. Constructs a buffer property.
Base name of the property
Property value
Constructs a new instance of the class. Constructs a float property.
Base name of the property
Property value
Constructs a new instance of the class. Constructs an integer property.
Base name of the property
Property value
Constructs a new instance of the class. Constructs a boolean property.
Name of the property
Property value
Constructs a new instance of the class. Creates a string property.
Base name of the property
Property value
Constructs a new instance of the class. Creates a texture property.
Base name of the property
Property value
Texture type
Texture index
Constructs a new instance of the class. Creates a float array property.
Base name of the property
Property values
Constructs a new instance of the class. Creates a int array property.
Base name of the property
Property values
Constructs a new instance of the class. Creates a Color3D property.
Base name of the property
Property value
Constructs a new instance of the class. Creates a Color4D property.
Base name of the property
Property value
Gets the property raw data as a float.
Float
Sets the property raw data with a float.
Float.
True if successful, false otherwise
Gets the property raw data as a double.
Double
Sets the property raw data with a double.
Double.
True if successful, false otherwise.
Gets the property raw data as an integer.
Integer
Sets the property raw data as an integer.
Integer
True if successful, false otherwise
Gets the property raw data as a string.
String
Sets the property raw data as string.
String
True if successful, false otherwise
Gets the property raw data as a float array.
Number of elements to get
Float array
Gets the property raw data as a float array.
Float array
Sets the property raw data as a float array.
Values to set
True if successful, otherwise false
Gets the property raw data as a double array.
Double array
Sets the property raw data as a double array.
Values to set
True if successful, otherwise false
Gets the property raw data as an integer array.
Number of elements to get
Integer array
Gets the property raw data as an integer array.
Integer array
Sets the property raw data as an integer array.
Values to set
True if successful, otherwise false
Gets the property raw data as a boolean.
Boolean
Sets the property raw data as a boolean.
Boolean value
True if successful, false otherwise
Gets the property raw data as a Color3D.
Color3D
Sets the property raw data as a Color3D.
Color3D
True if successful, false otherwise
Gets the property raw data as a Color4D.
Color4D
Sets the property raw data as a Color4D.
Color4D
True if successful, false otherwise
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Represents a 3x3 matrix. Assimp docs say their matrices are always row-major,
and it looks like they're only describing the memory layout. Matrices are treated
as column vectors however (X base in the first column, Y base the second, and Z base the third)
Value at row 1, column 1 of the matrix
Value at row 1, column 2 of the matrix
Value at row 1, column 3 of the matrix
Value at row 2, column 1 of the matrix
Value at row 2, column 2 of the matrix
Value at row 2, column 3 of the matrix
Value at row 3, column 1 of the matrix
Value at row 3, column 2 of the matrix
Value at row 3, column 3 of the matrix
Gets the identity matrix.
Gets if this matrix is an identity matrix.
Gets or sets the value at the specific one-based row, column
index. E.g. i = 1, j = 2 gets the value in row 1, column 2 (MA2). Indices
out of range return a value of zero.
One-based Row index
One-based Column index
Matrix value
Constructs a new Matrix3x3.
Element at row 1, column 1
Element at row 1, column 2
Element at row 1, column 3
Element at row 2, column 1
Element at row 2, column 2
Element at row 2, column 3
Element at row 3, column 1
Element at row 3, column 2
Element at row 3, column 3
Constructs a new Matrix3x3.
A 4x4 matrix to construct from, only taking the rotation/scaling part.
Transposes this matrix (rows become columns, vice versa).
Inverts the matrix. If the matrix is *not* invertible all elements are set to .
Compute the determinant of this matrix.
The determinant
Creates a rotation matrix from a set of euler angles.
Rotation angle about the x-axis, in radians.
Rotation angle about the y-axis, in radians.
Rotation angle about the z-axis, in radians.
The rotation matrix
Creates a rotation matrix from a set of euler angles.
Vector containing the rotation angles about the x, y, z axes, in radians.
The rotation matrix
Creates a rotation matrix for a rotation about the x-axis.
Rotation angle in radians.
The rotation matrix
Creates a rotation matrix for a rotation about the y-axis.
Rotation angle in radians.
The rotation matrix
Creates a rotation matrix for a rotation about the z-axis.
Rotation angle in radians.
The rotation matrix
Creates a rotation matrix for a rotation about an arbitrary axis.
Rotation angle, in radians
Rotation axis, which should be a normalized vector.
The rotation matrix
Creates a scaling matrix.
Scaling vector
The scaling vector
Creates a rotation matrix that rotates a vector called "from" into another
vector called "to". Based on an algorithm by Tomas Moller and John Hudges:
"Efficiently Building a Matrix to Rotate One Vector to Another"
Journal of Graphics Tools, 4(4):1-4, 1999
Starting vector
Ending vector
Rotation matrix to rotate from the start to end.
Tests equality between two matrices.
First matrix
Second matrix
True if the matrices are equal, false otherwise
Tests inequality between two matrices.
First matrix
Second matrix
True if the matrices are not equal, false otherwise
Performs matrix multiplication.Multiplication order is B x A. That way, SRT concatenations
are left to right.
First matrix
Second matrix
Multiplied matrix
Implicit conversion from a 4x4 matrix to a 3x3 matrix.
4x4 matrix
3x3 matrix
Tests equality between this matrix and another.
Other matrix to test
True if the matrices are equal, false otherwise
Determines whether the specified is equal to this instance.
The to compare with this instance.
true if the specified is equal to this instance; otherwise, false.
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Represents a 4x4 column-vector matrix (X base is the first column, Y base is the second, Z base the third, and translation the fourth).
Memory layout is row major. Right handed conventions are used by default.
Value at row 1, column 1 of the matrix
Value at row 1, column 2 of the matrix
Value at row 1, column 3 of the matrix
Value at row 1, column 4 of the matrix
Value at row 2, column 1 of the matrix
Value at row 2, column 2 of the matrix
Value at row 2, column 3 of the matrix
Value at row 2, column 4 of the matrix
Value at row 3, column 1 of the matrix
Value at row 3, column 2 of the matrix
Value at row 3, column 3 of the matrix
Value at row 3, column 4 of the matrix
Value at row 4, column 1 of the matrix
Value at row 4, column 2 of the matrix
Value at row 4, column 3 of the matrix
Value at row 4, column 4 of the matrix
Gets the identity matrix.
Gets if this matrix is an identity matrix.
Gets or sets the value at the specific one-based row, column
index. E.g. i = 1, j = 2 gets the value in row 1, column 2 (MA2). Indices
out of range return a value of zero.
One-based Row index
One-based Column index
Matrix value
Constructs a new Matrix4x4.
Element at row 1, column 1
Element at row 1, column 2
Element at row 1, column 3
Element at row 1, column 4
Element at row 2, column 1
Element at row 2, column 2
Element at row 2, column 3
Element at row 2, column 4
Element at row 3, column 1
Element at row 3, column 2
Element at row 3, column 3
Element at row 3, column 4
Element at row 4, column 1
Element at row 4, column 2
Element at row 4, column 3
Element at row 4, column 4
Constructs a new Matrix4x4.
Rotation matrix to copy values from.
Transposes this matrix (rows become columns, vice versa).
Inverts the matrix. If the matrix is *not* invertible all elements are set to .
Compute the determinant of this matrix.
The determinant
Decomposes a transformation matrix into its original scale, rotation, and translation components. The
scaling vector receives the scaling for the x, y, z axes. The rotation is returned as a hamilton quaternion. And
the translation is the output position for the x, y, z axes.
Vector to hold the scaling component
Quaternion to hold the rotation component
Vector to hold the translation component
Decomposes a transformation matrix with no scaling. The rotation is returned as a hamilton
quaternion. The translation receives the output position for the x, y, z axes.
Quaternion to hold the rotation component
Vector to hold the translation component
Creates a rotation matrix from a set of euler angles.
Rotation angle about the x-axis, in radians.
Rotation angle about the y-axis, in radians.
Rotation angle about the z-axis, in radians.
The rotation matrix
Creates a rotation matrix from a set of euler angles.
Vector containing the rotation angles about the x, y, z axes, in radians.
The rotation matrix
Creates a rotation matrix for a rotation about the x-axis.
Rotation angle in radians.
The rotation matrix
Creates a rotation matrix for a rotation about the y-axis.
Rotation angle in radians.
The rotation matrix
Creates a rotation matrix for a rotation about the z-axis.
Rotation angle in radians.
The rotation matrix
Creates a rotation matrix for a rotation about an arbitrary axis.
Rotation angle, in radians
Rotation axis, which should be a normalized vector.
The rotation matrix
Creates a translation matrix.
Translation vector
The translation matrix
Creates a scaling matrix.
Scaling vector
The scaling vector
Creates a rotation matrix that rotates a vector called "from" into another
vector called "to". Based on an algorithm by Tomas Moller and John Hudges:
"Efficiently Building a Matrix to Rotate One Vector to Another"
Journal of Graphics Tools, 4(4):1-4, 1999
Starting vector
Ending vector
Rotation matrix to rotate from the start to end.
Tests equality between two matrices.
First matrix
Second matrix
True if the matrices are equal, false otherwise
Tests inequality between two matrices.
First matrix
Second matrix
True if the matrices are not equal, false otherwise
Performs matrix multiplication. Multiplication order is B x A. That way, SRT concatenations
are left to right.
First matrix
Second matrix
Multiplied matrix
Implicit conversion from a 3x3 matrix to a 4x4 matrix.
3x3 matrix
4x4 matrix
Tests equality between this matrix and another.
Other matrix to test
True if the matrices are equal, false otherwise
Determines whether the specified is equal to this instance.
The to compare with this instance.
true if the specified is equal to this instance; otherwise, false.
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Delegate for performing unmanaged memory cleanup.
Location in unmanaged memory of the value to cleanup
True if the unmanaged memory should be freed, false otherwise
Helper static class containing functions that aid dealing with unmanaged memory to managed memory conversions.
Marshals an array of managed values to a c-style unmanaged array (void*).
Managed type
Native type
Array of managed values
Pointer to unmanaged memory
Marshals an array of managed values to a c-style unmanaged array (void*). This also can optionally marshal to
an unmanaged array of pointers (void**).
Managed type
Native type
Array of managed values
True if the pointer is an array of pointers, false otherwise.
Pointer to unmanaged memory
Marshals an array of managed values from a c-style unmanaged array (void*).
Managed type
Native type
Pointer to unmanaged memory
Number of elements to marshal
Marshaled managed values
Marshals an array of managed values from a c-style unmanaged array (void*). This also can optionally marshal from
an unmanaged array of pointers (void**).
Managed type
Native type
Pointer to unmanaged memory
Number of elements to marshal
True if the pointer is an array of pointers, false otherwise.
Marshaled managed values
Marshals an array of blittable structs to a c-style unmanaged array (void*). This should not be used on non-blittable types
that require marshaling by the runtime (e.g. has MarshalAs attributes).
Struct type
Managed array of structs
Pointer to unmanaged memory
Marshals an array of blittable structs from a c-style unmanaged array (void*). This should not be used on non-blittable types
that require marshaling by the runtime (e.g. has MarshalAs attributes).
Struct type
Pointer to unmanaged memory
Number of elements to read
Managed array
Frees an unmanaged array and performs cleanup for each value. This can be used on any type that can be
marshaled into unmanaged memory.
Struct type
Pointer to unmanaged memory
Number of elements to free
Delegate that performs the necessary cleanup
Frees an unmanaged array and performs cleanup for each value. Optionally can free an array of pointers. This can be used on any type that can be
marshaled into unmanaged memory.
Struct type
Pointer to unmanaged memory
Number of elements to free
Delegate that performs the necessary cleanup
True if the pointer is an array of pointers, false otherwise.
Marshals a managed value to unmanaged memory.
Managed type
Unmanaged type
Managed value to marshal
Pointer to unmanaged memory
Marshals a managed value from unmanaged memory.
Managed type
Unmanaged type
Pointer to unmanaged memory
The marshaled managed value
Convienence method for marshaling a pointer to a structure. Only use if the type is not blittable, otherwise
use the read methods for blittable types.
Struct type
Pointer to marshal
The marshaled structure
Convienence method for marshaling a pointer to a structure. Only use if the type is not blittable, otherwise
use the read methods for blittable types.
Struct type
Pointer to marshal
The marshaled structure
Convienence method for marshaling a structure to a pointer. Only use if the type is not blittable, otherwise
use the write methods for blittable types.
Struct type
Struct to marshal
Pointer to unmanaged chunk of memory which must be allocated prior to this call
Computes the size of the struct type using Marshal SizeOf. Only use if the type is not blittable, thus requiring marshaling by the runtime,
(e.g. has MarshalAs attributes), otherwise use the SizeOf methods for blittable types.
Struct type
Size of the struct in bytes.
Computes the size of the struct array using Marshal SizeOf. Only use if the type is not blittable, thus requiring marshaling by the runtime,
(e.g. has MarshalAs attributes), otherwise use the SizeOf methods for blittable types.
Struct type
Array of structs
Total size, in bytes, of the array's contents.
Pins an object in memory, which allows a pointer to it to be returned. While the object remains pinned the runtime
cannot move the object around in memory, which may degrade performance.
Object to pin.
Pointer to pinned object's memory location.
Unpins an object in memory, allowing it to once again freely be moved around by the runtime.
Object to unpin.
Convienence method to dispose all items in the collection
IDisposable type
Collection of disposables
Casts an underlying value type to an enum type, WITHOUT first casting the value to an Object. So this avoid boxing the value.
Underlying value type.
Enum type.
Value to cast.
Enum value.
Allocates unmanaged memory. This memory should only be freed by this helper.
Size to allocate
Alignment of the memory, by default aligned along 16-byte boundary.
Pointer to the allocated unmanaged memory.
Allocates unmanaged memory that is cleared to a certain value. This memory should only be freed by this helper.
Size to allocate
Value the memory will be cleared to, by default zero.
Alignment of the memory, by default aligned along 16-byte boundary.
Pointer to the allocated unmanaged memory.
Frees unmanaged memory that was allocated by this helper.
Pointer to unmanaged memory to free.
Checks if the memory is aligned to the specified alignment.
Pointer to the memory
Alignment value, by defauly 16-byte
True if is aligned, false otherwise.
Swaps the value between two references.
Type of data to swap.
First reference
Second reference
Computes a hash code using the FNV modified algorithmm.
Byte data to hash.
Hash code for the data.
Reads a stream until the end is reached into a byte array. Based on
Jon Skeet's implementation.
It is up to the caller to dispose of the stream.
Stream to read all bytes from
Initial buffer length, default is 32K
The byte array containing all the bytes from the stream
Compares two arrays of bytes for equivalence.
First array of data.
Second array of data.
True if both arrays contain the same data, false otherwise.
Clears the memory to the specified value.
Pointer to the memory.
Value the memory will be cleared to.
Number of bytes, starting from the memory pointer, to clear.
Computes the size of the struct type.
Struct type
Size of the struct in bytes.
Casts the by-ref value into a pointer.
Struct type.
By-ref value.
Pointer to the value.
Casts the readonly by-ref value into a pointer.
Struct type.
By-ref value.
Pointer to the value.
Casts the pointer into a by-ref value of the specified type.
Struct type.
Memory location.
By-ref value.
Casts one by-ref type to another, unsafely.
From struct type
To struct type
Source by-ref value.
Reference as the from type.
Casts one readonly by-ref type to another, unsafely.
From struct type
To struct type
Source by-ref value.
Reference as the from type.
Computes the size of the struct array.
Struct type
Array of structs
Total size, in bytes, of the array's contents.
Adds an offset to the pointer.
Pointer
Offset
Pointer plus the offset
Performs a memcopy that copies data from the memory pointed to by the source pointer to the memory pointer by the destination pointer.
Destination memory location
Source memory location
Number of bytes to copy
Returns the number of elements in the enumerable.
Type of element in collection.
Enumerable collection
The number of elements in the enumerable collection.
Converts typed element array to a byte array.
Struct type
Element array
Byte array copy or null if the source array was not valid.
Converts a byte array to a typed element array.
Struct type
Byte array
Typed element array or null if the source array was not valid.
Copies bytes from a byte array to an element array.
Struct type
Source byte array
Starting index in destination array
Destination element array
Starting index in destination array
Number of elements to copy
Copies bytes from an element array to a byte array.
Struct type
Source element array
Starting index in source array
Destination byte array
Starting index in destination array
Number of elements to copy
Reads data from the memory location into the array.
Struct type
Pointer to memory location
Array to store the copied data
Zero-based element index to start writing data to in the element array.
Number of elements to copy
Reads a single element from the memory location.
Struct type
Pointer to memory location
The read value
Reads a single element from the memory location.
Struct type
Pointer to memory location
The read value.
Writes data from the array to the memory location.
Struct type
Pointer to memory location
Array containing data to write
Zero-based element index to start reading data from in the element array.
Number of elements to copy
Writes a single element to the memory location.
Struct type
Pointer to memory location
The value to write
A mesh represents geometry with a single material.
Gets or sets the mesh name. This tends to be used
when formats name nodes and meshes independently,
vertex animations refer to meshes by their names,
or importers split meshes up, each mesh will reference
the same (dummy) name.
Gets or sets the primitive type. This may contain more than one
type unless if
option is not set.
Gets or sets the index of the material associated with this mesh.
Gets the number of vertices in this mesh. This is the count that all
per-vertex lists should be the size of.
Gets if the mesh has a vertex array. This should always return
true provided no special scene flags are set.
Gets the vertex position list.
Gets if the mesh as normals. If it does exist, the count should be the same as the vertex count.
Gets the vertex normal list.
Gets if the mesh has tangents and bitangents. It is not
possible for one to be without the other. If it does exist, the count should be the same as the vertex count.
Gets the vertex tangent list.
Gets the vertex bitangent list.
Gets the number of faces contained in the mesh.
Gets if the mesh contains faces. If no special
scene flags are set, this should always return true.
Gets the mesh's faces. Each face will contain indices
to the vertices.
Gets the number of valid vertex color channels contained in the
mesh (list is not empty/not null). This can be a value between zero and the maximum vertex color count. Each individual channel
should be the size of .
Gets the number of valid texture coordinate channels contained
in the mesh (list is not empty/not null). This can be a value between zero and the maximum texture coordinate count.
Each individual channel should be the size of .
Gets the array that contains each vertex color channels, by default all are lists of zero (but can be set to null). Each index
in the array corresponds to the texture coordinate channel. The length of the array corresponds to Assimp's maximum vertex color channel limit.
Gets the array that contains each texture coordinate channel, by default all are lists of zero (but can be set to null). Each index
in the array corresponds to the texture coordinate channel. The length of the array corresponds to Assimp's maximum UV channel limit.
Gets the array that contains the count of UV(W) components for each texture coordinate channel, usually 2 (UV) or 3 (UVW). A component
value of zero means the texture coordinate channel does not exist. The channel index (index in the array) corresponds
to the texture coordinate channel index.
Gets the number of bones that influence this mesh.
Gets if this mesh has bones.
Gets the bones that influence this mesh.
Gets the number of mesh animation attachments that influence this mesh.
Gets if this mesh has mesh animation attachments.
Gets the mesh animation attachments that influence this mesh.
Gets or sets the morph method used when animation attachments are used.
Constructs a new instance of the class.
Constructs a new instance of the class.
Name of the mesh.
Constructs a new instance of the class.
Primitive types contained in the mesh.
Constructs a new instance of the class.
Name of the mesh
Primitive types contained in the mesh.
Checks if the mesh has vertex colors for the specified channel. This returns false if the list
is null or empty. The channel, if it exists, should contain the same number of entries as .
Channel index
True if vertex colors are present in the channel.
Checks if the mesh has texture coordinates for the specified channel. This returns false if the list
is null or empty. The channel, if it exists, should contain the same number of entries as .
Channel index
True if texture coordinates are present in the channel.
Convienence method for setting this meshe's face list from an index buffer.
Index buffer
Indices per face
True if the operation succeeded, false otherwise (e.g. not enough data)
Convienence method for accumulating all face indices into a single
index array.
int index array
Convienence method for accumulating all face indices into a single index
array as unsigned integers (the default from Assimp, if you need them).
uint index array
Convienence method for accumulating all face indices into a single
index array.
short index array
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
A mesh attachment store per-vertex animations for a particular frame. You may
think of this as a 'patch' for the host mesh, since the mesh attachment replaces only certain
vertex data streams at a particular time. Each mesh stores 'n' attached meshes. The actual
relationship between the time line and mesh attachments is established by the mesh animation channel,
which references singular mesh attachments by their ID and binds them to a time offset.
Gets the number of vertices in this mesh. This is a replacement
for the host mesh's vertex count. Likewise, a mesh attachment
cannot add or remove per-vertex attributes, therefore the existance
of vertex data will match the existance of data in the mesh.
Checks whether the attachment mesh overrides the vertex positions
of its host mesh.
Gets the vertex position list.
Checks whether the attachment mesh overrides the vertex normals of
its host mesh.
Gets the vertex normal list.
Checks whether the attachment mesh overrides the vertex
tangents and bitangents of its host mesh.
Gets the vertex tangent list.
Gets the vertex bitangent list.
Gets the number of valid vertex color channels contained in the
mesh (list is not empty/not null). This can be a value between zero and the maximum vertex color count. Each individual channel
should be the size of .
Gets the number of valid texture coordinate channels contained
in the mesh (list is not empty/not null). This can be a value between zero and the maximum texture coordinate count.
Each individual channel should be the size of .
Gets the array that contains each vertex color channels that override a specific channel in the host mesh, by default all are lists of zero (but can be set to null).
Each index in the array corresponds to the texture coordinate channel. The length of the array corresponds to Assimp's maximum vertex color channel limit.
Gets the array that contains each texture coordinate channel that override a specific channel in the host mesh, by default all are lists of zero (but can be set to null).
Each index in the array corresponds to the texture coordinate channel. The length of the array corresponds to Assimp's maximum UV channel limit.
Gets or sets the weight of the mesh animation.
Constructs a new instance of the class.
Checks if the mesh attachment overrides a particular set of vertex colors on
the host mesh. This returns false if the list is null or empty. The index is between
zero and the maximumb number of vertex color channels.
Channel index
True if vertex colors are present in the channel.
Checks if the mesh attachment overrides a particular set of texture coordinates on
the host mesh. This returns false if the list is null or empty. The index is
between zero and the maximum number of texture coordinate channels.
Channel index
True if texture coordinates are present in the channel.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Describes vertex-based animations for a single mesh or a group of meshes. Meshes
carry the animation data for each frame. The purpose of this object is to define
keyframes, linking each mesh attachment to a particular point in a time.
Gets or sets the name of the mesh to be animated. Empty strings are not allowed,
animation meshes need to be named (not necessarily uniquely, the name can basically
serve as a wildcard to select a group of meshes with similar animation setup).
Gets the number of meshkeys in this animation channel. There will always
be at least one key.
Gets if this animation channel has mesh keys - this should always be true.
Gets the mesh keyframes of the animation. This should not be null.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Binds an anim mesh (referenced by an index) to a specific point in time.
The time of this key.
Index of the anim mesh that corresponds to this keyframe.
Constructs a new MeshKey.
The time of this key.
Index of the anim mesh that corresponds to this keyframe.
Tests equality between two keys.
The first key
The second key
True if the key's indices are the same, false otherwise
Tests inequality between two keys.
The first key
The second key
True if the key's indices are not equal, false otherwise.
Tests inequality between two keys.
The first key
The second key
True if the first key's time is less than the second key's.
Tests inequality between two keys.
The first key
The second key
True if the first key's time is greater than the second key's.
Determines whether the specified is equal to this instance.
The to compare with this instance.
true if the specified is equal to this instance; otherwise, false.
Tests equality between this key and another.
Other key to test
True if their indices are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Describes morph-based keyframe animations for a single mesh or a group of meshes.
Gets or sets the name of the mesh to be animated. Empty strings are not allowed,
animation meshes need to be named (not necessarily uniquely, the name can basically
serve as a wildcard to select a group of meshes with similar animation setup).
Gets the number of mesh morph keys in this animation channel. There will always be at least one key.
Gets if this animation channel has mesh keys - this should always be true.
Gets the mesh morph keyframes of the animation. This should not be null.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Reads the unmanaged data from the native value.
Input native value
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Binds a morph animation mesh to a specific point in time.
Gets or sets the time of this keyframe.
Gets the values at the time of this keyframe. Number of values must equal number of weights.
Gets the weights at the time of this keyframe. Number of weights must equal number of values.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Represents a container for holding metadata, representing as key-value pairs.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Represents an entry in a metadata container.
Gets the type of metadata.
Gets the metadata data stored in this entry.
Constructs a new instance of the struct.
Type of the data.
The data.
Tests equality between two entries.
First entry
Second entry
True if the entries are equal, false otherwise
Tests inequality between two entries.
First entry
Second entry
True if the entries are not equal, false otherwise
Gets the data as the specified type. If it cannot be casted to the type, then null is returned.
Type to cast the data to.
Casted data or null.
Determines whether the specified is equal to this instance.
The to compare with this instance.
True if the specified is equal to this instance; otherwise, false.
Indicates whether the current object is equal to another object of the same type.
An object to compare with this object.
True if the current object is equal to the parameter; otherwise, false.
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns the fully qualified type name of this instance.
A containing a fully qualified type name.
Attribute for assocating a type with an instance.
Gets the associated marshaler.
Constructs a new instance of the class.
Type that implements
Thrown if the type is null.
Thrown if the type does not implement .
A node in the imported model hierarchy.
Gets or sets the name of the node.
Gets or sets the transformation of the node relative to its parent.
Gets the node's parent, if it exists.
Gets the number of children that is owned by this node.
Gets if the node contains children.
Gets the node's children.
Gets the number of meshes referenced by this node.
Gets if the node contains mesh references.
Gets the indices of the meshes referenced by this node. Meshes can be
shared between nodes, so there is a mesh collection owned by the scene
that each node can reference.
Gets the node's metadata container.
Constructs a new instance of the class.
Constructs a new instance of the class.
Name of the node
Constructs a new instance of the class.
Name of the node
Parent of the node
Finds a node with the specific name, which may be this node
or any children or children's children, and so on, if it exists.
Node name
The node or null if it does not exist
Gets a value indicating whether this instance is native blittable.
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Describes the animation of a single node. The name specifies the bone/node which is affected by
this animation chanenl. The keyframes are given in three separate seties of values,
one for each position, rotation, and scaling. The transformation matrix is computed from
these values and replaces the node's original transformation matrix at a specific time.
This means all keys are absolute and not relative to the bone default pose.
The order which the transformations are to be applied is scaling, rotation, and translation (SRT).
Keys are in chronological order and duplicate keys do not pass the validation step. There most likely will be no
negative time values, but they are not forbidden.
Gets or sets the name of the node affected by this animation. It must exist and it must
be unique.
Gets the number of position keys in the animation channel.
Gets if this animation channel contains position keys.
Gets the position keys of this animation channel. Positions are
specified as a 3D vector. If there are position keys, there should
also be -at least- one scaling and one rotation key.
Gets the number of rotation keys in the animation channel.
Gets if the animation channel contains rotation keys.
Gets the rotation keys of this animation channel. Rotations are
given as quaternions. If this exists, there should be -at least- one
scaling and one position key.
Gets the number of scaling keys in the animation channel.
Gets if the animation channel contains scaling keys.
Gets the scaling keys of this animation channel. Scalings are
specified in a 3D vector. If there are scaling keys, there should
also be -at least- one position and one rotation key.
Gets or sets how the animation behaves before the first key is encountered. By default the original
transformation matrix of the affected node is used.
Gets or sets how the animation behaves after the last key was processed. By default the original
transformation matrix of the affected node is taken.
Constructs a new instance of the class.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
A collection of child nodes owned by a parent node. Manages access to the collection while maintaing parent-child linkage.
Gets the number of elements contained in the .
Gets or sets the element at the specified index.
The child index
Gets a value indicating whether the is read-only.
true if the is read-only; otherwise, false.
Constructs a new instance of the class.
Parent node
Adds an item to the .
The object to add to the .
Adds a range of items to the list.
Item array
Removes all items from the .
Determines whether the contains a specific value.
The object to locate in the .
true if is found in the ; otherwise, false.
Copies collection contents to the array
The array to copy to.
Index of the array to start copying.
Determines the index of a specific item in the .
The object to locate in the .
The index of if found in the list; otherwise, -1.
Inserts an item to the at the specified index.
The zero-based index at which should be inserted.
The object to insert into the .
Removes the item at the specified index.
The zero-based index of the item to remove.
Removes the first occurrence of a specific object from the .
The object to remove from the .
true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original .
Copies elements in the collection to a new array.
Array of copied elements
Returns an enumerator that iterates through the collection.
A that can be used to iterate through the collection.
Returns an enumerator that iterates through a collection.
An object that can be used to iterate through the collection.
Represents a plane in three-dimensional euclidean space where
A, B, C are components of the plane normal and D is the distance along the
normal from the origin to the plane.
X component of the normal vector.
Y component of the normal vector.
Z component of the normal vector.
Distance from the origin to the plane along the normal vector.
Constructs a new Plane.
X component of the normal vector.
Y component of the normal vector.
Z component of the normal vector.
Distance from the origin to the plane along the normal vector.
Static class containing preset properties for post processing options.
PostProcess configuration for (some) Direct3D conventions,
left handed geometry, upper left origin for UV coordinates,
and clockwise face order, suitable for CCW culling.
PostProcess configuration for optimizing data for real-time.
Does the following steps:
, ,
, ,
, and
PostProcess configuration for optimizing
data for real-time rendering. Does the following steps:
, ,
, ,
,
, ,
, , and
PostProcess configuration for heavily optimizing the data
for real-time rendering. Includes all flags in
as well as
, , and
A 4D vector that represents a rotation.
Rotation component of the quaternion/
X component of the vector part of the quaternion.
Y component of the vector part of the quaternion.
Z component of the vector part of the quaternion.
Constructs a new Quaternion.
W component
X component
Y component
Z component
Constructs a new Quaternion from a rotation matrix.
Rotation matrix to create the Quaternion from.
Constructs a new Quaternion from three euler angles.
Pitch
Yaw
Roll
Constructs a new Quaternion from an axis-angle.
Axis
Angle about the axis
Normalizes the quaternion.
Transforms this quaternion into its conjugate.
Returns a matrix representation of the quaternion.
Rotation matrix representing the quaternion.
Spherical interpolation between two quaternions.
Start rotation when factor == 0
End rotation when factor == 1
Interpolation factor between 0 and 1, values beyond this range yield undefined values
Interpolated quaternion.
Rotates a point by this quaternion.
Point to rotate
Quaternion representing the rotation
Rotated point.
Multiplies two quaternions.
First quaternion
Second quaternion
Resulting quaternion
Tests equality between two quaternions.
First quaternion
Second quaternion
True if the quaternions are equal, false otherwise.
Tests inequality between two quaternions.
First quaternion
Second quaternion
True if the quaternions are not equal, false otherwise.
Tests equality between two quaternions.
Quaternion to compare
True if the quaternions are equal.
Tests equality between this color and another object.
Object to test against
True if the object is a color and the components are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Time-value pair specifying a rotation for a given time.
The time of this key.
The rotation of this key.
Constructs a new QuaternionKey.
Time of the key.
Quaternion rotation at the time frame.
Tests equality between two keys.
The first key
The second key
True if the key's rotations are the same, false otherwise.
Tests inequality between two keys.
The first key
The second key
True if the key's rotations are not the same, false otherwise.
Tests inequality between two keys.
The first key
The second key
True if the first key's time is less than the second key's.
Tests inequality between two keys.
The first key
The second key
True if the first key's time is greater than the second key's.
Determines whether the specified is equal to this instance.
The to compare with this instance.
true if the specified is equal to this instance; otherwise, false.
Tests equality between this key and another.
Other key to test
True if their rotations are equal.
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Defines a 3D ray with a point of origin and a direction.
Origin of the ray in space.
Direction of the ray.
Constructs a new Ray.
Origin of the ray.
Direction of the ray.
Represents a completely imported model or scene. Everything that was imported from the given file can be
accessed from here. Once the scene is loaded from unmanaged memory, it resides solely in managed memory
and Assimp's read only copy is released.
Gets or sets the state of the imported scene. By default no flags are set, but
issues can arise if the flag is set to incomplete.
Gets or sets the root node of the scene graph. There will always be at least the root node
if the import was successful and no special flags have been set. Presence of further nodes
depends on the format and content of the imported file.
Gets if the scene contains meshes. Unless if no special scene flags are set
this should always be true.
Gets the number of meshes in the scene.
Gets the meshes contained in the scene, if any.
Gets if the scene contains any lights.
Gets the number of lights in the scene.
Gets the lights in the scene, if any.
Gets if the scene contains any cameras.
Gets the number of cameras in the scene.
Gets the cameras in the scene, if any.
Gets if the scene contains embedded textures.
Gets the number of embedded textures in the scene.
Gets the embedded textures in the scene, if any.
Gets if the scene contains any animations.
Gets the number of animations in the scene.
Gets the animations in the scene, if any.
Gets if the scene contains any materials. There should always be at least the
default Assimp material if no materials were loaded.
Gets the number of materials in the scene. There should always be at least the
default Assimp material if no materials were loaded.
Gets the materials in the scene.
Constructs a new instance of the class.
Clears the scene of all components.
Marshals a managed scene to unmanaged memory. The unmanaged memory must be freed with a call to
, the memory is owned by AssimpNet and cannot be freed by the native library.
Scene data
Unmanaged scene or NULL if the scene is null.
Marshals an unmanaged scene to managed memory. This does not free the unmanaged memory.
The unmanaged scene data
The managed scene, or null if the pointer is NULL
Frees unmanaged memory allocated -ONLY- in . To free an unmanaged scene allocated by the unmanaged Assimp library,
call the appropiate function.
Pointer to unmanaged scene data.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Writes the managed data to the native value.
Optional pointer to the memory that will hold the native value.
Output native value
Reads the unmanaged data from the native value.
Input native value
Frees unmanaged memory created by .
Native value to free
True if the unmanaged memory should be freed, false otherwise.
Represents a texel in ARGB8888 format.
Blue component.
Green component.
Red component.
Alpha component.
Constructs a new Texel.
Blue component.
Green component.
Red component.
Alpha component.
Tests equality between two texels.
First texel
Second texel
True if the texels are equal, false otherwise.
Tests inequality between two texels.
First texel
Second texel
True if the texels are not equal, false otherwise.
Implicitly converts a texel to a Color4D.
Texel to convert
Converted Color4D
Determines whether the specified is equal to this instance.
The to compare with this instance.
true if the specified is equal to this instance; otherwise, false.
Tests equality between this key and another.
Other key to test
True if their indices are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Describes all the values pertaining to a particular texture slot in a material.
Gets the texture file path.
Gets the texture type semantic.
Gets the texture index in the material.
Gets the texture mapping.
Gets the UV channel index that corresponds to this texture from the mesh.
Gets the blend factor.
Gets the texture operation.
Gets the texture wrap mode for the U coordinate.
Gets the texture wrap mode for the V coordinate.
Gets misc flags.
Constructs a new TextureSlot.
Texture filepath
Texture type semantic
Texture index in the material
Texture mapping
UV channel in mesh that corresponds to this texture
Blend factor
Texture operation
Texture wrap mode for U coordinate
Texture wrap mode for V coordinate
Misc flags
Defines configurable properties for importing models. All properties
have default values. Setting config properties are done via the SetProperty*
methods in AssimpMethods.
Enables time measurements. If enabled the time needed for each
part of the loading process is timed and logged.
Type: bool. Default: false
Sets Assimp's multithreading policy. This is ignored if Assimp is
built without boost.thread support. Possible values are: -1 to
let Assimp decide, 0 to disable multithreading, and nay number larger than 0
to force a specific number of threads. This is only a hint and may be
ignored by Assimp.
Type: integer. Default: -1
Global setting to disable generation of skeleton dummy meshes. These are generated as a visualization aid
in cases which the input data contains no geometry, but only animation data. So the geometry are visualizing
the bones.
Type: Bool. Default: false.
Specifies the maximum angle that may be between two vertex tangents that their tangents
and bitangents are smoothed during the step to calculate the tangent basis. The angle specified
is in degrees. The maximum value is 175 degrees.
Type: float. Default: 45 degrees
Specifies the maximum angle that may be between two face normals at the same vertex position that
their normals will be smoothed together during the calculate smooth normals step. This is commonly
called the "crease angle". The angle is specified in degrees. Maximum value is 175 degrees (all vertices
smoothed).
Type: float. Default: 175 degrees
Sets the colormap(= palette) to be used to decode embedded textures in MDL (Quake or 3DG5) files.
This must be a valid path to a file. The file is 768 (256 * 3) bytes large and contains
RGB triplets for each of the 256 palette entries. If the file is not found, a default
palette (from Quake 1) is used.
Type: string. Default: "colormap.lmp"
Configures the step to
keep materials matching a name in a given list. This is a list of
1 to n strings where whitespace ' ' serves as a delimiter character. Identifiers
containing whitespaces must be enclosed in *single* quotation marks. Tabs or
carriage returns are treated as whitespace.
If a material matches one of these names, it will not be modified
or removed by the post processing step nor will other materials be replaced
by a reference to it.
Default: string. Default: ""
Configures the step
to keep the scene hierarchy. Meshes are moved to worldspace, but no optimization
is performed where meshes with the same materials are not joined.
This option could be of used if you have a scene hierarchy that contains
important additional information which you intend to parse.
Type: bool. Default: false
Configures the step
to normalize all vertex components into the -1...1 range. That is, a bounding
box for the whole scene is computed where the maximum component is taken
and all meshes are scaled uniformly. This is useful if you don't know the spatial dimension
of the input data.
Type: bool. Default: false
Configures the step
to remove degenerated primitives from the import immediately.
The default behavior converts degenerated triangles to lines and
degenerated lines to points.
Type: bool. Default: false
Configures the step
to check the area of a triangle to be greater than 1e-6. If this is not the case, the triangle will be removed if is set to true.
Type: bool. Default: false
Configures the step
to preserve nodes matching a name in a given list. This is a list of 1 to n strings, whitespace ' ' serves as a delimter character.
Identifiers containing whitespaces must be enclosed in *single* quotation marks. Carriage returns
and tabs are treated as white space.
If a node matches one of these names, it will not be modified or removed by the
postprocessing step.
Type: string. Default: ""
Sets the maximum number of triangles a mesh can contain. This is used by the
step to determine
whether a mesh must be split or not.
Type: int. Default: AiDefines.AI_SLM_DEFAULT_MAX_TRIANGLES
Sets the maximum number of vertices in a mesh. This is used by the
step to determine
whether a mesh must be split or not.
Type: integer. Default: AiDefines.AI_SLM_DEFAULT_MAX_VERTICES
Sets the maximum number of bones that can affect a single vertex. This is used
by the step.
Type: integer. Default: AiDefines.AI_LBW_MAX_WEIGHTS
Sets the size of the post-transform vertex cache to optimize vertices for. This is
for the step. The size
is given in vertices. Of course you can't know how the vertex format will exactly look
like after the import returns, but you can still guess what your meshes will
probably have. The default value *has* resulted in slight performance improvements
for most Nvidia/AMD cards since 2002.
Type: integer. Default: AiDefines.PP_ICL_PTCACHE_SIZE
Input parameter to the step.
It specifies the parts of the data structure to be removed.
This is a bitwise combination of the flag. If no valid mesh is remaining after
the step is executed, the import FAILS.
Type: integer. Default: 0
Input parameter to the step.
It specifies which primitive types are to be removed by the step.
This is a bitwise combination of the flag.
Specifying ALL types is illegal.
Type: integer. Default: 0
Input parameter to the step.
It specifies the floating point accuracy for animation values, specifically the epislon
during the comparison. The step checks for animation tracks where all frame values are absolutely equal
and removes them. Two floats are considered equal if the invariant abs(n0-n1) > epislon holds
true for all vector/quaternion components.
Type: float. Default: 0.0f (comparisons are exact)
Input parameter to the step.
It specifies which UV transformations are to be evaluated.
This is bitwise combination of the flag.
Type: integer. Default: AiDefines.AI_UV_TRAFO_ALL (All combinations)
A hint to Assimp to favour speed against import quality. Enabling this option
may result in faster loading, or it may not. It is just a hint to loaders and post-processing
steps to use faster code paths if possible. A value not equal to zero stands
for true.
Type: integer. Default: 0
Maximum bone cone per mesh for the step. Meshes
are split until the max number of bones is reached.
Type: integer. Default: 60
Source UV channel for tangent space computation. The specified channel must exist or an error will be raised.
Type: integer. Default: 0
Threshold used to determine if a bone is kept or removed during the step.
Type: float. Default: 1.0f
Require all bones to qualify for deboning before any are removed.
Type: bool. Default: false
Configures the step to use a user defined matrix as the scene root node
transformation before transforming vertices.
Type: bool. Default: false
Configures the step to use a user defined matrix as the scene root node transformation
before transforming vertices.
Type: Matrix4x4. Default: Identity Matrix
Configures the step to scale the entire scene by a certain amount. Some importers provide a mechanism to define a scaling unit for the model,
which this processing step can utilize.
Type: Float. Default: 1.0f.
Sets the vertex animation keyframe to be imported. Assimp does not support
vertex keyframes (only bone animation is supported). The libary reads only one frame of models
with vertex animations. By default this is the first frame.
The default value is 0. This option applies to all importers. However, it is
also possible to override the global setting for a specific loader. You can use the
AI_CONFIG_IMPORT_XXX_KEYFRAME options where XXX is a placeholder for the file format which
you want to override the global setting.
Type: integer. Default: 0
See the documentation for .
See the documentation for .
See the documentation for .
See the documentation for .
See the documentation for .
See the documentation for .
Configures the AC loader to collect all surfaces which have the "Backface cull" flag set in separate
meshes.
Type: bool. Default: true
Configures whether the AC loader evaluates subdivision surfaces (indicated by the presence
of the 'subdiv' attribute in the file). By default, Assimp performs
the subdivision using the standard Catmull-Clark algorithm.
Type: bool. Default: true
Configures the UNREAL 3D loader to separate faces with different surface flags (e.g. two-sided vs single-sided).
Type: bool. Default: true
Configures the terragen import plugin to compute UV's for terrains, if
they are not given. Furthermore, a default texture is assigned.
UV coordinates for terrains are so simple to compute that you'll usually
want to compute them on your own, if you need them. This option is intended for model viewers which
want to offer an easy way to apply textures to terrains.
Type: bool. Default: false
Configures the ASE loader to always reconstruct normal vectors basing on the smoothing groups
loaded from the file. Some ASE files carry invalid normals, others don't.
Type: bool. Default: true
Configures the M3D loader to detect and process multi-part Quake player models. These models
usually consit of three files, lower.md3, upper.md3 and head.md3. If this propery is
set to true, Assimp will try to load and combine all three files if one of them is loaded.
Type: bool. Default: true
Tells the MD3 loader which skin files to load. When loading MD3 files, Assimp checks
whether a file named "md3_file_name"_"skin_name".skin exists. These files are used by
Quake III to be able to assign different skins (e.g. red and blue team) to models. 'default', 'red', 'blue'
are typical skin names.
Type: string. Default: "default"
Specifies the Quake 3 shader file to be used for a particular MD3 file. This can be a full path or
relative to where all MD3 shaders reside.
Type: string. Default: ""
Configures the LWO loader to load just one layer from the model.
LWO files consist of layers and in some cases it could be useful to load only one of them.
This property can be either a string - which specifies the name of the layer - or an integer - the index
of the layer. If the property is not set then the whole LWO model is loaded. Loading fails
if the requested layer is not vailable. The layer index is zero-based and the layer name may not be empty
Type: bool. Default: false (All layers are loaded)
Configures the MD5 loader to not load the MD5ANIM file for a MD5MESH file automatically.
The default strategy is to look for a file with the same name but with the MD5ANIm extension
in the same directory. If it is found it is loaded and combined with the MD5MESH file. This configuration
option can be used to disable this behavior.
Type: bool. Default: false
Defines the beginning of the time range for which the LWS loader evaluates animations and computes
AiNodeAnim's.
Assimp provides full conversion of Lightwave's envelope system, including pre and post
conditions. The loader computes linearly subsampled animation channels with the frame rate
given in the LWS file. This property defines the start time.
Animation channels are only generated if a node has at least one envelope with more than one key
assigned. This property is given in frames where '0' is the first. By default,
if this property is not set, the importer takes the animation start from the input LWS
file ('FirstFrame' line)
Type: integer. Default: taken from file
Defines the ending of the time range for which the LWS loader evaluates animations and computes
AiNodeAnim's.
Assimp provides full conversion of Lightwave's envelope system, including pre and post
conditions. The loader computes linearly subsampled animation channels with the frame rate
given in the LWS file. This property defines the end time.
Animation channels are only generated if a node has at least one envelope with more than one key
assigned. This property is given in frames where '0' is the first. By default,
if this property is not set, the importer takes the animation end from the input LWS
file.
Type: integer. Default: taken from file
Defines the output frame rate of the IRR loader.
IRR animations are difficult to convert for Assimp and there will always be
a loss of quality. This setting defines how many keys per second are returned by the converter.
Type: integer. Default: 100
The Ogre importer will try to load this MaterialFile. Ogre meshes reference with material names, this does not tell Assimp
where the file is located. Assimp will try to find the source file in the following order: [material-name].material, [mesh-filename-base].material,
and lastly the material name defined by this config property.
Type: string. Default: "Scene.Material"
The Ogre importer will detect the texture usage from the filename. Normally a texture is loaded as a color map, if no target is specified
in the material file. If this is enabled, then Assimp will try to detect the type from the texture filename postfix:
- Normal Maps: _n, _nrm, _nrml, _normal, _normals, _normalmap
- Specular Maps: _s, _spec, _specular, _specularmap
- Light Maps: _l, _light, _lightmap, _occ, _occlusion
- Displacement Maps: _dis, _displacement
The matching is case insensitive. Postfix is taken between the last "_" and last ".". The default behavior is to detect type from lower cased
texture unit name by matching against: normalmap, specularmap, lightmap, and displacementmap. For both cases if no match is found then,
is used.
Type: Bool. Default: false.
Specifies whether the IFC loader skips over IfcSpace elements. IfcSpace elements (and their geometric representations) are used to represent free space in a building story.
Type: Bool. Default: true.
Specifies whether the IFC loader will use its own, custom triangulation algorithm to triangulate wall and floor meshes. If this is set to false,
walls will be either triangulated by the post process triangulation or will be passed through as huge polygons with faked holes (e.g. holes that are connected
with the outer boundary using a dummy edge). It is highly recommended to leave this property set to true as the default post process has some known
issues with these kind of polygons.
Type: Bool. Default: true.
Specifies the tessellation conic angle for IFC smoothing curves. Accepted range of values is between [5, 120]
Type: Float. Default: 10.0f
Specifies the tessellation for IFC cylindrical shapes. E.g. the number of segments used to approximate a circle. Accepted range of values is between [3, 180].
Type: Integer. Default: 32
Specifies whether the collada loader will ignore the up direction.
Type: Bool. Default: false
Specifies whether the FBX importer will merge all geometry layers present in the source file or take only the first.
Type: bool. Default: true.
Specifies whether the FBX importer will read all materials present in the source file or take only the referenced materials, if the importer
will read materials, otherwise this has no effect.
Type: Bool. Default: false.
Specifies whether the FBX importer will read materials.
Type: Bool. Default: true.
Specifies whether the FBX importer will read embedded textures.
Type: Bool. Default: true.
Specifies whether the FBX importer will search for embedded loaded textures, where no embedded texture data is provided.
Type: Bool. Default: false.
Specifies whether the FBX importer will read cameras.
Type: Bool. Default: true.
Specifies whether the FBX importer will read light sources.
Type: Bool. Default: true.
Specifies whether the FBX importer will read animations.
Type: Bool. default: true.
Specifies whether the FBX importer will act in strict mode in which only the FBX 2013
format is supported and any other sub formats are rejected. FBX 2013 is the primary target for the importer, so this
format is best supported and well-tested.
Type: Bool. Default: false.
Specifies whether the FBX importer will preserve pivot points for transformations (as extra nodes). If set to false, pivots
and offsets will be evaluated whenever possible.
Type: Bool. Default: true.
Specifies whether the importer will drop empty animation curves or animation curves which match the bind pose
transformation over their entire defined range.
Type: Bool. Default: true.
Specifies if the X-file exporter should use 64-bit doubles rather than 32-bit floats.
Type: Bool. Default: false.
Static class that has a number of constants that are found in Assimp. These can be limits to configuration property default values. The constants
are grouped according to their usage or where they're found in the Assimp include files.
Default value for .
Default value for .
Default value for .
Default value for .
Default value for
Defines the maximum number of indices per face (polygon).
Defines the maximum number of bone weights.
Defines the maximum number of vertices per mesh.
Defines the maximum number of faces per mesh.
Defines the maximum number of vertex color sets per mesh.
Defines the maximum number of texture coordinate sets (UV(W) channels) per mesh.
Defines the default bone count limit.
Defines the deboning threshold.
Defines the maximum length of a string used in AiString.
Defines the default color material.
Defines the default textured material (if the meshes have UV coords).
Static class containing material key constants. A fully qualified mat key
name here means that it's a string that combines the mat key (base) name, its
texture type semantic, and its texture index into a single string delimited by
commas. For non-texture material properties, the texture type semantic and texture
index are always zero.
Material name (String)
Material name (String)
Two sided property (boolean)
Two sided property (boolean)
Shading mode property (ShadingMode)
Shading mode property (ShadingMode)
Enable wireframe property (boolean)
Enable wireframe property (boolean)
Blending function (BlendMode)
Blending function (BlendMode)
Opacity (float)
Opacity (float)
Bumpscaling (float)
Bumpscaling (float)
Shininess (float)
Shininess (float)
Reflectivity (float)
Reflectivity (float)
Shininess strength (float)
Shininess strength (float)
Refracti (float)
Refracti (float)
Diffuse color (Color4D)
Diffuse color (Color4D)
Ambient color (Color4D)
Ambient color (Color4D)
Specular color (Color4D)
Specular color (Color4D)
Emissive color (Color4D)
Emissive color (Color4D)
Transparent color (Color4D)
Transparent color (Color4D)
Reflective color (Color4D)
Reflective color (Color4D)
Background image (String)
Background image (String)
Texture base name
UVWSRC base name
Texture op base name
Mapping base name
Texture blend base name.
Mapping mode U base name
Mapping mode V base name
Texture map axis base name
UV transform base name
Texture flags base name
Helper function to get the fully qualified name of a texture property type name. Takes
in a base name constant, a texture type, and a texture index and outputs the name in the format:
"baseName,TextureType,texIndex"
Base name
Texture type
Texture index
Fully qualified texture name
Helper function to get the base name from a fully qualified name of a material property type name. The format
of such a string is:
"baseName,TextureType,texIndex"
Fully qualified material property name.
Base name of the property type.
Singleton that governs access to the unmanaged Assimp library functions.
Default name of the unmanaged library. Based on runtime implementation the prefix ("lib" on non-windows) and extension (.dll, .so, .dylib) will be appended automatically.
Gets the AssimpLibrary instance.
Gets if the Assimp unmanaged library supports multithreading. If it was compiled for single threading only,
then it will not utilize multiple threads during import.
Imports a file.
Valid filename
Post process flags specifying what steps are to be run after the import.
Property store containing config name-values, may be null.
Pointer to the unmanaged data structure.
Imports a file.
Valid filename
Post process flags specifying what steps are to be run after the import.
Pointer to an instance of AiFileIO, a custom file IO system used to open the model and
any associated file the loader needs to open, passing NULL uses the default implementation.
Property store containing config name-values, may be null.
Pointer to the unmanaged data structure.
Imports a scene from a stream. This uses the "aiImportFileFromMemory" function. The stream can be from anyplace,
not just a memory stream. It is up to the caller to dispose of the stream.
Stream containing the scene data
Post processing flags
A hint to Assimp to decide which importer to use to process the data
Property store containing the config name-values, may be null.
Pointer to the unmanaged data structure.
Releases the unmanaged scene data structure. This should NOT be used for unmanaged scenes that were marshaled
from the managed scene structure - only for scenes whose memory was allocated by the native library!
Pointer to the unmanaged scene data structure.
Applies a post-processing step on an already imported scene.
Pointer to the unmanaged scene data structure.
Post processing steps to run.
Pointer to the unmanaged scene data structure.
Gets all supported export formats.
Array of supported export formats.
Exports the given scene to a chosen file format. Returns the exported data as a binary blob which you can embed into another data structure or file.
Scene to export, it is the responsibility of the caller to free this when finished.
Format id describing which format to export to.
Pre processing flags to operate on the scene during the export.
Exported binary blob, or null if there was an error.
Exports the given scene to a chosen file format and writes the result file(s) to disk.
The scene to export, which needs to be freed by the caller. The scene is expected to conform to Assimp's Importer output format. In short,
this means the model data should use a right handed coordinate system, face winding should be counter clockwise, and the UV coordinate origin assumed to be upper left. If the input is different, specify the pre processing flags appropiately.
Format id describing which format to export to.
Output filename to write to
Pre processing flags - accepts any post processing step flag. In reality only a small subset are actually supported, e.g. to ensure the input
conforms to the standard Assimp output format. Some may be redundant, such as triangulation, which some exporters may have to enforce due to the export format.
Return code specifying if the operation was a success.
Exports the given scene to a chosen file format and writes the result file(s) to disk.
The scene to export, which needs to be freed by the caller. The scene is expected to conform to Assimp's Importer output format. In short,
this means the model data should use a right handed coordinate system, face winding should be counter clockwise, and the UV coordinate origin assumed to be upper left. If the input is different, specify the pre processing flags appropiately.
Format id describing which format to export to.
Output filename to write to
Pointer to an instance of AiFileIO, a custom file IO system used to open the model and
any associated file the loader needs to open, passing NULL uses the default implementation.
Pre processing flags - accepts any post processing step flag. In reality only a small subset are actually supported, e.g. to ensure the input
conforms to the standard Assimp output format. Some may be redundant, such as triangulation, which some exporters may have to enforce due to the export format.
Return code specifying if the operation was a success.
Creates a modifyable copy of a scene, useful for copying the scene that was imported so its topology can be modified
and the scene be exported.
Valid scene to be copied
Modifyable copy of the scene
Attaches a log stream callback to catch Assimp messages.
Pointer to an instance of AiLogStream.
Enables verbose logging.
True if verbose logging is to be enabled or not.
Gets if verbose logging is enabled.
True if verbose logging is enabled, false otherwise.
Detaches a logstream callback.
Pointer to an instance of AiLogStream.
A return code signifying if the function was successful or not.
Detaches all logstream callbacks currently attached to Assimp.
Create an empty property store. Property stores are used to collect import settings.
Pointer to property store
Deletes a property store.
Pointer to property store
Sets an integer property value.
Pointer to property store
Property name
Property value
Sets a float property value.
Pointer to property store
Property name
Property value
Sets a string property value.
Pointer to property store
Property name
Property value
Sets a matrix property value.
Pointer to property store
Property name
Property value
Retrieves a color value from the material property table.
Material to retrieve the data from
Ai mat key (base) name to search for
Texture Type semantic, always zero for non-texture properties
Texture index, always zero for non-texture properties
The color if it exists. If not, the default Color4D value is returned.
Retrieves an array of float values with the specific key from the material.
Material to retrieve the data from
Ai mat key (base) name to search for
Texture Type semantic, always zero for non-texture properties
Texture index, always zero for non-texture properties
The maximum number of floats to read. This may not accurately describe the data returned, as it may not exist or be smaller. If this value is less than
the available floats, then only the requested number is returned (e.g. 1 or 2 out of a 4 float array).
The float array, if it exists
Retrieves an array of integer values with the specific key from the material.
Material to retrieve the data from
Ai mat key (base) name to search for
Texture Type semantic, always zero for non-texture properties
Texture index, always zero for non-texture properties
The maximum number of integers to read. This may not accurately describe the data returned, as it may not exist or be smaller. If this value is less than
the available integers, then only the requested number is returned (e.g. 1 or 2 out of a 4 float array).
The integer array, if it exists
Retrieves a material property with the specific key from the material.
Material to retrieve the property from
Ai mat key (base) name to search for
Texture Type semantic, always zero for non-texture properties
Texture index, always zero for non-texture properties
The material property, if found.
Retrieves a string from the material property table.
Material to retrieve the data from
Ai mat key (base) name to search for
Texture Type semantic, always zero for non-texture properties
Texture index, always zero for non-texture properties
The string, if it exists. If not, an empty string is returned.
Gets the number of textures contained in the material for a particular texture type.
Material to retrieve the data from
Texture Type semantic
The number of textures for the type.
Gets the texture filepath contained in the material.
Material to retrieve the data from
Texture type semantic
Texture index
The texture filepath, if it exists. If not an empty string is returned.
Gets all values pertaining to a particular texture from a material.
Material to retrieve the data from
Texture type semantic
Texture index
Returns the texture slot struct containing all the information.
Gets the last error logged in Assimp.
The last error message logged.
Checks whether the model format extension is supported by Assimp.
Model format extension, e.g. ".3ds"
True if the format is supported, false otherwise.
Gets all the model format extensions that are currently supported by Assimp.
Array of supported format extensions
Gets a collection of importer descriptions that detail metadata and feature support for each importer.
Collection of importer descriptions
Gets the memory requirements of the scene.
Pointer to the unmanaged scene data structure.
The memory information about the scene.
Creates a quaternion from the 3x3 rotation matrix.
Quaternion struct to fill
Rotation matrix
Decomposes a 4x4 matrix into its scaling, rotation, and translation parts.
4x4 Matrix to decompose
Scaling vector
Quaternion containing the rotation
Translation vector
Transposes the 4x4 matrix.
Matrix to transpose
Transposes the 3x3 matrix.
Matrix to transpose
Transforms the vector by the 3x3 rotation matrix.
Vector to transform
Rotation matrix
Transforms the vector by the 4x4 matrix.
Vector to transform
Matrix transformation
Multiplies two 4x4 matrices. The destination matrix receives the result.
First input matrix and is also the Matrix to receive the result
Second input matrix, to be multiplied with "dst".
Multiplies two 3x3 matrices. The destination matrix receives the result.
First input matrix and is also the Matrix to receive the result
Second input matrix, to be multiplied with "dst".
Creates a 3x3 identity matrix.
Matrix to hold the identity
Creates a 4x4 identity matrix.
Matrix to hold the identity
Gets the Assimp legal info.
String containing Assimp legal info.
Gets the native Assimp DLL's minor version number.
Assimp minor version number
Gets the native Assimp DLL's major version number.
Assimp major version number
Gets the native Assimp DLL's revision version number.
Assimp revision version number
Gets the native Assimp DLL's current version number as "major.minor.revision" string. This is the
version of Assimp that this wrapper is currently using.
Unmanaged DLL version
Gets the native Assimp DLL's current version number as a .NET version object.
Unmanaged DLL version
Get the compilation flags that describe how the native Assimp DLL was compiled.
Compilation flags
Defines all the unmanaged assimp C-function names.
Defines all of the delegates that represent the unmanaged assimp functions.
Enumerates supported platforms.
Windows platform.
Linux platform.
Mac platform.
An attribute that represents the name of an unmanaged function to import.
Name of the unmanaged function.
Constructs a new .
Name of the function.
Represents management and access to an unmanaged library. An unmanaged library can be loaded and unloaded dynamically. The library then searches for a list
of exported functions to create managed delegates for, allowing callers to access the library. Each OS platform has its own implementation to determine how to load
unmanaged libraries.
Occurs when the unmanaged library is loaded.
Occurs when the unmanaged library is freed.
Queries if the unmanaged library has been loaded or not.
Gets the default name of the unmanaged library DLL. This is dependent based on the platform extension and name prefix. Additional
names can be set in the (e.g. to load versioned DLLs)
Gets the path to the unmanaged library DLL that is currently loaded.
Gets the resolver used to find the unmanaged library DLL when loading.
Gets or sets whether an is thrown if the unmanaged DLL fails to load for whatever reason. By
default this is true.
Queries if the OS is 64-bit, if false then it is 32-bit.
Constructs a new .
Default name (NOT path) of the unmanaged library.
Delegate types to instantiate and load.
Gets an enum representing the current OS that is application is executing on.
Platform enumeration.
Loads the unmanaged library using the .
True if the library was found and successfully loaded.
Loads the unmanaged library using the supplied 32 and 64 bit paths, the one chosen is based on the OS bitness.
Path to the 32-bit DLL
Path to the 64-bit DLL
True if the library was found and successfully loaded.
Loads the unmanaged library using the supplied path.
Path to the unmanaged DLL.
True if the library was found and successfully loaded.
Frees the unmanaged library that is currently loaded.
True if the library was sucessfully freed.
Gets a delegate based on the unmanaged function name.
Type of delegate.
Name of unmanaged function that is exported by the library.
The delegate, or null if not found.
If library is not explicitly loaded by user, call this when trying to call an unmanaged function to load the unmanaged library
from the default path. This function is thread safe.
Called when the library is loaded.
Called when the library is freed.
Resolves unmanaged DLLs for . The process is completely configurable, where the user can supply alternative library names (e.g. versioned libs),
an override library name, and probing paths. These can be set for both 32/64 bit, or seperately for 32 or 64 bit. See
for the search strategy.
Gets the platform that the application is running on.
Constructs a new instance of the class.
Platform we're resolving binaries for.
Sets the collection of fallback library names (e.g. versioned libs) for 32-bit probing.
Null to clear, or set of fallback library names.
Sets the collection of fallback library names (e.g. versioned libs) for 64-bit probing.
Null to clear, or set of fallback library names.
Sets the collection of fallback library names (e.g. versioned libs) for both 32-bit and 64-bit probing.
Null to clear, or set of fallback library names.
Sets the collection of file paths to probe for 32-bit libraries. These paths always are first to be searched, in the order
that they are given.
Null to clear, or set of paths to probe.
Sets the collection of file paths to probe for 64-bit libraries. These paths always are first to be searched, in the order
that they are given.
Null to clear, or set of paths to probe.
Sets the collection of file paths to probe for both 32-bit and 64-bit libraries. These paths always are first to be searched, in the order
that they are given.
Null to clear, or set of paths to probe.
Sets an override 32-bit library name. By default, the implementations creates a default name for the library, which
is passed into for resolving. If the override is non-null, it will be used instead. This is useful if the library
to be loaded is not conforming to the platform's default prefix/extension scheme (e.g. libXYZ.so on linux where "lib" is the prefix and ".so" the extension).
Null to clear, or override library name.
Sets an override 64-bit library name. By default, the implementations creates a default name for the library, which
is passed into for resolving. If the override is non-null, it will be used instead. This is useful if the library
to be loaded is not conforming to the platform's default prefix/extension scheme (e.g. libXYZ.so on linux where "lib" is the prefix and ".so" the extension).
Null to clear, or override library name.
Sets an override 32-bit and 64-bit library name. By default, the implementations creates a default name for the library, which
is passed into for resolving. If the override is non-null, it will be used instead. This is useful if the library
to be loaded is not conforming to the platform's default prefix/extension scheme (e.g. libXYZ.so on linux where "lib" is the prefix and ".so" the extension).
Null to clear, or override library name.
Given a library name, this function attempts to resolve the file path from which it can be loaded. Each step of the search strategy uses the fallback
library names if the given name was not found in the current step. If the search is unsuccessfully, the library name is returned which means the OS will try
and do its own search strategy when attempting to load the library (this is dependent on the OS). The search strategy is the following, in order of execution:
- Search user-specified probing paths.
- Search {AppBaseDirectory}/runtimes/{RID}/native/.
- Search {AppBaseDirectory}/.
- Search nuget package path, e.g. {UserProfile}/.nuget/packages/{PackageId}/{PackageVersion}/runtimes/{RID}/native/.
The search strategy gives priority to user-specified probing paths, then local paths to the application, then finally examining the global nuget cache. The RID
is the Runtime Identifier based on the platform/architecture, see also Microsoft's RID Catalog.
Name of the library to attempt to resolve.
Full file path to the library, or the file name if not found (e.g. "libXYZ.so").
Represents an aiScene struct.
unsigned int, flags about the state of the scene
aiNode*, root node of the scenegraph.
Number of meshes contained.
aiMesh**, meshes in the scene.
Number of materials contained.
aiMaterial**, materials in the scene.
Number of animations contained.
aiAnimation**, animations in the scene.
Number of embedded textures contained.
aiTexture**, textures in the scene.
Number of lights contained.
aiLight**, lights in the scene.
Number of cameras contained.
aiCamera**, cameras in the scene.
void*, Private data do not touch!
Represents an aiNode struct.
Name of the node.
Node's transform relative to its parent.
aiNode*, node's parent.
Number of children the node owns.
aiNode**, array of nodes this node owns.
Number of meshes referenced by this node.
unsigned int*, array of mesh indices.
aiMetadata*, pointer to a metadata container. May be NULL, if an importer doesn't document metadata then it doesn't write any.
Represents an aiMetadataEntry struct.
Type of metadata.
Pointer to data.
Represents an aiMetadata struct.
Length of the Keys and Values arrays.
aiString*, array of keys. May not be NULL. Each entry must exist.
aiMetadataEntry*, array of values. May not be NULL. Entries may be NULL if the corresponding property key has no assigned value.
Represents an aiMesh struct. Note: This structure requires marshaling, due to the arrays of IntPtrs.
unsigned int, bitwise flag detailing types of primitives contained.
Number of vertices in the mesh, denotes length of
-all- per-vertex arrays.
Number of faces in the mesh.
aiVector3D*, array of positions.
aiVector3D*, array of normals.
aiVector3D*, array of tangents.
aiVector3D*, array of bitangents.
aiColor4D*[Max_Value], array of arrays of vertex colors. Max_Value is defined as .
aiVector3D*[Max_Value], array of arrays of texture coordinates. Max_Value is defined as .
unsigned int[Max_Value], array of ints denoting the number of components for each set of texture coordinates - UV (2), UVW (3) for example.
Max_Value is defined as .
aiFace*, array of faces.
Number of bones in the mesh.
aiBone**, array of bones.
Material index referencing the material in the scene.
Optional name of the mesh.
Number of attachment meshes. NOT CURRENTLY IN USE.
aiAnimMesh**, array of attachment meshes for vertex-based animation. NOT CURRENTLY IN USE.
unsigned int, method of morphing when anim meshes are specified.
Represents an aiTexture struct.
Width of the texture.
Height of the texture.
sbyte[9], format extension hint. Fixed size char is two bytes regardless of encoding. Unmanaged assimp uses a char that
maps to one byte. 8 for string + 1 for terminator.
aiTexel*, array of texel data.
Sets the format hint.
Format hint - must be 3 characters or less
Gets the format hint.
The format hint
Gets the format hint. Use this to avoid struct copy if the string was passed by read-only ref.
AiTexture
The format hint
Represents an aiFace struct.
Number of indices in the face.
unsigned int*, array of indices.
Represents an aiBone struct.
Name of the bone.
Number of weights.
VertexWeight*, array of vertex weights.
Matrix that transforms the vertex from mesh to bone space in bind pose
Represents an aiMaterialProperty struct.
Name of the property (key).
Textures: Specifies texture usage. None texture properties
have this zero (or None).
Textures: Specifies the index of the texture. For non-texture properties
this is always zero.
Size of the buffer data in bytes. This value may not be zero.
Type of value contained in the buffer.
char*, byte buffer to hold the property's value.
Represents an aiMaterial struct.
aiMaterialProperty**, array of material properties.
Number of key-value properties.
Storage allocated for key-value properties.
Represents an aiNodeAnim struct.
Name of the node affected by the animation. The node must exist
and be unique.
Number of position keys.
VectorKey*, position keys of this animation channel. Positions
are 3D vectors and are accompanied by at least one scaling and one rotation key.
The number of rotation keys.
QuaternionKey*, rotation keys of this animation channel. Rotations are 4D vectors (quaternions).
If there are rotation keys there will be at least one scaling and one position key.
Number of scaling keys.
VectorKey*, scaling keys of this animation channel. Scalings are specified as a
3D vector, and if there are scaling keys, there will at least be one position
and one rotation key.
Defines how the animation behaves before the first key is encountered.
Defines how the animation behaves after the last key was processed.
Represents an aiMeshAnim struct.
Name of the mesh to be animated. Empty string not allowed.
Number of keys, there is at least one.
aiMeshkey*, the key frames of the animation. There must exist at least one.
Represents an aiMeshMorphKey struct.
The time of this key.
unsigned int*, values at the time of this key.
double*, weights at the time of this key.
unsigned int, the number of values/weights.
Represents an aiMeshMorphAnim struct.
aiString, the name of the mesh to be animated. Empty strings are not allowed, animated meshes need to be named (not necessarily uniquely,
the name can basically serve as a wildcard to select a group of meshes with similar animation setup).
unsigned int, number of key frames. Must be at least one.
aiMeshMorphKey*, key frames of the animation.
Represents an aiAnimation struct.
Name of the animation.
Duration of the animation in ticks.
Ticks per second, 0 if not specified in imported file.
Number of bone animation channels, each channel affects a single node.
aiNodeAnim**, node animation channels. Each channel affects a single node.
Number of mesh animation channels. Each channel affects a single mesh and defines
vertex-based animation.
aiMeshAnim**, mesh animation channels. Each channel affects a single mesh.
Number of mesh morph animation channels. Each channel affects a single mesh and defines
morphing animation.
aiMeshMorphAnim**, mesh morph animation channels. Each channel affects a single mesh.
Represents an aiLight struct.
Name of the light.
Type of light.
Position of the light.
Direction of the spot/directional light.
Up direction of the light source in space. Undefined for point lights.
Attenuation constant value.
Attenuation linear value.
Attenuation quadratic value.
Diffuse color.
Specular color.
Ambient color.
Spot light inner angle.
Spot light outer angle.
Width (X) and Height (Y) of the area that represents an light.
Represents an aiCamera struct.
Name of the camera.
Position of the camera.
Up vector of the camera.
Viewing direction of the camera.
Field Of View of the camera.
Near clip plane distance.
Far clip plane distance.
The Aspect ratio.
Represents an aiString struct.
Byte length of the UTF-8 string.
Actual string data.
Constructs a new instance of the struct.
The string data
Convienence method for getting the AiString string - if the length is not greater than zero, it returns
an empty string rather than garbage. Use this to avoid struct copy if the string was passed by read-only ref.
AiString
AiString string data
Convienence method for getting the AiString string - if the length is not greater than zero, it returns
an empty string rather than garbage.
AiString string data
Convienence method for setting the AiString string (and length).
String data to set
True if the operation was successful, false otherwise.
Returns the fully qualified type name of this instance.
A containing a fully qualified type name.
Represents a log stream, which receives all log messages and streams them somewhere.
Function pointer that gets called when a message is to be logged.
char*, user defined opaque data.
Represents the memory requirements for the different components of an imported
scene. All sizes in in bytes.
Size of the storage allocated for texture data, in bytes.
Size of the storage allocated for material data, in bytes.
Size of the storage allocated for mesh data, in bytes.
Size of the storage allocated for node data, in bytes.
Size of the storage allocated for animation data, in bytes.
Size of the storage allocated for camera data, in bytes.
Size of the storage allocated for light data, in bytes.
Total storage allocated for the imported scene, in bytes.
Represents an aiAnimMesh struct. Note: This structure requires marshaling, due to the array of IntPtrs.
aiVector3D*, replacement position array.
aiVector3D*, replacement normal array.
aiVector3D*, replacement tangent array.
aiVector3D*, replacement bitangent array.
aiColor4D*[Max_Value], array of arrays of vertex colors. Max_Value is defined as .
aiVector3D*[Max_Value], array of arrays of texture coordinates. Max_Value is defined as .
unsigned int, number of vertices.
float, weight of the AnimMesh.
Describes a variety of information about an importer.
char*, full name of the importer (e.g. Blender3D Importer)
char*, original author (blank if unknown or assimp team)
char*, current maintainer, left blank if the author maintains.
char*, implementation comments. E.g. unimplemented features.
unsigned int, features supported by the importer.
unsigned int, max major version of format supported. If no version scheme or importer doesn't care, will be zero.
unsigned int, min major version of format supported. If no version scheme or importer doesn't care, will be zero.
unsigned int, max major version of format supported. If no version scheme, forwards compatible, or importer doesn't care, will be zero.
unsigned int, min major version of format supported. If no version scheme, forwards compatible, or importer doesn't care, will be zero.
char*, list of file extensions the importer can handle. Entries are separated by space characters, and all entries are lower case WITHOUT a leading dot. (e.g. "xml dae").
Multiple importers may respond to the same file extension, assim
Describes a file format which Assimp can export to.
char*, a short string ID to uniquely identify the export format. e.g. "collada" or "obj"
char*, a short description of the file format to present to users.
char*, a recommended file extension of the exported file in lower case.
Describes a blob of exported scene data. Blobs can be nested, the first blob always has an empty name. Nested
blobs represent auxillary files produced by the exporter (e.g. material files) and are named accordingly.
size_t, size of the data in bytes.
void*, the data.
AiString, name of the blob.
aiExportDataBlob*, pointer to the next blob in the chain.
Contains callbacks to implement a custom file system to open and close files.
Function pointer to open a new file.
Function pointer used to close an existing file.
Char*, user defined opaque data.
Contains callbacks to read and write to a file opened by a custom file system.
Function pointer to read from a file.
Function pointer to write to a file.
Function pointer to retrieve the current position of the file cursor.
Function pointer to retrieve the size of the file.
Function pointer to set the current position of the file cursor.
Function pointer to flush the file contents.
Char*, user defined opaque data.
Callback delegate for Assimp's LogStream.
Log message
char* pointer to user data that is passed to the callback
Callback delegate for a custom file system, to write to a file.
Pointer to an AiFile instance
Char* pointer to data to write (casted from a void*)
Size of a single element in bytes to write
Number of elements to write
Number of elements successfully written. Should be zero if either size or numElements is zero. May be less than numElements if an error occured.
Callback delegate for a custom file system, to read from a file.
Pointer to an AiFile instance.
Char* pointer that will store the data read (casted from a void*)
Size of a single element in bytes to read
Number of elements to read
Number of elements succesfully read. Should be zero if either size or numElements is zero. May be less than numElements if end of file is encountered, or if an error occured.
Callback delegate for a custom file system, to tell offset/size information about the file.
Pointer to an AiFile instance.
Returns the current file cursor or the file size in bytes. May be -1 if an error has occured.
Callback delegate for a custom file system, to flush the contents of the file to the disk.
Pointer to an AiFile instance.
Callback delegate for a custom file system, to set the current position of the file cursor.
Pointer to An AiFile instance.
Offset from the origin.
Position used as a reference
Returns success, if successful
Callback delegate for a custom file system, to open a given file and create a new AiFile instance.
Pointer to an AiFileIO instance.
Path to the target file
Read-write permissions to request
Pointer to an AiFile instance.
Callback delegate for a custom file system, to close a given file and free its memory.
Pointer to an AiFileIO instance.
Pointer to an AiFile instance that will be closed.
Fixed length array for representing the color channels of a mesh. Length is equal
to .
Gets the length of the array.
Gets or sets an array value at the specified index.
Zero-based index.
Fixed length array for representing the texture coordinate channels of a mesh. Length is equal
to .
Gets the length of the array.
Gets or sets an array value at the specified index.
Zero-based index.
Fixed length array for representing the number of UV components for each texture coordinate channel of a mesh. Length is equal
to .
Gets the length of the array.
Gets or sets an array value at the specified index.
Zero-based index.
Defines how an UV channel is transformed.
Translation on the U and V axes. Default is 0|0
Scaling on the U and V axes. Default is 1|1.
Rotation in counter-clockwise direction, specfied in
radians. The rotation center is 0.5f|0.5f and the
default value is zero.
Represents a two-dimensional vector.
X component.
Y component
Gets or sets the component value at the specified zero-based index
in the order of XY (index 0 access X, 1 access Y. If
the index is not in range, a value of zero is returned.
Zero-based index.
The component value
Constructs a new Vector2D.
X component
Y component
Constructs a new Vector2D with both components
set the same value.
Value to set both X and Y to
Sets the X and Y values.
X component
Y component
Calculates the length of the vector.
Vector's length
Calculates the length of the vector squared.
Vector's length squared
Normalizes the vector where all components add to one (Unit Vector), but preserves
the direction that the vector represents.
Negates the vector.
Adds two vectors together.
First vector
Second vector
Added vector
Subtracts the second vector from the first vector.
First vector
Second vector
Resulting vector
Multiplies two vectors together.
First vector
Second vector
Multiplied vector
Multiplies a vector by a scalar.
Source vector
Scalar value
Scaled vector
Multiplies a vector by a scalar.
Scalar value
Source vector
Scaled vector
Divides the first vector by the second vector.
First vector
Second vector
Divided vector
Divides the vector by a divisor value.
Source vector
Divisor
Divided vector
Negates the vector.
Source vector
Negated vector
Tests equality between two vectors.
First vector
Second vector
True if the vectors are equal, false otherwise
Tests inequality between two vectors.
First vector
Second vector
True if the vectors are not equal, false otherwise
Tests equality between this vector and another vector.
Vector to test against
True if components are equal
Tests equality between this vector and another object.
Object to test against
True if the object is a vector and the components are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Represents a three-dimensional vector.
X component.
Y component.
Z component.
Gets or sets the component value at the specified zero-based index
in the order of XYZ (index 0 access X, 1 access Y, etc). If
the index is not in range, a value of zero is returned.
Zero-based index.
The component value
Constructs a new Vector3D.
X component
Y component
Z component
Constructs a new Vector3D.
Vector2D containing the X, Y values
Z component
Constructs a new Vector3D where each component is set
to the same value.
Value to set X, Y, and Z to
Sets the X, Y, and Z values.
X component
Y component
Z component
Calculates the length of the vector.
Vector's length
Calculates the length of the vector squared.
Vector's length squared
Normalizes the vector where all components add to one (Unit Vector), but preserves
the direction that the vector represents.
Negates the vector.
Calculates the cross product of two vectors.
First vector
Second vector
Resulting vector
Calculates the dot product of two vectors.
First vector
Second vector
Resulting vector
Adds two vectors together.
First vector
Second vector
Added vector
Subtracts the second vector from the first vector.
First vector
Second vector
Resulting vector
Multiplies two vectors together.
First vector
Second vector
Multiplied vector
Multiplies a vector by a scalar.
Source vector
Scalar value
Scaled vector
Multiplies a vector by a scalar.
Scalar value
Source vector
Scaled vector
Transforms this vector by a 3x3 matrix. This "post-multiplies" the two.
Source matrix
Source vector
Transformed vector
Transforms this vector by a 4x4 matrix. This "post-multiplies" the two.
Source matrix
Source vector
Transformed vector
Divides the first vector by the second vector.
First vector
Second vector
Divided vector
Divides the vector by a divisor value.
Source vector
Divisor
Divided vector
Negates the vector.
Source vector
Negated vector
Tests equality between two vectors.
First vector
Second vector
True if the vectors are equal, false otherwise
Tests inequality between two vectors.
First vector
Second vector
True if the vectors are not equal, false otherwise
Tests equality between this vector and another vector.
Vector to test against
True if components are equal
Tests equality between this vector and another object.
Object to test against
True if the object is a vector and the components are equal
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Time-value pair specifying a 3D vector for a given time.
The time of this key.
The 3D vector value of this key.
Constructs a new VectorKey.
The time of this key.
The 3D vector value of this key.
Tests equality between two keys.
The first key
The second key
True if the key's 3D vectors are the same, false otherwise.
Tests inequality between two keys.
The first key
The second key
True if the key's 3D vectors are not the same, false otherwise.
Tests inequality between two keys.
The first key
The second key
True if the first key's time is less than the second key's.
Tests inequality between two keys.
The first key
The second key
True if the first key's time is greater than the second key's.
Determines whether the specified is equal to this instance.
The to compare with this instance.
true if the specified is equal to this instance; otherwise, false.
Tests equality between this key and another.
Other key to test
True if their 3D vectors are equal.
Returns a hash code for this instance.
A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
Returns a that represents this instance.
A that represents this instance.
Represents a single influence of a bone on a vertex.
Index of the vertex which is influenced by the bone.
Strength of the influence in range of (0...1). All influences
from all bones at one vertex amounts to 1.
Constructs a new VertexWeight.
Index of the vertex.
Weight of the influence.
Returns a that represents this instance.
A that represents this instance.
Internal stub type used by MemoryInterop.ILPatcher to inject fast-interop code. Depending on the type of method, the IL injection is either inline (replacing the call) or
replaces the entire method body. Recommended types to use are generally blittable structs.
Casts the by-ref value from one type to another.
Type to cast from.
Type to cast to.
By-ref value.
Ref to the value, as the new type.
Casts the readonly by-ref value from one type to another.
Type to cast from.
Type to cast to.
By-ref value.
Ref to the value, as the new type.
Casts the pointer to a by-ref value of the specified type.
Type to cast to.
Pointer.
Ref to the value, as the new type.
Write data from the managed array to the memory location. This will temporarily pin the array and do a memcpy.
Type of data.
Pointer to memory location to receive the data.
Array containing data to write.
Zero-based index to start reading data from the array.
Number of elements to copy.
Write data from the managed array to the memory location. This will temporarily pin the array and do an unaligned memcpy.
Type of data.
Pointer to memory location to write the data.
Array containing data to write.
Zero-based index to start reading data from the array.
Number of elements to copy.
Read data from the memory location to the managed array. This will temporarily pin the array and do a memcpy.
Type of data.
Pointer to memory location to read the data.
Array to store the copied data.
Zero-based index to start writing data to in the array.
Number of elements to copy.
Read data from the memory location to the managed array. This will temporarily pin the array and do an unaligned memcpy.
Type of data.
Pointer to memory location to read the data.
Array to store the copied data.
Zero-based index to start writing data to in the array.
Number of elements to copy.
Computes the size of the type (inlined).
Type of data.
Size of the type in bytes.
Casts the by-ref value to a pointer (inlined). Note: This does not do any sort of pinning.
Type of data.
Ref to a value.
Pointer to the memory location.
Casts the readonly by-ref value to a pointer (inlined). Note: This does not do any sort of pinning.
Type of data.
Ref to a value.
Pointer to the memory location.
Writes a single element to the memory location (inlined).
Type of data.
Pointer to memory location.
Value to be written.
Writes a single element to the memory location (inlined, unaligned copy).
Type of data.
Pointer to memory location.
Value to be written.
Reads a single element from the memory location (inlined).
Type of data.
Pointer to memory location.
Value read.
Reads a single element from the memory location (inlined, unaligned copy).
Type of data.
Pointer to memory location.
Value read.
Copies the number of bytes from one pointer to the other (inlined).
Pointer to the destination memory location.
Pointer to the source memory location
Number of bytes to copy
Copies the number of bytes from one pointer to the other (inlined, unaligned copy).
Pointer to the destination memory location.
Pointer to the source memory location
Number of bytes to copy
Clears the memory to a specified value (inlined).
Pointer to the memory location.
Value the memory will be cleared to.
Number of bytes to to set.
Clears the memory to a specified value (inlined, unaligned init).
Pointer to the memory location.
Value the memory will be cleared to.
Number of bytes to to set.