2008-05-09 17:24:28 +00:00
|
|
|
|
/*
|
2008-05-22 10:20:31 +00:00
|
|
|
|
Open Asset Import Library (ASSIMP)
|
2008-05-09 17:24:28 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2006-2008, ASSIMP Development Team
|
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
|
|
Redistribution and use of this software in source and binary forms,
|
|
|
|
|
with or without modification, are permitted provided that the
|
|
|
|
|
following conditions are met:
|
|
|
|
|
|
|
|
|
|
* Redistributions of source code must retain the above
|
|
|
|
|
copyright notice, this list of conditions and the
|
|
|
|
|
following disclaimer.
|
|
|
|
|
|
|
|
|
|
* Redistributions in binary form must reproduce the above
|
|
|
|
|
copyright notice, this list of conditions and the
|
|
|
|
|
following disclaimer in the documentation and/or other
|
|
|
|
|
materials provided with the distribution.
|
|
|
|
|
|
|
|
|
|
* Neither the name of the ASSIMP team, nor the names of its
|
|
|
|
|
contributors may be used to endorse or promote products
|
|
|
|
|
derived from this software without specific prior
|
|
|
|
|
written permission of the ASSIMP Development Team.
|
|
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
|
|
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
|
|
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
|
|
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
|
|
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
|
|
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
|
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
2009-01-13 18:58:07 +00:00
|
|
|
|
/** @file aiPostProcess.h
|
|
|
|
|
* @brief Definitions for import post processing steps
|
|
|
|
|
*/
|
2008-05-05 12:36:31 +00:00
|
|
|
|
#ifndef AI_POSTPROCESS_H_INC
|
|
|
|
|
#define AI_POSTPROCESS_H_INC
|
|
|
|
|
|
2008-05-09 17:24:28 +00:00
|
|
|
|
#include "aiTypes.h"
|
|
|
|
|
|
2008-05-05 12:36:31 +00:00
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -----------------------------------------------------------------------------------
|
|
|
|
|
/** @enum aiPostProcessSteps
|
|
|
|
|
* @brief Defines the flags for all possible post processing steps.
|
|
|
|
|
*
|
|
|
|
|
* @see Importer::ReadFile
|
|
|
|
|
* @see aiImportFile
|
|
|
|
|
* @see aiImportFileEx
|
|
|
|
|
*/
|
|
|
|
|
// -----------------------------------------------------------------------------------
|
2008-05-05 12:36:31 +00:00
|
|
|
|
enum aiPostProcessSteps
|
|
|
|
|
{
|
2009-03-15 00:40:30 +00:00
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Calculates the tangents and bitangents for the imported meshes.
|
|
|
|
|
*
|
|
|
|
|
* 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 applied to the meshes. There's a config setting,
|
|
|
|
|
* <tt>#AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE</tt>, which allows you to specify
|
|
|
|
|
* a maximum smoothing angle for the algorithm. However, usually you'll
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* want to leave it at the default value. Thanks.
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*/
|
2009-03-15 00:40:30 +00:00
|
|
|
|
aiProcess_CalcTangentSpace = 0x1,
|
2008-05-05 12:36:31 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Identifies and joins identical vertex data sets within all
|
|
|
|
|
* imported meshes.
|
|
|
|
|
*
|
2008-05-05 12:36:31 +00:00
|
|
|
|
* After this step is run each mesh does contain only unique vertices anymore,
|
2009-01-13 18:58:07 +00:00
|
|
|
|
* so a vertex is possibly used by multiple faces. You usually want
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* to use this post processing step. If your application deals with
|
|
|
|
|
* indexed geometry, this step is compulsory or you'll just waste rendering
|
|
|
|
|
* time. <b>If this flag is not specified</b>, no vertices are referenced by
|
|
|
|
|
* more than one face and <b>no index buffer is required</b> for rendering.
|
|
|
|
|
*/
|
|
|
|
|
aiProcess_JoinIdenticalVertices = 0x2,
|
2008-05-05 12:36:31 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Converts all the imported data to a left-handed coordinate space.
|
|
|
|
|
*
|
|
|
|
|
* By default the data is returned in a right-handed coordinate space which
|
|
|
|
|
* for example OpenGL prefers. In this space, +X points to the right,
|
|
|
|
|
* +Z points towards the viewer and and +Y points upwards. In the DirectX
|
2008-05-22 22:47:20 +00:00
|
|
|
|
* coordinate space +X points to the right, +Y points upwards and +Z points
|
|
|
|
|
* away from the viewer.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
*
|
|
|
|
|
* You'll probably want to consider this flag if you use Direct3D for
|
|
|
|
|
* rendering. The #aiProcess_ConvertToLeftHanded flag supersedes this
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* setting and bundles all conversions typically required for D3D-based
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* applications.
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*/
|
2009-03-15 00:40:30 +00:00
|
|
|
|
aiProcess_MakeLeftHanded = 0x4,
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Triangulates all faces of all meshes.
|
|
|
|
|
*
|
|
|
|
|
* By default the imported mesh data might contain faces with more than 3
|
|
|
|
|
* 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
|
|
|
|
|
* solution:
|
|
|
|
|
* <ul>
|
|
|
|
|
* <li>Specify both #aiProcess_Triangulate and #aiProcess_SortByPType </li>
|
|
|
|
|
* </li>Ignore all point and line meshes when you process assimp's output</li>
|
|
|
|
|
* </ul>
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*/
|
2009-03-15 00:40:30 +00:00
|
|
|
|
aiProcess_Triangulate = 0x8,
|
2008-05-05 12:36:31 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>Removes some parts of the data structure (animations, materials,
|
2008-10-13 16:45:48 +00:00
|
|
|
|
* light sources, cameras, textures, vertex components).
|
2008-10-02 15:22:38 +00:00
|
|
|
|
*
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* The components to be removed are specified in a separate
|
|
|
|
|
* configuration option, <tt>#AI_CONFIG_PP_RVC_FLAGS</tt>. 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.
|
|
|
|
|
*
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* This flag is a poor one, mainly because its purpose is usually
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* misunderstood. Consider the following case: a 3d model has been exported
|
|
|
|
|
* from a CAD app, it has per-face vertex colors. Vertex positions can't be
|
|
|
|
|
* shared, thus the #aiProcess_JoinIdenticalVertices step fails to
|
|
|
|
|
* optimize the data. Just because these nasty, little vertex colors.
|
|
|
|
|
* Most apps don't even process them, so it's all for nothing. By using
|
|
|
|
|
* this step, unneeded components are excluded as early as possible
|
|
|
|
|
* thus opening more room for internal optimzations.
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*/
|
2008-10-13 16:45:48 +00:00
|
|
|
|
aiProcess_RemoveComponent = 0x10,
|
2008-05-05 12:36:31 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Generates normals for all faces of all meshes.
|
|
|
|
|
*
|
|
|
|
|
* 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, enforces the library to duplicate vertices in some cases.
|
|
|
|
|
* #aiProcess_JoinIdenticalVertices is *senseless* then.
|
|
|
|
|
*
|
|
|
|
|
* This flag may not be specified together with #aiProcess_GenSmoothNormals.
|
|
|
|
|
*/
|
2008-05-05 12:36:31 +00:00
|
|
|
|
aiProcess_GenNormals = 0x20,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Generates smooth normals for all vertices in the mesh.
|
|
|
|
|
*
|
|
|
|
|
* 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.
|
|
|
|
|
*
|
|
|
|
|
* This flag may (of course) not be specified together with
|
|
|
|
|
* #aiProcess_GenNormals. There's a configuration option,
|
|
|
|
|
* <tt>#AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE</tt> which allows you to specify
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* an angle maximum for the normal smoothing algorithm. Normals exceeding
|
|
|
|
|
* this limit are not smoothed, resulting in a a 'hard' seam between two faces.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* Using a decent angle here (e.g. 80<EFBFBD>) results in very good visual
|
|
|
|
|
* appearance.
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*/
|
|
|
|
|
aiProcess_GenSmoothNormals = 0x40,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Splits large meshes into smaller submeshes
|
|
|
|
|
*
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* This is quite useful for realtime rendering where the number of triangles
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* 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 vertex limit for a single mesh.
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* The split limits can (and should!) be set through the
|
|
|
|
|
* <tt>#AI_CONFIG_PP_SLM_VERTEX_LIMIT</tt> and <tt>#AI_CONFIG_PP_SLM_TRIANGLE_LIMIT</tt>
|
|
|
|
|
* settings. The default values are <tt>#AI_SLM_DEFAULT_MAX_VERTICES</tt> and
|
|
|
|
|
* <tt>#AI_SLM_DEFAULT_MAX_TRIANGLES</tt>.
|
|
|
|
|
*
|
|
|
|
|
* Note that splitting is generally a time-consuming task, but not if there's
|
|
|
|
|
* nothing to split. The use of this step is recommended for most users.
|
2008-05-05 12:36:31 +00:00
|
|
|
|
*/
|
2008-05-30 23:01:25 +00:00
|
|
|
|
aiProcess_SplitLargeMeshes = 0x80,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>Removes the node graph and pre-transforms all vertices with
|
2008-05-30 23:01:25 +00:00
|
|
|
|
* the local transformation matrices of their nodes. The output
|
|
|
|
|
* scene does still contain nodes, however, there is only a
|
2009-01-13 18:58:07 +00:00
|
|
|
|
* root node with children, each one referencing only one mesh,
|
2008-05-30 23:01:25 +00:00
|
|
|
|
* 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.
|
2009-09-30 17:55:21 +00:00
|
|
|
|
* Animations are removed during this step.
|
|
|
|
|
* This step is intended for applications without a scenegraph.
|
2008-05-30 23:01:25 +00:00
|
|
|
|
* The step CAN cause some problems: if e.g. a mesh of the asset
|
|
|
|
|
* contains normals and another, using the same material index, does not,
|
|
|
|
|
* they will be brought together, but the first meshes's part of
|
2009-09-30 17:55:21 +00:00
|
|
|
|
* the normal list is zeroed. However, these artifacts are rare.
|
|
|
|
|
* @note The <tt>#AI_CONFIG_PP_PTV_NORMALIZE</tt> configuration property
|
|
|
|
|
* can be set to normalize the scene's spatial dimension to the -1...1
|
|
|
|
|
* range.
|
2008-05-30 23:01:25 +00:00
|
|
|
|
*/
|
|
|
|
|
aiProcess_PreTransformVertices = 0x100,
|
2008-06-07 23:21:36 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>Limits the number of bones simultaneously affecting a single vertex
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* 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
|
|
|
|
|
* renormalized so that the weights still sum up to 1.
|
|
|
|
|
* The default bone weight limit is 4 (defined as <tt>#AI_LMW_MAX_WEIGHTS</tt> in
|
|
|
|
|
* aiConfig.h), but you can use the <tt>#AI_CONFIG_PP_LBW_MAX_WEIGHTS</tt> setting to
|
|
|
|
|
* supply your own limit to the post processing step.
|
|
|
|
|
*
|
|
|
|
|
* If you intend to perform the skinning in hardware, this post processing
|
|
|
|
|
* step might be of interest for you.
|
2008-06-07 23:21:36 +00:00
|
|
|
|
*/
|
2008-06-15 10:27:08 +00:00
|
|
|
|
aiProcess_LimitBoneWeights = 0x200,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Validates the imported scene data structure
|
2008-06-15 10:27:08 +00:00
|
|
|
|
* This makes sure that all indices are valid, all animations and
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* 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 ot what's actually wrong if a file fails the
|
|
|
|
|
* validation. The validator is quite rude and will find *all*
|
|
|
|
|
* inconsistencies in the data structure ... plugin developers are
|
|
|
|
|
* recommended to use it to debug their loaders. There are two types of
|
|
|
|
|
* validation failures:
|
|
|
|
|
* <ul>
|
|
|
|
|
* <li>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. #Importer::GetErrorString() or #aiGetErrorString()
|
|
|
|
|
* carry the error message around.</li>
|
|
|
|
|
* <li>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, <tt>#AI_SCENE_FLAGS_VALIDATION_WARNING</tt> is set
|
|
|
|
|
* in #aiScene::mFlags</li>
|
|
|
|
|
* </ul>
|
|
|
|
|
*
|
|
|
|
|
* This post-processing step is not time-consuming. It's use is not
|
|
|
|
|
* compulsory, but recommended.
|
2008-06-15 10:27:08 +00:00
|
|
|
|
*/
|
2008-07-22 22:52:16 +00:00
|
|
|
|
aiProcess_ValidateDataStructure = 0x400,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Reorders triangles for better vertex cache locality.
|
|
|
|
|
*
|
2008-07-22 22:52:16 +00:00
|
|
|
|
* The step tries to improve the ACMR (average post-transform vertex cache
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* miss ratio) for all meshes. The implementation runs in O(n) and is
|
|
|
|
|
* roughly based on the 'tipsify' algorithm (see <a href="
|
|
|
|
|
* http://www.cs.princeton.edu/gfx/pubs/Sander_2007_%3ETR/tipsy.pdf">this
|
|
|
|
|
* paper</a>).
|
|
|
|
|
*
|
|
|
|
|
* If you intend to render huge models in hardware, this step might
|
|
|
|
|
* be of interest for you. The <tt>#AI_CONFIG_PP_ICL_PTCACHE_SIZE</tt>config
|
|
|
|
|
* setting can be used to fine-tune the cache optimization.
|
2008-07-22 22:52:16 +00:00
|
|
|
|
*/
|
2008-07-30 23:00:25 +00:00
|
|
|
|
aiProcess_ImproveCacheLocality = 0x800,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>Searches for redundant/unreferenced materials and removes them.
|
2008-07-30 23:00:25 +00:00
|
|
|
|
*
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* This is especially useful in combination with the
|
|
|
|
|
* #aiProcess_PretransformVertices and #aiProcess_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 filters,
|
|
|
|
|
* (and because many exporters don't check for redundant materials), huge
|
|
|
|
|
* models often have materials which are 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
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* content pipeline (probably using *magic* material names), don't
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* specify this flag. Alternatively take a look at the
|
|
|
|
|
* <tt>#AI_CONFIG_PP_RRM_EXCLUDE_LIST</tt> setting.
|
|
|
|
|
*/
|
2008-07-30 23:00:25 +00:00
|
|
|
|
aiProcess_RemoveRedundantMaterials = 0x1000,
|
2008-08-08 15:18:28 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>This step tries to determine which meshes have normal vectors
|
2008-08-08 15:18:28 +00:00
|
|
|
|
* that are facing inwards. The algorithm is simple but effective:
|
|
|
|
|
* the bounding box of all vertices + their normals is 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
|
2008-08-28 17:35:36 +00:00
|
|
|
|
* surfaces. However, the step tries to filter such cases.
|
2009-01-13 18:58:07 +00:00
|
|
|
|
* The step inverts all in-facing normals. Generally it is recommended
|
2008-08-28 17:35:36 +00:00
|
|
|
|
* to enable this step, although the result is not always correct.
|
2008-08-08 15:18:28 +00:00
|
|
|
|
*/
|
2008-08-28 17:35:36 +00:00
|
|
|
|
aiProcess_FixInfacingNormals = 0x2000,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>This step splits meshes with more than one primitive type in
|
2009-01-13 18:58:07 +00:00
|
|
|
|
* homogeneous submeshes.
|
2008-09-30 20:20:56 +00:00
|
|
|
|
*
|
|
|
|
|
* The step is executed after the triangulation step. After the step
|
|
|
|
|
* 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.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* You can use the <tt>#AI_CONFIG_PP_SBP_REMOVE</tt> option to specify which
|
2008-10-27 00:36:26 +00:00
|
|
|
|
* primitive types you need. This can be used to easily exclude
|
|
|
|
|
* lines and points, which are rarely used, from the import.
|
2008-09-30 20:20:56 +00:00
|
|
|
|
*/
|
2008-10-22 20:06:16 +00:00
|
|
|
|
aiProcess_SortByPType = 0x8000,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>This step searches all meshes for degenerated primitives and
|
2008-10-22 20:06:16 +00:00
|
|
|
|
* converts them to proper lines or points.
|
|
|
|
|
*
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* A face is 'degenerated' if one or more of its points are identical.
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* To have the degenerated stuff not only detected and collapsed but
|
|
|
|
|
* also removed, try one of the following procedures:
|
|
|
|
|
* <br><b>1.</b> (if you support lines&points for rendering but don't
|
|
|
|
|
* want the degenerates)</br>
|
|
|
|
|
* <ul>
|
|
|
|
|
* <li>Specify the #aiProcess_FindDegenerates flag.
|
|
|
|
|
* </li>
|
|
|
|
|
* <li>Set the <tt>AI_CONFIG_PP_FD_REMOVE</tt> option to 1. This will
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* cause the step to remove degenerated triangles from the import
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* as soon as they're detected. They won't pass any further
|
|
|
|
|
* pipeline steps.
|
|
|
|
|
* </li>
|
|
|
|
|
* </ul>
|
|
|
|
|
* <br><b>2.</b>(if you don't support lines&points at all ...)</br>
|
2009-02-06 22:43:08 +00:00
|
|
|
|
* <ul>
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* <li>Specify the #aiProcess_FindDegenerates flag.
|
2009-02-06 22:43:08 +00:00
|
|
|
|
* </li>
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* <li>Specify the #aiProcess_SortByPType flag. This moves line and
|
|
|
|
|
* point primitives to separate meshes.
|
2009-02-06 22:43:08 +00:00
|
|
|
|
* </li>
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* <li>Set the <tt>AI_CONFIG_PP_SBP_REMOVE</tt> option to
|
|
|
|
|
* @code aiPrimitiveType_POINTS | aiPrimitiveType_LINES
|
|
|
|
|
* @endcode to cause SortByPType to reject point
|
2009-02-06 22:43:08 +00:00
|
|
|
|
* and line meshes from the scene.
|
|
|
|
|
* </li>
|
|
|
|
|
* </ul>
|
2009-02-07 11:23:22 +00:00
|
|
|
|
* @note Degenerated polygons are not necessarily evil and that's why
|
|
|
|
|
* they're not removed by default. There are several file formats which
|
|
|
|
|
* don't support lines or points ... some exporters bypass the
|
|
|
|
|
* format specification and write them as degenerated triangle instead.
|
2008-10-22 20:06:16 +00:00
|
|
|
|
*/
|
|
|
|
|
aiProcess_FindDegenerates = 0x10000,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>This step searches all meshes for invalid data, such as zeroed
|
2009-09-21 17:41:57 +00:00
|
|
|
|
* normal vectors or invalid UV coords and removes/fixes them. This is
|
|
|
|
|
* intended to get rid of some common exporter errors.
|
2008-10-22 20:06:16 +00:00
|
|
|
|
*
|
|
|
|
|
* This is especially useful for normals. If they are invalid, and
|
|
|
|
|
* the step recognizes this, they will be removed and can later
|
2009-09-21 17:41:57 +00:00
|
|
|
|
* be recomputed, i.e. by the #aiProcess_GenSmoothNormals flag.<br>
|
|
|
|
|
* The step will also remove meshes that are infinitely small and reduce
|
|
|
|
|
* animation tracks consisting of hundreds if redundant keys to a single
|
|
|
|
|
* key. The <tt>AI_CONFIG_PP_FID_ANIM_ACCURACY</tt> config property decides
|
|
|
|
|
* the accuracy of the check for duplicate animation tracks.
|
2008-10-22 20:06:16 +00:00
|
|
|
|
*/
|
|
|
|
|
aiProcess_FindInvalidData = 0x20000,
|
2008-11-16 21:56:45 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>This step converts non-UV mappings (such as spherical or
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* cylindrical mapping) to proper texture coordinate channels.
|
2008-11-16 21:56:45 +00:00
|
|
|
|
*
|
|
|
|
|
* Most applications will support UV mapping only, so you will
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* probably want to specify this step in every case. Note tha 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, maja, blender,
|
|
|
|
|
* lightwave, modo, ... are able to achieve this.
|
|
|
|
|
*
|
|
|
|
|
* @note If this step is not requested, you'll need to process the
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* <tt>#AI_MATKEY_MAPPING</tt> material property in order to display all assets
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* properly.
|
|
|
|
|
*/
|
2008-11-16 21:56:45 +00:00
|
|
|
|
aiProcess_GenUVCoords = 0x40000,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>This step applies per-texture UV transformations and bakes
|
|
|
|
|
* them to stand-alone vtexture coordinate channelss.
|
|
|
|
|
*
|
|
|
|
|
* UV transformations are specified per-texture - see the
|
|
|
|
|
* <tt>#AI_MATKEY_UVTRANSFORM</tt> material key for more information.
|
|
|
|
|
* This step processes all textures with
|
|
|
|
|
* transformed input UV coordinates and generates new (pretransformed) UV channel
|
|
|
|
|
* which replace the old channel. Most applications won't support UV
|
|
|
|
|
* transformations, so you will probably want to specify this step.
|
|
|
|
|
*
|
|
|
|
|
* @note UV transformations are usually implemented in realtime apps by
|
|
|
|
|
* transforming texture coordinates at vertex shader stage with a 3x3
|
|
|
|
|
* (homogenous) transformation matrix.
|
2009-02-02 20:29:27 +00:00
|
|
|
|
*/
|
|
|
|
|
aiProcess_TransformUVCoords = 0x80000,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
2009-02-07 11:23:22 +00:00
|
|
|
|
/** <hr>This step searches for duplicate meshes and replaces duplicates
|
2009-02-02 20:29:27 +00:00
|
|
|
|
* with references to the first mesh.
|
|
|
|
|
*
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* This step takes a while, don't use it if you have no time.
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* Its main purpose is to workaround the limitation that many export
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* file formats don't support instanced meshes, so exporters need to
|
|
|
|
|
* duplicate meshes. This step removes the duplicates again. Please
|
|
|
|
|
* note that Assimp does currently not support per-node material
|
|
|
|
|
* assignment to meshes, which means that identical meshes with
|
|
|
|
|
* differnent materials are currently *not* joined, although this is
|
|
|
|
|
* planned for future versions.
|
|
|
|
|
*/
|
|
|
|
|
aiProcess_FindInstances = 0x100000,
|
|
|
|
|
|
2009-04-24 20:53:24 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>A postprocessing step to reduce the number of meshes.
|
|
|
|
|
*
|
|
|
|
|
* In fact, it will reduce the number of drawcalls.
|
|
|
|
|
*
|
|
|
|
|
* This is a very effective optimization and is recommended to be used
|
|
|
|
|
* together with #aiProcess_OptimizeGraph, if possible. The flag is fully
|
|
|
|
|
* compatible with both #aiProcess_SplitLargeMeshes and #aiProcess_SortByPType.
|
|
|
|
|
*/
|
|
|
|
|
aiProcess_OptimizeMeshes = 0x200000,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>A postprocessing step to optimize the scene hierarchy.
|
|
|
|
|
*
|
|
|
|
|
* Nodes with no animations, bones, lights or cameras assigned are
|
|
|
|
|
* collapsed and joined.
|
|
|
|
|
*
|
|
|
|
|
* Node names can be lost during this step. If you use special 'tag nodes'
|
|
|
|
|
* to pass additional information through your content pipeline, use the
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* <tt>#AI_CONFIG_PP_OG_EXCLUDE_LIST</tt> setting to specify a list of node
|
2009-04-24 20:53:24 +00:00
|
|
|
|
* names you want to be kept. Nodes matching one of the names in this list won't
|
|
|
|
|
* be touched or modified.
|
|
|
|
|
*
|
|
|
|
|
* 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 #aiProcess_OptimizeMeshes for best
|
|
|
|
|
* results.
|
|
|
|
|
*
|
|
|
|
|
* @note 'crappy' scenes with thousands of extremely small meshes packed
|
|
|
|
|
* in deeply nested nodes exist for almost all file formats.
|
|
|
|
|
* #aiProcess_OptimizeMeshes in combination with #aiProcess_OptimizeGraph
|
|
|
|
|
* usually fixes them all and makes them renderable.
|
|
|
|
|
*/
|
|
|
|
|
aiProcess_OptimizeGraph = 0x400000,
|
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
|
/** <hr>This step flips all UV coordinates along the y-axis and adjusts
|
|
|
|
|
* material settings and bitangents accordingly.
|
|
|
|
|
* <br><b>Output UV coordinate system:</b>
|
|
|
|
|
* @code
|
|
|
|
|
* 0y|0y ---------- 1x|0y
|
|
|
|
|
* | |
|
|
|
|
|
* | |
|
|
|
|
|
* | |
|
|
|
|
|
* 0x|1y ---------- 1x|1y
|
|
|
|
|
* @endcode
|
|
|
|
|
*
|
|
|
|
|
* You'll probably want to consider this flag if you use Direct3D for
|
|
|
|
|
* rendering. The #aiProcess_ConvertToLeftHanded flag supersedes this
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* setting and bundles all conversions typically required for D3D-based
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* applications.
|
|
|
|
|
*/
|
2009-04-24 20:53:24 +00:00
|
|
|
|
aiProcess_FlipUVs = 0x800000,
|
2009-03-15 00:40:30 +00:00
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
2009-04-02 15:16:01 +00:00
|
|
|
|
/** <hr>This step adjusts the output face winding order to be cw.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
*
|
2009-04-02 15:16:01 +00:00
|
|
|
|
* The default face winding order is counter clockwise.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* <br><b>Output face order:</b>
|
|
|
|
|
* @code
|
2009-04-02 15:16:01 +00:00
|
|
|
|
* x2
|
2009-03-15 00:40:30 +00:00
|
|
|
|
*
|
2009-03-18 22:01:11 +00:00
|
|
|
|
* x0
|
2009-04-02 15:16:01 +00:00
|
|
|
|
* x1
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* @endcode
|
2008-11-16 21:56:45 +00:00
|
|
|
|
*/
|
2009-04-24 20:53:24 +00:00
|
|
|
|
aiProcess_FlipWindingOrder = 0x1000000
|
2009-02-06 22:43:08 +00:00
|
|
|
|
|
|
|
|
|
// aiProcess_GenEntityMeshes = 0x100000,
|
|
|
|
|
// aiProcess_OptimizeAnimations = 0x200000
|
2009-04-24 20:53:24 +00:00
|
|
|
|
// aiProcess_FixTexturePaths = 0x200000
|
2008-05-05 12:36:31 +00:00
|
|
|
|
};
|
|
|
|
|
|
2008-05-09 17:24:28 +00:00
|
|
|
|
|
2009-03-15 00:40:30 +00:00
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
|
/** @def aiProcess_ConvertToLeftHanded
|
|
|
|
|
* @brief Shortcut flag for Direct3D-based applications.
|
|
|
|
|
*
|
2009-03-18 22:01:11 +00:00
|
|
|
|
* Supersedes the #aiProcess_MakeLeftHanded and #aiProcess_FlipUVs and
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* #aiProcess_FlipWindingOrder flags.
|
2009-03-18 22:01:11 +00:00
|
|
|
|
* The output data matches Direct3D's conventions: left-handed geometry, upper-left
|
|
|
|
|
* origin for UV coordinates and finally clockwise face order, suitable for CCW culling.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
*
|
|
|
|
|
* @deprecated
|
|
|
|
|
*/
|
|
|
|
|
#define aiProcess_ConvertToLeftHanded ( \
|
|
|
|
|
aiProcess_MakeLeftHanded | \
|
|
|
|
|
aiProcess_FlipUVs | \
|
2009-04-02 15:16:01 +00:00
|
|
|
|
aiProcess_FlipWindingOrder | \
|
2009-03-15 00:40:30 +00:00
|
|
|
|
0 )
|
|
|
|
|
|
|
|
|
|
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
|
/** @def aiProcessPreset_TargetRealtimeUse_Fast
|
|
|
|
|
* @brief Default postprocess configuration optimizing the data for real-time rendering.
|
2008-08-28 17:35:36 +00:00
|
|
|
|
*
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
* Applications would want to use this preset to load models on end-user PCs,
|
|
|
|
|
* maybe for direct use in game.
|
|
|
|
|
*
|
|
|
|
|
* If you're using DirectX, don't forget to combine this value with
|
|
|
|
|
* the #aiProcess_ConvertToLeftHanded step. If you don't support UV transformations
|
|
|
|
|
* in your application apply the #aiProcess_TransformUVCoords step, too.
|
|
|
|
|
* @note Please take the time to read the doc to the steps enabled by this preset.
|
|
|
|
|
* Some of them offer further configurable properties, some of them might not be of
|
|
|
|
|
* use for you so it might be better to not specify them.
|
2008-08-28 17:35:36 +00:00
|
|
|
|
*/
|
2009-03-15 00:40:30 +00:00
|
|
|
|
#define aiProcessPreset_TargetRealtime_Fast ( \
|
2008-08-28 17:35:36 +00:00
|
|
|
|
aiProcess_CalcTangentSpace | \
|
|
|
|
|
aiProcess_GenNormals | \
|
|
|
|
|
aiProcess_JoinIdenticalVertices | \
|
2008-11-16 21:56:45 +00:00
|
|
|
|
aiProcess_Triangulate | \
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
aiProcess_GenUVCoords | \
|
|
|
|
|
aiProcess_SortByPType | \
|
2009-03-15 00:40:30 +00:00
|
|
|
|
0 )
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
|
/** @def aiProcessPreset_TargetRealtime_Quality
|
|
|
|
|
* @brief Default postprocess configuration optimizing the data for real-time rendering.
|
|
|
|
|
*
|
|
|
|
|
* Unlike #aiProcessPreset_TargetRealtime_Fast, this configuration
|
|
|
|
|
* performs some extra optimizations to improve rendering speed and
|
|
|
|
|
* to minimize memory usage. It could be a good choice for a level editor
|
|
|
|
|
* environment where import speed is not so important.
|
|
|
|
|
*
|
|
|
|
|
* If you're using DirectX, don't forget to combine this value with
|
|
|
|
|
* the #aiProcess_ConvertToLeftHanded step. If you don't support UV transformations
|
|
|
|
|
* in your application apply the #aiProcess_TransformUVCoords step, too.
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* @note Please take the time to read the doc for the steps enabled by this preset.
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
* Some of them offer further configurable properties, some of them might not be of
|
|
|
|
|
* use for you so it might be better to not specify them.
|
|
|
|
|
*/
|
2009-03-15 00:40:30 +00:00
|
|
|
|
#define aiProcessPreset_TargetRealtime_Quality ( \
|
2008-08-28 17:35:36 +00:00
|
|
|
|
aiProcess_CalcTangentSpace | \
|
|
|
|
|
aiProcess_GenSmoothNormals | \
|
|
|
|
|
aiProcess_JoinIdenticalVertices | \
|
|
|
|
|
aiProcess_ImproveCacheLocality | \
|
|
|
|
|
aiProcess_LimitBoneWeights | \
|
|
|
|
|
aiProcess_RemoveRedundantMaterials | \
|
|
|
|
|
aiProcess_SplitLargeMeshes | \
|
2008-11-16 21:56:45 +00:00
|
|
|
|
aiProcess_Triangulate | \
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
aiProcess_GenUVCoords | \
|
|
|
|
|
aiProcess_SortByPType | \
|
|
|
|
|
aiProcess_FindDegenerates | \
|
|
|
|
|
aiProcess_FindInvalidData | \
|
2009-03-15 00:40:30 +00:00
|
|
|
|
0 )
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
|
/** @def aiProcessPreset_TargetRealtime_MaxQuality
|
|
|
|
|
* @brief Default postprocess configuration optimizing the data for real-time rendering.
|
|
|
|
|
*
|
|
|
|
|
* This preset enables almost every optimization step to achieve perfectly
|
|
|
|
|
* optimized data. It's your choice for level editor environments where import speed
|
2009-07-31 22:34:21 +00:00
|
|
|
|
* is not important.
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
*
|
|
|
|
|
* If you're using DirectX, don't forget to combine this value with
|
|
|
|
|
* the #aiProcess_ConvertToLeftHanded step. If you don't support UV transformations
|
2009-03-15 00:40:30 +00:00
|
|
|
|
* in your application, apply the #aiProcess_TransformUVCoords step, too.
|
|
|
|
|
* @note Please take the time to read the doc for the steps enabled by this preset.
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
* Some of them offer further configurable properties, some of them might not be of
|
|
|
|
|
* use for you so it might be better to not specify them.
|
|
|
|
|
*/
|
2009-03-15 00:40:30 +00:00
|
|
|
|
#define aiProcessPreset_TargetRealtime_MaxQuality ( \
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
|
aiProcessPreset_TargetRealtime_Quality | \
|
|
|
|
|
aiProcess_FindInstances | \
|
|
|
|
|
aiProcess_ValidateDataStructure | \
|
2009-04-24 20:53:24 +00:00
|
|
|
|
aiProcess_OptimizeMeshes | \
|
2009-03-15 00:40:30 +00:00
|
|
|
|
0 )
|
2008-08-28 17:35:36 +00:00
|
|
|
|
|
|
|
|
|
|
2008-05-05 12:36:31 +00:00
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
} // end of extern "C"
|
|
|
|
|
#endif
|
|
|
|
|
|
2008-05-20 17:38:10 +00:00
|
|
|
|
#endif // AI_POSTPROCESS_H_INC
|