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.
Represents an object that can be marshaled to and from a native representation.
Managed object type
Native value type
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
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Constructs a new instance of the class.
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.
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 mesh animation channels.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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 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.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
The imported scene
Thrown if the stream is not valid (null or write-only) or if the format hint is null or empty.
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.
Stream to read from
Post processing flags, if any
Format extension to serve as a hint to Assimp to choose which importer to use
The imported scene
Thrown if the stream is not valid (null or write-only) or if the format hint is null or empty.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
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) or if the format hint is null or empty.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
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) or if the format hint is null or empty.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
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) or if the format hint is null or empty.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
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) or if the format hint is null or empty.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
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) or if the format hint is null or empty.
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.
Stream to read from
Format extension to serve as a hint to Assimp to choose which importer to use
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) or if the format hint is null or empty.
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
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.
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.
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.
Constructs a new instance of the class.
Constructs a new instance of the class.
Name of the bone
Bone's offset matrix
Vertex weights
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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.
Constructs a new instance of the class.
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.
Gets 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 the position of the camera relative to the coordinate space defined by
the corresponding node. THe default value is 0|0|0.
Gets 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 the viewing direction of the camera, relative to the coordiante space defined by the corresponding node.
The default value is 0|0|1.
Gets 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 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 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 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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Represents a RGB color.
Red component.
Green component.
Blue component.
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.
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
Represents a Red-Green-Blue-Alpha (RGBA) color.
Color values range from 0 to 1.
Red component.
Green component.
Blue component.
Alpha component.
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.
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
Base property config.
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
Gets the property name.
Describes an integer configuration property.
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
Gets the property value.
Gets the default property value.
Describes a float configuration property.
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
Gets the property value.
Gets the default property value.
Describes a boolean configuration property.
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
Gets the property value.
Gets the default property value.
Describes a string configuration property.
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
Gets the property value.
Gets the default property value.
Configuration to enable time measurements. If enabled, each
part of the loading process is timed and logged.
Constructs a new MeasureTimeConfig.
True if the loading process should be timed or not.
Gets the string name used by MeasureTimeConfig.
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.
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.
Gets the string name used by MultithreadingConfig.
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.
Constructs a new TangentSmoothingAngleConfig.
Smoothing angle, in degrees.
Gets the string name used by TangentSmoothingAngleConfig.
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.
Constructs a new NormalSmoothingAngleConfig.
Smoothing angle, in degrees.
Gets the string name used by NormalSmoothingAngleConfig.
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".
Constructs a new MDLColorMapConfig.
Colormap filename
Gets the string name used by MDLColorMapConfig.
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.
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.
Gets the string name used by MaterialExcludeListConfig.
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.
Constructs a new KeepHierarchyConfig.
True to keep the hierarchy, false otherwise.
Gets the string name used by KeepSceneHierarchyConfig.
Configuration for the step
to normalize all vertex components into the -1...1 range. The default value is
false.
Constructs a new NormalizeVertexComponentsConfig.
True if the post process step should normalize vertex components, false otherwise.
Gets the string name used by NormalizeVertexComponentsConfig.
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.
Constructs a new RemoveDegeneratePrimitivesConfig.
True if the post process step should remove degenerate primitives, false otherwise.
Gets the string name used by RemoveDegeneratePrimitivesConfig.
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.
Constructs a new NodeExcludeListConfig.
List of node names
Gets the string name used by NodeExcludeListConfig.
Configuration for the step
that specifies the maximum number of triangles a mesh can contain. The
default value is MeshTriangleLimitConfigDefaultValue.
Constructs a new MeshTriangleLimitConfig.
Max number of triangles a mesh can contain.
Gets the string name used by MeshTriangleLimitConfig.
Gets the defined default limit value, this corresponds to the
constant.
Configuration for the step
that specifies the maximum number of vertices a mesh can contain. The
default value is MeshVertexLimitConfigDefaultValue.
Constructs a new MeshVertexLimitConfig.
Max number of vertices a mesh can contain.
Gets the string name used by MeshVertexLimitConfig.
Gets the defined default limit value, this corresponds to the
constant.
Configuration for the step
that specifies the maximum number of bone weights per vertex. The default
value is VertexBoneWeightLimitConfigDefaultValue.
Constructs a new VertexBoneWeightLimitConfig.
Max number of bone weights per vertex.
gets the string name used by VertexBoneWeightLimitConfig.
Gets the defined default limit value, this corresponds to the
constant.
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.
Constructs a new VertexCacheSizeConfig.
Size of the post-transform vertex cache, in number of vertices.
Gets the string name used by VertexCacheConfig.
Gets the defined default vertex cache size, this corresponds to
the .
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 .
Constructs a new RemoveComponentConfig.
Bit-wise combination of components to exclude.
Gets the string name used by RemoveComponentConfig.
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.
Constructs a new SortByPrimitiveTypeConfig.
Bit-wise combination of primitive types to remove
Gets the string name used by SortByPrimitiveTypeConfig.
Configuration for the step that
specifies the floating point accuracy for animation values, specifically
the episilon during comparisons. The default value is 0.0f.
Constructs a new AnimationAccuracyConfig.
Episilon for animation value comparisons.
Gets the string name used by AnimationAccuracyConfig.
Configuration for the step that
specifies which UV transformations are to be evaluated. The default value
is for all combinations (scaling, rotation, translation).
Constructs a new TransformUVConfig.
Bit-wise combination specifying which UV transforms that should be evaluated.
Gets the string name used by TransformUVConfig.
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.
Constructs a new FavorSpeedConfig.
True if Assimp should favor speed at the expense of quality, false otherwise.
Gets the string name used by FavorSpeedConfig.
Configures the maximum bone count per mesh for the step. Meshes are
split until the maximum number of bones is reached.
Constructs a new MaxBoneCountConfig.
The maximum bone count.
Gets the string name used by MaxBoneCountConfig.
Configures which texture channel is used for tangent space computations. The channel must exist or an error will be raised.
Constructs a new TangentTextureChannelIndexConfig.
The zero-based texture channel index.
Gets the string name used by TangentTextureChannelIndexConfig.
Configures the threshold that is used to determine what bones are removed.
Constructs a new DeboneThresholdConfig.
The debone threshold.
Gets the string name used by DeboneThresholdConfig.
Configuration that requires all bones to qualify for deboning before any are removed.
Constructs a new DeboneAllOrNoneConfig.
True if all are required, false if none need to qualify.
Gets the string name used by DeboneAllOrNoneConfig.
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.
Constructs a new GlobalKeyFrameImportConfig.
Keyframe index
Gets the string name used by GlobalKeyFrameImportConfig.
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.
Constructs a new MD3KeyFrameImportConfig.
Keyframe index
Gets the string name used by MD3KeyFrameImportConfig.
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.
Constructs a new MD2KeyFrameImportConfig.
Keyframe index
Gets the string name used by MD2KeyFrameImportConfig.
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.
Constructs a new MDLKeyFrameImportConfig.
Keyframe index
Gets the string name used by MDLKeyFrameImportConfig.
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.
Constructs a new SMDKeyFrameImportConfig.
Keyframe index
Gets the string name used by SMDKeyFrameImportConfig.
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.
Constructs a new UnrealKeyFrameImportConfig.
Keyframe index
Gets the string name used by UnrealKeyFrameImportConfig.
Configures the AC loader to collect all surfaces which have the "Backface cull" flag set in separate
meshes. The default value is true.
Constructs a new ACSeparateBackfaceCullConfig.
True if all surfaces that have the "backface cull" flag set should be collected in separate meshes, false otherwise.
Gets the string name used by ACSeparateBackfaceCullConfig.
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.
Constructs a new ACEvaluateSubdivisionConfig.
True if the AC loader should evaluate subdivisions, false otherwise.
Gets the string name used by ACEvaluateSubdivisionConfig.
Configures the UNREAL 3D loader to separate faces with different surface flags (e.g. two-sided vs single-sided).
The default value is true.
Constructs a new UnrealHandleFlagsConfig.
True if the unreal loader should separate faces with different surface flags, false otherwise.
Gets the string name used by UnrealHandleFlagsConfig.
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.
Constructs a new TerragenComputeTexCoordsConfig.
True if terran UV coordinates should be computed, false otherwise.
Gets the string name used by TerragenComputeTexCoordsConfig.
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.
Constructs a new ASEReconstructNormalsConfig.
True if normals should be re-computed, false otherwise.
Gets the string name used by ASEReconstructNormalsConfig.
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.
Constructs a new MD3HandleMultiPartConfig.
True if the split files should be loaded and combined, false otherwise.
Gets the string name used by MD3HandleMultiPartConfig.
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".
Constructs a new MD3SkinNameConfig.
The skin name.
Gets the string name used by MD3SkinNameConfig.
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.
Constructs a new MD3ShaderSourceConfig.
The shader file.
Gets the string name used by MD3ShaderSourceConfig.
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).
Constructs a new LWOImportOneLayerConfig.
True if only one layer should be imported, false if all layers should be imported.
Gets the string name used by LWOImportOneLayerConfig.
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.
Constructs a new MD5NoAnimationAutoLoadConfig.
True if animations should not be automatically loaded, false if they should be.
Gets the string name used by MD5NoAnimationAutoLoadConfig.
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)
Constructs a new LWSAnimationStartConfig.
Beginning of the time range
Gets the string name used by LWSAnimationStartConfig.
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.
Constructs a new LWSAnimationEndConfig.
Ending of the time range
Gets the string name used by LWSAnimationEndConfig.
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.
Constructs a new IRRAnimationFramerateConfig.
Number of frames per second to output.
Gets the string name used by IRRAnimationFrameRateConfig.
The Ogre importer will try to load this MaterialFile. If a material file does not
exist with the same name as a material to load, the ogre importer will try to load this file
and searches for the material in it. The default string value is an empty string.
Constructs a new OgreMaterialFileConfig.
Material file name to load.
Gets the string name used by OgreMaterialFileConfig.
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, texture names ending with _n, _l, _s are used as normal maps, light maps, or specular maps.
Constructs a new OgreTextureTypeFromFilenameConfig.
True if the filename defines texture usage, false otherwise.
Gets the string name used by OgreTextureTypeFromFilenameConfig.
Specifies whether the IFC loader skips over shape representations of type 'Curve2D'. A lot of files contain both a faceted mesh representation and a outline
with a presentation type of 'Curve2D'. Currently Assimp does not convert those, so turning this option off just clutters the log with errors.
Constructs a new IFCSkipCurveShapesConfig.
True if the Curve2D shapes are skipped during import, false otherwise.
Gets the string name used by IFCSkipCurveShapesConfig.
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.
Constructs a new IFCUseCustomTriangulationConfig..
True if the loader should use its own triangulation routine for walls/floors, false otherwise.
Gets the string name used by IFCUseCustomTriangulationConfig.
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.
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.
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.
Gets whether or not this IOSystem has been disposed.
Gets the number of currently opened streams.
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.
Defines a stream to some file input or output source. This object is responsible for reading/writing data
that is used by Assimp.
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).
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.
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.
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.
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|).
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.
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.
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.
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.
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
....
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
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.
Describes a file format which Assimp can export to.
Constructs a new ExportFormatDescription.
Unmanaged structure
Gets a short string ID to uniquely identify the export format. E.g. "dae" 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.
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.
Constructs a new instance of the class.
Constructs a new instance of the class.
Face indices
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Internal usage only for fast-interop - used to find where we need to patch up code and is removed after the patching process.
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.
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.
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})
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
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
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
A key-value pairing that represents some material property.
Constructs a new instance of the class.
Constructs a new instance of the class. Constructs a buffer property.
Name of the property
Property value
Constructs a new instance of the class. Constructs a float property.
Name of the property
Property value
Constructs a new instance of the class. Constructs an integer property.
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.
Name of the property
Property value
Constructs a new instance of the class. Creates a texture property.
Name of the property
Property value
Texture type
Texture index
Constructs a new instance of the class. Creates a float array property.
Name of the property
Property values
Constructs a new instance of the class. Creates a int array property.
Name of the property
Property values
Constructs a new instance of the class. Creates a Color3D property.
Name of the property
Property value
Constructs a new instance of the class. Creates a Color4D property.
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 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 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
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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.
Constructs a new instance of the class.
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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.
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.
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.
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 if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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 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.
Constructs a new instance of the class.
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
A collection of child nodes owned by a parent node. Manages access to the collection while maintaing parent-child linkage.
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.
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.
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.
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.
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.
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.
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.
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".
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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
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)
Two sided property (boolean)
Shading mode property (ShadingMode)
Enable wireframe property (boolean)
Blending function (BlendMode)
Opacity (float)
Bumpscaling (float)
Shininess (float)
Reflectivity (float)
Shininess strength (float)
Refracti (float)
Diffuse color (Color4D)
Ambient color (Color4D)
Specular color (Color4D)
Emissive color (Color4D)
Transparent color (Color4D)
Reflective color (Color4D)
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
Singleton that governs access to the unmanaged Assimp library functions.
Private Constructor
Loads the library using the default 32-bit or 64-bit DLL path, depending on the OS AssimpNet is running on.
Thrown if the library is already loaded or if there was an error in loading the library.
Loads the Assimp unmanaged library using the DLL path specified in LibraryPath. If the library is already loaded, or there was an error
in loading the library, an AssimpException is thrown.
Path to the Assimp DLL.
Thrown if the library is already loaded or if there was an error in loading the library.
Convienence method that gives the AssimpLibrary paths to both a 32-bit and 64-bit path, letting the runtime choose between the two depending on the
bitness of the process.
Path to the 32 bit Assimp DLL
Path to the 64 bit Assimp DLL
Frees the Assimp unmanaged library.
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.
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
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 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.
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
Event that is triggered when the assimp library is loaded.
Event that is triggered when the assimp library is -about to be freed-.
Gets the AssimpLibrary instance.
Gets the default path used for loading the 32-bit version of the unmanaged Assimp DLL.
Gets the default path used for loading the 64-bit version of the unmanaged Assimp DLL.
Gets the current path to the unmanaged Assimp DLL that is loaded.
Gets if the Assimp unmanaged library has been loaded or not.
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.
A special attribute for assimp function delegates that specifies the actual unmanaged C-function name. Generally the delegates
are named the same way as the actual function name, but this is for future proofing.
Defines all the unmanaged assimp C-function names.
Defines all of the delegates that represent the unmanaged assimp functions.
Specifies default paths for the unmanaged library for all platforms and handles the choosing of the correct implementation platform based on
the .NET runtime.
Base class for library implementations, handles loading of each unmanaged function delegate. Implementations handle the environment specific
tasks of loading the native library and getting function proc addresses.
Windows implementation for loading the unmanaged assimp library.
Linux implementation for loading the unmanaged assimp library.
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.
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.
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.
Constructs a new Light.
Unmanaged AiLight struct
Constructs a new instance of the class.
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.
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 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 if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
Callback delegate for Assimp's LogStream.
Log message
Supplied user data
Represents a log stream, which receives all log messages and streams them somewhere.
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.
Attaches the logstream to the library.
Detatches the logstream from the library.
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.
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.
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
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
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.
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
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
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.
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
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 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 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.
Struct type
Pointer to marshal
The marshaled structure
Convienence method for marshaling a pointer to a structure.
Struct type
Pointer to marshal
The marshaled structure
Computes the size of the struct type using Marshal SizeOf. Required for any struct that requires
marshaling by the runtime (e.g. has MarshalAs attributes).
Struct type
Size of the struct in bytes.
Computes the size of the struct array using Marshal SizeOf. Required for any struct that requires
marshaling by the runtime (e.g. has MarshalAs attributes).
Struct type
Array of structs
Total size, in bytes, of the array's contents.
Allocates a chunk of memory.
Size in bytes to allocate
Pointer to allocated memory
Frees a chunk of memory.
Pointer to memory
Frees an array of pointers.
Pointer to memory
Number of elements
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. Not safe if any fields have a MarshalAs attribute, use
instead.
Struct type
Size of the struct in bytes.
Computes the size of the struct array. Not safe if any fields have a MarshalAs attribute, use
instead.
Struct type
Array of structs
Total size, in bytes, of the array's contents.
Adds an offset to the pointer.
Pointer.
Offset
New pointer
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
Converts typed element array to a byte array.
Struct type
Element array
Byte array copy or null if the array was not valid.
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
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
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
A mesh represents geometry with a single material.
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
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.
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 if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
A node in the imported model hierarchy.
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
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.
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.
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
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.
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.
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.
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.
Gets if the native value type is blittable (that is, does not require marshaling by the runtime, e.g. has MarshalAs attributes).
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.
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.
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
Rotates a point by this quaternion.
Point to rotate
Quaternion representing the rotation
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.
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.
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
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 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
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. If a material file does not
exist with the same name as a material to load, the ogre importer will try to load this file
and searches for the material in it.
Type: string. Default: ""
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, texture names ending with _n, _l, _s are used as normal maps, light maps, or specular maps.
Type: Bool. Default: true.
Specifies whether the IFC loader skips over shape representations of type 'Curve2D'. A lot of files contain both a faceted mesh representation and a outline
with a presentation type of 'Curve2D'. Currently Assimp does not convert those, so turning this option off just clutters the log with errors.
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.
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).
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.
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.
aiColor*[Max_Value], array of arrays of vertex colors. Max_Value is a defined constant.
aiColor*[Max_Value], array of arrays of texture coordinates. Max_Value is a defined constant.
unsigned int[4], array of ints denoting the number of components for each set of texture coordinates - UV (2), UVW (3) for example.
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.
Represents an aiTexture struct.
Width of the texture.
Height of the texture.
sbyte[4], format extension hint. Fixed size char is two bytes regardless of encoding. Unmanaged assimp uses a char that
maps to one byte.
aiTexel*, array of texel data.
Sets the format hint.
Format hint - must be 3 characters or less
Gets the format hint.
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 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.
Represents an aiLight struct.
Name of the light.
Type of light.
Position of the light.
Direction of the spot/directional light.
Attenuation constant value.
Attenuation linear value.
Attenuation quadratic value.
Diffuse color.
Specular color.
Ambient color.
Spot light inner angle.
Spot light outer angle.
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.
AiString string data
Convienence method for setting the AiString string (and length).
String data to set
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*[4], replacement vertex colors.
aiVector3D*[4], replacement texture coordinates.
unsigned int, number of vertices.
Describes a file format which Assimp can export to.
char*, a short string ID to uniquely identify the export format. e.g. "dae" 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.
Represents a two-dimensional vector.
X component.
Y component
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
Tets 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.
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
Represents a three-dimensional vector.
X component.
Y component.
Z component.
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
Tets 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.
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
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.