miniassimp

annotate include/miniassimp/config.h @ 0:879c81d94345

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 28 Jan 2019 18:19:26 +0200
parents
children
rev   line source
nuclear@0 1 /*
nuclear@0 2 ---------------------------------------------------------------------------
nuclear@0 3 Open Asset Import Library (assimp)
nuclear@0 4 ---------------------------------------------------------------------------
nuclear@0 5
nuclear@0 6 Copyright (c) 2006-2018, assimp team
nuclear@0 7
nuclear@0 8
nuclear@0 9 All rights reserved.
nuclear@0 10
nuclear@0 11 Redistribution and use of this software in source and binary forms,
nuclear@0 12 with or without modification, are permitted provided that the following
nuclear@0 13 conditions are met:
nuclear@0 14
nuclear@0 15 * Redistributions of source code must retain the above
nuclear@0 16 copyright notice, this list of conditions and the
nuclear@0 17 following disclaimer.
nuclear@0 18
nuclear@0 19 * Redistributions in binary form must reproduce the above
nuclear@0 20 copyright notice, this list of conditions and the
nuclear@0 21 following disclaimer in the documentation and/or other
nuclear@0 22 materials provided with the distribution.
nuclear@0 23
nuclear@0 24 * Neither the name of the assimp team, nor the names of its
nuclear@0 25 contributors may be used to endorse or promote products
nuclear@0 26 derived from this software without specific prior
nuclear@0 27 written permission of the assimp team.
nuclear@0 28
nuclear@0 29 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
nuclear@0 30 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
nuclear@0 31 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
nuclear@0 32 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
nuclear@0 33 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
nuclear@0 34 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
nuclear@0 35 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
nuclear@0 36 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
nuclear@0 37 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
nuclear@0 38 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nuclear@0 39 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nuclear@0 40 ---------------------------------------------------------------------------
nuclear@0 41 */
nuclear@0 42
nuclear@0 43 /** @file config.h
nuclear@0 44 * @brief Defines constants for configurable properties for the library
nuclear@0 45 *
nuclear@0 46 * Typically these properties are set via
nuclear@0 47 * #Assimp::Importer::SetPropertyFloat,
nuclear@0 48 * #Assimp::Importer::SetPropertyInteger or
nuclear@0 49 * #Assimp::Importer::SetPropertyString,
nuclear@0 50 * depending on the data type of a property. All properties have a
nuclear@0 51 * default value. See the doc for the mentioned methods for more details.
nuclear@0 52 *
nuclear@0 53 * <br><br>
nuclear@0 54 * The corresponding functions for use with the plain-c API are:
nuclear@0 55 * #aiSetImportPropertyInteger,
nuclear@0 56 * #aiSetImportPropertyFloat,
nuclear@0 57 * #aiSetImportPropertyString
nuclear@0 58 */
nuclear@0 59 #pragma once
nuclear@0 60 #ifndef AI_CONFIG_H_INC
nuclear@0 61 #define AI_CONFIG_H_INC
nuclear@0 62
nuclear@0 63
nuclear@0 64 // ###########################################################################
nuclear@0 65 // LIBRARY SETTINGS
nuclear@0 66 // General, global settings
nuclear@0 67 // ###########################################################################
nuclear@0 68
nuclear@0 69 // ---------------------------------------------------------------------------
nuclear@0 70 /** @brief Enables time measurements.
nuclear@0 71 *
nuclear@0 72 * If enabled, measures the time needed for each part of the loading
nuclear@0 73 * process (i.e. IO time, importing, postprocessing, ..) and dumps
nuclear@0 74 * these timings to the DefaultLogger. See the @link perf Performance
nuclear@0 75 * Page@endlink for more information on this topic.
nuclear@0 76 *
nuclear@0 77 * Property type: bool. Default value: false.
nuclear@0 78 */
nuclear@0 79 #define AI_CONFIG_GLOB_MEASURE_TIME \
nuclear@0 80 "GLOB_MEASURE_TIME"
nuclear@0 81
nuclear@0 82
nuclear@0 83 // ---------------------------------------------------------------------------
nuclear@0 84 /** @brief Global setting to disable generation of skeleton dummy meshes
nuclear@0 85 *
nuclear@0 86 * Skeleton dummy meshes are generated as a visualization aid in cases which
nuclear@0 87 * the input data contains no geometry, but only animation data.
nuclear@0 88 * Property data type: bool. Default value: false
nuclear@0 89 */
nuclear@0 90 // ---------------------------------------------------------------------------
nuclear@0 91 #define AI_CONFIG_IMPORT_NO_SKELETON_MESHES \
nuclear@0 92 "IMPORT_NO_SKELETON_MESHES"
nuclear@0 93
nuclear@0 94
nuclear@0 95
nuclear@0 96 # if 0 // not implemented yet
nuclear@0 97 // ---------------------------------------------------------------------------
nuclear@0 98 /** @brief Set Assimp's multithreading policy.
nuclear@0 99 *
nuclear@0 100 * This setting is ignored if Assimp was built without boost.thread
nuclear@0 101 * support (ASSIMP_BUILD_NO_THREADING, which is implied by ASSIMP_BUILD_BOOST_WORKAROUND).
nuclear@0 102 * Possible values are: -1 to let Assimp decide what to do, 0 to disable
nuclear@0 103 * multithreading entirely and any number larger than 0 to force a specific
nuclear@0 104 * number of threads. Assimp is always free to ignore this settings, which is
nuclear@0 105 * merely a hint. Usually, the default value (-1) will be fine. However, if
nuclear@0 106 * Assimp is used concurrently from multiple user threads, it might be useful
nuclear@0 107 * to limit each Importer instance to a specific number of cores.
nuclear@0 108 *
nuclear@0 109 * For more information, see the @link threading Threading page@endlink.
nuclear@0 110 * Property type: int, default value: -1.
nuclear@0 111 */
nuclear@0 112 #define AI_CONFIG_GLOB_MULTITHREADING \
nuclear@0 113 "GLOB_MULTITHREADING"
nuclear@0 114 #endif
nuclear@0 115
nuclear@0 116 // ###########################################################################
nuclear@0 117 // POST PROCESSING SETTINGS
nuclear@0 118 // Various stuff to fine-tune the behavior of a specific post processing step.
nuclear@0 119 // ###########################################################################
nuclear@0 120
nuclear@0 121
nuclear@0 122 // ---------------------------------------------------------------------------
nuclear@0 123 /** @brief Maximum bone count per mesh for the SplitbyBoneCount step.
nuclear@0 124 *
nuclear@0 125 * Meshes are split until the maximum number of bones is reached. The default
nuclear@0 126 * value is AI_SBBC_DEFAULT_MAX_BONES, which may be altered at
nuclear@0 127 * compile-time.
nuclear@0 128 * Property data type: integer.
nuclear@0 129 */
nuclear@0 130 // ---------------------------------------------------------------------------
nuclear@0 131 #define AI_CONFIG_PP_SBBC_MAX_BONES \
nuclear@0 132 "PP_SBBC_MAX_BONES"
nuclear@0 133
nuclear@0 134
nuclear@0 135 // default limit for bone count
nuclear@0 136 #if (!defined AI_SBBC_DEFAULT_MAX_BONES)
nuclear@0 137 # define AI_SBBC_DEFAULT_MAX_BONES 60
nuclear@0 138 #endif
nuclear@0 139
nuclear@0 140
nuclear@0 141 // ---------------------------------------------------------------------------
nuclear@0 142 /** @brief Specifies the maximum angle that may be between two vertex tangents
nuclear@0 143 * that their tangents and bi-tangents are smoothed.
nuclear@0 144 *
nuclear@0 145 * This applies to the CalcTangentSpace-Step. The angle is specified
nuclear@0 146 * in degrees. The maximum value is 175.
nuclear@0 147 * Property type: float. Default value: 45 degrees
nuclear@0 148 */
nuclear@0 149 #define AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE \
nuclear@0 150 "PP_CT_MAX_SMOOTHING_ANGLE"
nuclear@0 151
nuclear@0 152 // ---------------------------------------------------------------------------
nuclear@0 153 /** @brief Source UV channel for tangent space computation.
nuclear@0 154 *
nuclear@0 155 * The specified channel must exist or an error will be raised.
nuclear@0 156 * Property type: integer. Default value: 0
nuclear@0 157 */
nuclear@0 158 // ---------------------------------------------------------------------------
nuclear@0 159 #define AI_CONFIG_PP_CT_TEXTURE_CHANNEL_INDEX \
nuclear@0 160 "PP_CT_TEXTURE_CHANNEL_INDEX"
nuclear@0 161
nuclear@0 162 // ---------------------------------------------------------------------------
nuclear@0 163 /** @brief Specifies the maximum angle that may be between two face normals
nuclear@0 164 * at the same vertex position that their are smoothed together.
nuclear@0 165 *
nuclear@0 166 * Sometimes referred to as 'crease angle'.
nuclear@0 167 * This applies to the GenSmoothNormals-Step. The angle is specified
nuclear@0 168 * in degrees, so 180 is PI. The default value is 175 degrees (all vertex
nuclear@0 169 * normals are smoothed). The maximum value is 175, too. Property type: float.
nuclear@0 170 * Warning: setting this option may cause a severe loss of performance. The
nuclear@0 171 * performance is unaffected if the #AI_CONFIG_FAVOUR_SPEED flag is set but
nuclear@0 172 * the output quality may be reduced.
nuclear@0 173 */
nuclear@0 174 #define AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE \
nuclear@0 175 "PP_GSN_MAX_SMOOTHING_ANGLE"
nuclear@0 176
nuclear@0 177
nuclear@0 178 // ---------------------------------------------------------------------------
nuclear@0 179 /** @brief Sets the colormap (= palette) to be used to decode embedded
nuclear@0 180 * textures in MDL (Quake or 3DGS) files.
nuclear@0 181 *
nuclear@0 182 * This must be a valid path to a file. The file is 768 (256*3) bytes
nuclear@0 183 * large and contains RGB triplets for each of the 256 palette entries.
nuclear@0 184 * The default value is colormap.lmp. If the file is not found,
nuclear@0 185 * a default palette (from Quake 1) is used.
nuclear@0 186 * Property type: string.
nuclear@0 187 */
nuclear@0 188 #define AI_CONFIG_IMPORT_MDL_COLORMAP \
nuclear@0 189 "IMPORT_MDL_COLORMAP"
nuclear@0 190
nuclear@0 191 // ---------------------------------------------------------------------------
nuclear@0 192 /** @brief Configures the #aiProcess_RemoveRedundantMaterials step to
nuclear@0 193 * keep materials matching a name in a given list.
nuclear@0 194 *
nuclear@0 195 * This is a list of 1 to n strings, ' ' serves as delimiter character.
nuclear@0 196 * Identifiers containing whitespaces must be enclosed in *single*
nuclear@0 197 * quotation marks. For example:<tt>
nuclear@0 198 * "keep-me and_me_to anotherMaterialToBeKept \'name with whitespace\'"</tt>.
nuclear@0 199 * If a material matches on of these names, it will not be modified or
nuclear@0 200 * removed by the postprocessing step nor will other materials be replaced
nuclear@0 201 * by a reference to it. <br>
nuclear@0 202 * This option might be useful if you are using some magic material names
nuclear@0 203 * to pass additional semantics through the content pipeline. This ensures
nuclear@0 204 * they won't be optimized away, but a general optimization is still
nuclear@0 205 * performed for materials not contained in the list.
nuclear@0 206 * Property type: String. Default value: n/a
nuclear@0 207 * @note Linefeeds, tabs or carriage returns are treated as whitespace.
nuclear@0 208 * Material names are case sensitive.
nuclear@0 209 */
nuclear@0 210 #define AI_CONFIG_PP_RRM_EXCLUDE_LIST \
nuclear@0 211 "PP_RRM_EXCLUDE_LIST"
nuclear@0 212
nuclear@0 213 // ---------------------------------------------------------------------------
nuclear@0 214 /** @brief Configures the #aiProcess_PreTransformVertices step to
nuclear@0 215 * keep the scene hierarchy. Meshes are moved to worldspace, but
nuclear@0 216 * no optimization is performed (read: meshes with equal materials are not
nuclear@0 217 * joined. The total number of meshes won't change).
nuclear@0 218 *
nuclear@0 219 * This option could be of use for you if the scene hierarchy contains
nuclear@0 220 * important additional information which you intend to parse.
nuclear@0 221 * For rendering, you can still render all meshes in the scene without
nuclear@0 222 * any transformations.
nuclear@0 223 * Property type: bool. Default value: false.
nuclear@0 224 */
nuclear@0 225 #define AI_CONFIG_PP_PTV_KEEP_HIERARCHY \
nuclear@0 226 "PP_PTV_KEEP_HIERARCHY"
nuclear@0 227
nuclear@0 228 // ---------------------------------------------------------------------------
nuclear@0 229 /** @brief Configures the #aiProcess_PreTransformVertices step to normalize
nuclear@0 230 * all vertex components into the [-1,1] range. That is, a bounding box
nuclear@0 231 * for the whole scene is computed, the maximum component is taken and all
nuclear@0 232 * meshes are scaled appropriately (uniformly of course!).
nuclear@0 233 * This might be useful if you don't know the spatial dimension of the input
nuclear@0 234 * data*/
nuclear@0 235 #define AI_CONFIG_PP_PTV_NORMALIZE \
nuclear@0 236 "PP_PTV_NORMALIZE"
nuclear@0 237
nuclear@0 238 // ---------------------------------------------------------------------------
nuclear@0 239 /** @brief Configures the #aiProcess_PreTransformVertices step to use
nuclear@0 240 * a users defined matrix as the scene root node transformation before
nuclear@0 241 * transforming vertices.
nuclear@0 242 * Property type: bool. Default value: false.
nuclear@0 243 */
nuclear@0 244 #define AI_CONFIG_PP_PTV_ADD_ROOT_TRANSFORMATION \
nuclear@0 245 "PP_PTV_ADD_ROOT_TRANSFORMATION"
nuclear@0 246
nuclear@0 247 // ---------------------------------------------------------------------------
nuclear@0 248 /** @brief Configures the #aiProcess_PreTransformVertices step to use
nuclear@0 249 * a users defined matrix as the scene root node transformation before
nuclear@0 250 * transforming vertices. This property correspond to the 'a1' component
nuclear@0 251 * of the transformation matrix.
nuclear@0 252 * Property type: aiMatrix4x4.
nuclear@0 253 */
nuclear@0 254 #define AI_CONFIG_PP_PTV_ROOT_TRANSFORMATION \
nuclear@0 255 "PP_PTV_ROOT_TRANSFORMATION"
nuclear@0 256
nuclear@0 257 // ---------------------------------------------------------------------------
nuclear@0 258 /** @brief Configures the #aiProcess_FindDegenerates step to
nuclear@0 259 * remove degenerated primitives from the import - immediately.
nuclear@0 260 *
nuclear@0 261 * The default behaviour converts degenerated triangles to lines and
nuclear@0 262 * degenerated lines to points. See the documentation to the
nuclear@0 263 * #aiProcess_FindDegenerates step for a detailed example of the various ways
nuclear@0 264 * to get rid of these lines and points if you don't want them.
nuclear@0 265 * Property type: bool. Default value: false.
nuclear@0 266 */
nuclear@0 267 #define AI_CONFIG_PP_FD_REMOVE \
nuclear@0 268 "PP_FD_REMOVE"
nuclear@0 269
nuclear@0 270 // ---------------------------------------------------------------------------
nuclear@0 271 /**
nuclear@0 272 * @brief Configures the #aiProcess_FindDegenerates to check the area of a
nuclear@0 273 * trinagle to be greates than e-6. If this is not the case the triangle will
nuclear@0 274 * be removed if #AI_CONFIG_PP_FD_REMOVE is set to true.
nuclear@0 275 */
nuclear@0 276 #define AI_CONFIG_PP_FD_CHECKAREA \
nuclear@0 277 "PP_FD_CHECKAREA"
nuclear@0 278
nuclear@0 279 // ---------------------------------------------------------------------------
nuclear@0 280 /** @brief Configures the #aiProcess_OptimizeGraph step to preserve nodes
nuclear@0 281 * matching a name in a given list.
nuclear@0 282 *
nuclear@0 283 * This is a list of 1 to n strings, ' ' serves as delimiter character.
nuclear@0 284 * Identifiers containing whitespaces must be enclosed in *single*
nuclear@0 285 * quotation marks. For example:<tt>
nuclear@0 286 * "keep-me and_me_to anotherNodeToBeKept \'name with whitespace\'"</tt>.
nuclear@0 287 * If a node matches on of these names, it will not be modified or
nuclear@0 288 * removed by the postprocessing step.<br>
nuclear@0 289 * This option might be useful if you are using some magic node names
nuclear@0 290 * to pass additional semantics through the content pipeline. This ensures
nuclear@0 291 * they won't be optimized away, but a general optimization is still
nuclear@0 292 * performed for nodes not contained in the list.
nuclear@0 293 * Property type: String. Default value: n/a
nuclear@0 294 * @note Linefeeds, tabs or carriage returns are treated as whitespace.
nuclear@0 295 * Node names are case sensitive.
nuclear@0 296 */
nuclear@0 297 #define AI_CONFIG_PP_OG_EXCLUDE_LIST \
nuclear@0 298 "PP_OG_EXCLUDE_LIST"
nuclear@0 299
nuclear@0 300 // ---------------------------------------------------------------------------
nuclear@0 301 /** @brief Set the maximum number of triangles in a mesh.
nuclear@0 302 *
nuclear@0 303 * This is used by the "SplitLargeMeshes" PostProcess-Step to determine
nuclear@0 304 * whether a mesh must be split or not.
nuclear@0 305 * @note The default value is AI_SLM_DEFAULT_MAX_TRIANGLES
nuclear@0 306 * Property type: integer.
nuclear@0 307 */
nuclear@0 308 #define AI_CONFIG_PP_SLM_TRIANGLE_LIMIT \
nuclear@0 309 "PP_SLM_TRIANGLE_LIMIT"
nuclear@0 310
nuclear@0 311 // default value for AI_CONFIG_PP_SLM_TRIANGLE_LIMIT
nuclear@0 312 #if (!defined AI_SLM_DEFAULT_MAX_TRIANGLES)
nuclear@0 313 # define AI_SLM_DEFAULT_MAX_TRIANGLES 1000000
nuclear@0 314 #endif
nuclear@0 315
nuclear@0 316 // ---------------------------------------------------------------------------
nuclear@0 317 /** @brief Set the maximum number of vertices in a mesh.
nuclear@0 318 *
nuclear@0 319 * This is used by the "SplitLargeMeshes" PostProcess-Step to determine
nuclear@0 320 * whether a mesh must be split or not.
nuclear@0 321 * @note The default value is AI_SLM_DEFAULT_MAX_VERTICES
nuclear@0 322 * Property type: integer.
nuclear@0 323 */
nuclear@0 324 #define AI_CONFIG_PP_SLM_VERTEX_LIMIT \
nuclear@0 325 "PP_SLM_VERTEX_LIMIT"
nuclear@0 326
nuclear@0 327 // default value for AI_CONFIG_PP_SLM_VERTEX_LIMIT
nuclear@0 328 #if (!defined AI_SLM_DEFAULT_MAX_VERTICES)
nuclear@0 329 # define AI_SLM_DEFAULT_MAX_VERTICES 1000000
nuclear@0 330 #endif
nuclear@0 331
nuclear@0 332 // ---------------------------------------------------------------------------
nuclear@0 333 /** @brief Set the maximum number of bones affecting a single vertex
nuclear@0 334 *
nuclear@0 335 * This is used by the #aiProcess_LimitBoneWeights PostProcess-Step.
nuclear@0 336 * @note The default value is AI_LMW_MAX_WEIGHTS
nuclear@0 337 * Property type: integer.*/
nuclear@0 338 #define AI_CONFIG_PP_LBW_MAX_WEIGHTS \
nuclear@0 339 "PP_LBW_MAX_WEIGHTS"
nuclear@0 340
nuclear@0 341 // default value for AI_CONFIG_PP_LBW_MAX_WEIGHTS
nuclear@0 342 #if (!defined AI_LMW_MAX_WEIGHTS)
nuclear@0 343 # define AI_LMW_MAX_WEIGHTS 0x4
nuclear@0 344 #endif // !! AI_LMW_MAX_WEIGHTS
nuclear@0 345
nuclear@0 346 // ---------------------------------------------------------------------------
nuclear@0 347 /** @brief Lower the deboning threshold in order to remove more bones.
nuclear@0 348 *
nuclear@0 349 * This is used by the #aiProcess_Debone PostProcess-Step.
nuclear@0 350 * @note The default value is AI_DEBONE_THRESHOLD
nuclear@0 351 * Property type: float.*/
nuclear@0 352 #define AI_CONFIG_PP_DB_THRESHOLD \
nuclear@0 353 "PP_DB_THRESHOLD"
nuclear@0 354
nuclear@0 355 // default value for AI_CONFIG_PP_LBW_MAX_WEIGHTS
nuclear@0 356 #if (!defined AI_DEBONE_THRESHOLD)
nuclear@0 357 # define AI_DEBONE_THRESHOLD 1.0f
nuclear@0 358 #endif // !! AI_DEBONE_THRESHOLD
nuclear@0 359
nuclear@0 360 // ---------------------------------------------------------------------------
nuclear@0 361 /** @brief Require all bones qualify for deboning before removing any
nuclear@0 362 *
nuclear@0 363 * This is used by the #aiProcess_Debone PostProcess-Step.
nuclear@0 364 * @note The default value is 0
nuclear@0 365 * Property type: bool.*/
nuclear@0 366 #define AI_CONFIG_PP_DB_ALL_OR_NONE \
nuclear@0 367 "PP_DB_ALL_OR_NONE"
nuclear@0 368
nuclear@0 369 /** @brief Default value for the #AI_CONFIG_PP_ICL_PTCACHE_SIZE property
nuclear@0 370 */
nuclear@0 371 #ifndef PP_ICL_PTCACHE_SIZE
nuclear@0 372 # define PP_ICL_PTCACHE_SIZE 12
nuclear@0 373 #endif
nuclear@0 374
nuclear@0 375 // ---------------------------------------------------------------------------
nuclear@0 376 /** @brief Set the size of the post-transform vertex cache to optimize the
nuclear@0 377 * vertices for. This configures the #aiProcess_ImproveCacheLocality step.
nuclear@0 378 *
nuclear@0 379 * The size is given in vertices. Of course you can't know how the vertex
nuclear@0 380 * format will exactly look like after the import returns, but you can still
nuclear@0 381 * guess what your meshes will probably have.
nuclear@0 382 * @note The default value is #PP_ICL_PTCACHE_SIZE. That results in slight
nuclear@0 383 * performance improvements for most nVidia/AMD cards since 2002.
nuclear@0 384 * Property type: integer.
nuclear@0 385 */
nuclear@0 386 #define AI_CONFIG_PP_ICL_PTCACHE_SIZE "PP_ICL_PTCACHE_SIZE"
nuclear@0 387
nuclear@0 388 // ---------------------------------------------------------------------------
nuclear@0 389 /** @brief Enumerates components of the aiScene and aiMesh data structures
nuclear@0 390 * that can be excluded from the import using the #aiProcess_RemoveComponent step.
nuclear@0 391 *
nuclear@0 392 * See the documentation to #aiProcess_RemoveComponent for more details.
nuclear@0 393 */
nuclear@0 394 enum aiComponent
nuclear@0 395 {
nuclear@0 396 /** Normal vectors */
nuclear@0 397 #ifdef SWIG
nuclear@0 398 aiComponent_NORMALS = 0x2,
nuclear@0 399 #else
nuclear@0 400 aiComponent_NORMALS = 0x2u,
nuclear@0 401 #endif
nuclear@0 402
nuclear@0 403 /** Tangents and bitangents go always together ... */
nuclear@0 404 #ifdef SWIG
nuclear@0 405 aiComponent_TANGENTS_AND_BITANGENTS = 0x4,
nuclear@0 406 #else
nuclear@0 407 aiComponent_TANGENTS_AND_BITANGENTS = 0x4u,
nuclear@0 408 #endif
nuclear@0 409
nuclear@0 410 /** ALL color sets
nuclear@0 411 * Use aiComponent_COLORn(N) to specify the N'th set */
nuclear@0 412 aiComponent_COLORS = 0x8,
nuclear@0 413
nuclear@0 414 /** ALL texture UV sets
nuclear@0 415 * aiComponent_TEXCOORDn(N) to specify the N'th set */
nuclear@0 416 aiComponent_TEXCOORDS = 0x10,
nuclear@0 417
nuclear@0 418 /** Removes all bone weights from all meshes.
nuclear@0 419 * The scenegraph nodes corresponding to the bones are NOT removed.
nuclear@0 420 * use the #aiProcess_OptimizeGraph step to do this */
nuclear@0 421 aiComponent_BONEWEIGHTS = 0x20,
nuclear@0 422
nuclear@0 423 /** Removes all node animations (aiScene::mAnimations).
nuclear@0 424 * The corresponding scenegraph nodes are NOT removed.
nuclear@0 425 * use the #aiProcess_OptimizeGraph step to do this */
nuclear@0 426 aiComponent_ANIMATIONS = 0x40,
nuclear@0 427
nuclear@0 428 /** Removes all embedded textures (aiScene::mTextures) */
nuclear@0 429 aiComponent_TEXTURES = 0x80,
nuclear@0 430
nuclear@0 431 /** Removes all light sources (aiScene::mLights).
nuclear@0 432 * The corresponding scenegraph nodes are NOT removed.
nuclear@0 433 * use the #aiProcess_OptimizeGraph step to do this */
nuclear@0 434 aiComponent_LIGHTS = 0x100,
nuclear@0 435
nuclear@0 436 /** Removes all cameras (aiScene::mCameras).
nuclear@0 437 * The corresponding scenegraph nodes are NOT removed.
nuclear@0 438 * use the #aiProcess_OptimizeGraph step to do this */
nuclear@0 439 aiComponent_CAMERAS = 0x200,
nuclear@0 440
nuclear@0 441 /** Removes all meshes (aiScene::mMeshes). */
nuclear@0 442 aiComponent_MESHES = 0x400,
nuclear@0 443
nuclear@0 444 /** Removes all materials. One default material will
nuclear@0 445 * be generated, so aiScene::mNumMaterials will be 1. */
nuclear@0 446 aiComponent_MATERIALS = 0x800,
nuclear@0 447
nuclear@0 448
nuclear@0 449 /** This value is not used. It is just there to force the
nuclear@0 450 * compiler to map this enum to a 32 Bit integer. */
nuclear@0 451 #ifndef SWIG
nuclear@0 452 _aiComponent_Force32Bit = 0x9fffffff
nuclear@0 453 #endif
nuclear@0 454 };
nuclear@0 455
nuclear@0 456 // Remove a specific color channel 'n'
nuclear@0 457 #define aiComponent_COLORSn(n) (1u << (n+20u))
nuclear@0 458
nuclear@0 459 // Remove a specific UV channel 'n'
nuclear@0 460 #define aiComponent_TEXCOORDSn(n) (1u << (n+25u))
nuclear@0 461
nuclear@0 462 // ---------------------------------------------------------------------------
nuclear@0 463 /** @brief Input parameter to the #aiProcess_RemoveComponent step:
nuclear@0 464 * Specifies the parts of the data structure to be removed.
nuclear@0 465 *
nuclear@0 466 * See the documentation to this step for further details. The property
nuclear@0 467 * is expected to be an integer, a bitwise combination of the
nuclear@0 468 * #aiComponent flags defined above in this header. The default
nuclear@0 469 * value is 0. Important: if no valid mesh is remaining after the
nuclear@0 470 * step has been executed (e.g you thought it was funny to specify ALL
nuclear@0 471 * of the flags defined above) the import FAILS. Mainly because there is
nuclear@0 472 * no data to work on anymore ...
nuclear@0 473 */
nuclear@0 474 #define AI_CONFIG_PP_RVC_FLAGS \
nuclear@0 475 "PP_RVC_FLAGS"
nuclear@0 476
nuclear@0 477 // ---------------------------------------------------------------------------
nuclear@0 478 /** @brief Input parameter to the #aiProcess_SortByPType step:
nuclear@0 479 * Specifies which primitive types are removed by the step.
nuclear@0 480 *
nuclear@0 481 * This is a bitwise combination of the aiPrimitiveType flags.
nuclear@0 482 * Specifying all of them is illegal, of course. A typical use would
nuclear@0 483 * be to exclude all line and point meshes from the import. This
nuclear@0 484 * is an integer property, its default value is 0.
nuclear@0 485 */
nuclear@0 486 #define AI_CONFIG_PP_SBP_REMOVE \
nuclear@0 487 "PP_SBP_REMOVE"
nuclear@0 488
nuclear@0 489 // ---------------------------------------------------------------------------
nuclear@0 490 /** @brief Input parameter to the #aiProcess_FindInvalidData step:
nuclear@0 491 * Specifies the floating-point accuracy for animation values. The step
nuclear@0 492 * checks for animation tracks where all frame values are absolutely equal
nuclear@0 493 * and removes them. This tweakable controls the epsilon for floating-point
nuclear@0 494 * comparisons - two keys are considered equal if the invariant
nuclear@0 495 * abs(n0-n1)>epsilon holds true for all vector respectively quaternion
nuclear@0 496 * components. The default value is 0.f - comparisons are exact then.
nuclear@0 497 */
nuclear@0 498 #define AI_CONFIG_PP_FID_ANIM_ACCURACY \
nuclear@0 499 "PP_FID_ANIM_ACCURACY"
nuclear@0 500
nuclear@0 501 // ---------------------------------------------------------------------------
nuclear@0 502 /** @brief Input parameter to the #aiProcess_FindInvalidData step:
nuclear@0 503 * Set to true to ignore texture coordinates. This may be useful if you have
nuclear@0 504 * to assign different kind of textures like one for the summer or one for the winter.
nuclear@0 505 */
nuclear@0 506 #define AI_CONFIG_PP_FID_IGNORE_TEXTURECOORDS \
nuclear@0 507 "PP_FID_IGNORE_TEXTURECOORDS"
nuclear@0 508
nuclear@0 509 // TransformUVCoords evaluates UV scalings
nuclear@0 510 #define AI_UVTRAFO_SCALING 0x1
nuclear@0 511
nuclear@0 512 // TransformUVCoords evaluates UV rotations
nuclear@0 513 #define AI_UVTRAFO_ROTATION 0x2
nuclear@0 514
nuclear@0 515 // TransformUVCoords evaluates UV translation
nuclear@0 516 #define AI_UVTRAFO_TRANSLATION 0x4
nuclear@0 517
nuclear@0 518 // Everything baked together -> default value
nuclear@0 519 #define AI_UVTRAFO_ALL (AI_UVTRAFO_SCALING | AI_UVTRAFO_ROTATION | AI_UVTRAFO_TRANSLATION)
nuclear@0 520
nuclear@0 521 // ---------------------------------------------------------------------------
nuclear@0 522 /** @brief Input parameter to the #aiProcess_TransformUVCoords step:
nuclear@0 523 * Specifies which UV transformations are evaluated.
nuclear@0 524 *
nuclear@0 525 * This is a bitwise combination of the AI_UVTRAFO_XXX flags (integer
nuclear@0 526 * property, of course). By default all transformations are enabled
nuclear@0 527 * (AI_UVTRAFO_ALL).
nuclear@0 528 */
nuclear@0 529 #define AI_CONFIG_PP_TUV_EVALUATE \
nuclear@0 530 "PP_TUV_EVALUATE"
nuclear@0 531
nuclear@0 532 // ---------------------------------------------------------------------------
nuclear@0 533 /** @brief A hint to assimp to favour speed against import quality.
nuclear@0 534 *
nuclear@0 535 * Enabling this option may result in faster loading, but it needn't.
nuclear@0 536 * It represents just a hint to loaders and post-processing steps to use
nuclear@0 537 * faster code paths, if possible.
nuclear@0 538 * This property is expected to be an integer, != 0 stands for true.
nuclear@0 539 * The default value is 0.
nuclear@0 540 */
nuclear@0 541 #define AI_CONFIG_FAVOUR_SPEED \
nuclear@0 542 "FAVOUR_SPEED"
nuclear@0 543
nuclear@0 544
nuclear@0 545 // ###########################################################################
nuclear@0 546 // IMPORTER SETTINGS
nuclear@0 547 // Various stuff to fine-tune the behaviour of specific importer plugins.
nuclear@0 548 // ###########################################################################
nuclear@0 549
nuclear@0 550
nuclear@0 551 // ---------------------------------------------------------------------------
nuclear@0 552 /** @brief Set whether the fbx importer will merge all geometry layers present
nuclear@0 553 * in the source file or take only the first.
nuclear@0 554 *
nuclear@0 555 * The default value is true (1)
nuclear@0 556 * Property type: bool
nuclear@0 557 */
nuclear@0 558 #define AI_CONFIG_IMPORT_FBX_READ_ALL_GEOMETRY_LAYERS \
nuclear@0 559 "IMPORT_FBX_READ_ALL_GEOMETRY_LAYERS"
nuclear@0 560
nuclear@0 561 // ---------------------------------------------------------------------------
nuclear@0 562 /** @brief Set whether the fbx importer will read all materials present in the
nuclear@0 563 * source file or take only the referenced materials.
nuclear@0 564 *
nuclear@0 565 * This is void unless IMPORT_FBX_READ_MATERIALS=1.
nuclear@0 566 *
nuclear@0 567 * The default value is false (0)
nuclear@0 568 * Property type: bool
nuclear@0 569 */
nuclear@0 570 #define AI_CONFIG_IMPORT_FBX_READ_ALL_MATERIALS \
nuclear@0 571 "IMPORT_FBX_READ_ALL_MATERIALS"
nuclear@0 572
nuclear@0 573 // ---------------------------------------------------------------------------
nuclear@0 574 /** @brief Set whether the fbx importer will read materials.
nuclear@0 575 *
nuclear@0 576 * The default value is true (1)
nuclear@0 577 * Property type: bool
nuclear@0 578 */
nuclear@0 579 #define AI_CONFIG_IMPORT_FBX_READ_MATERIALS \
nuclear@0 580 "IMPORT_FBX_READ_MATERIALS"
nuclear@0 581
nuclear@0 582 // ---------------------------------------------------------------------------
nuclear@0 583 /** @brief Set whether the fbx importer will read embedded textures.
nuclear@0 584 *
nuclear@0 585 * The default value is true (1)
nuclear@0 586 * Property type: bool
nuclear@0 587 */
nuclear@0 588 #define AI_CONFIG_IMPORT_FBX_READ_TEXTURES \
nuclear@0 589 "IMPORT_FBX_READ_TEXTURES"
nuclear@0 590
nuclear@0 591 // ---------------------------------------------------------------------------
nuclear@0 592 /** @brief Set whether the fbx importer will read cameras.
nuclear@0 593 *
nuclear@0 594 * The default value is true (1)
nuclear@0 595 * Property type: bool
nuclear@0 596 */
nuclear@0 597 #define AI_CONFIG_IMPORT_FBX_READ_CAMERAS \
nuclear@0 598 "IMPORT_FBX_READ_CAMERAS"
nuclear@0 599
nuclear@0 600 // ---------------------------------------------------------------------------
nuclear@0 601 /** @brief Set whether the fbx importer will read light sources.
nuclear@0 602 *
nuclear@0 603 * The default value is true (1)
nuclear@0 604 * Property type: bool
nuclear@0 605 */
nuclear@0 606 #define AI_CONFIG_IMPORT_FBX_READ_LIGHTS \
nuclear@0 607 "IMPORT_FBX_READ_LIGHTS"
nuclear@0 608
nuclear@0 609 // ---------------------------------------------------------------------------
nuclear@0 610 /** @brief Set whether the fbx importer will read animations.
nuclear@0 611 *
nuclear@0 612 * The default value is true (1)
nuclear@0 613 * Property type: bool
nuclear@0 614 */
nuclear@0 615 #define AI_CONFIG_IMPORT_FBX_READ_ANIMATIONS \
nuclear@0 616 "IMPORT_FBX_READ_ANIMATIONS"
nuclear@0 617
nuclear@0 618 // ---------------------------------------------------------------------------
nuclear@0 619 /** @brief Set whether the fbx importer will act in strict mode in which only
nuclear@0 620 * FBX 2013 is supported and any other sub formats are rejected. FBX 2013
nuclear@0 621 * is the primary target for the importer, so this format is best
nuclear@0 622 * supported and well-tested.
nuclear@0 623 *
nuclear@0 624 * The default value is false (0)
nuclear@0 625 * Property type: bool
nuclear@0 626 */
nuclear@0 627 #define AI_CONFIG_IMPORT_FBX_STRICT_MODE \
nuclear@0 628 "IMPORT_FBX_STRICT_MODE"
nuclear@0 629
nuclear@0 630 // ---------------------------------------------------------------------------
nuclear@0 631 /** @brief Set whether the fbx importer will preserve pivot points for
nuclear@0 632 * transformations (as extra nodes). If set to false, pivots and offsets
nuclear@0 633 * will be evaluated whenever possible.
nuclear@0 634 *
nuclear@0 635 * The default value is true (1)
nuclear@0 636 * Property type: bool
nuclear@0 637 */
nuclear@0 638 #define AI_CONFIG_IMPORT_FBX_PRESERVE_PIVOTS \
nuclear@0 639 "IMPORT_FBX_PRESERVE_PIVOTS"
nuclear@0 640
nuclear@0 641 // ---------------------------------------------------------------------------
nuclear@0 642 /** @brief Specifies whether the importer will drop empty animation curves or
nuclear@0 643 * animation curves which match the bind pose transformation over their
nuclear@0 644 * entire defined range.
nuclear@0 645 *
nuclear@0 646 * The default value is true (1)
nuclear@0 647 * Property type: bool
nuclear@0 648 */
nuclear@0 649 #define AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES \
nuclear@0 650 "IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES"
nuclear@0 651
nuclear@0 652 // ---------------------------------------------------------------------------
nuclear@0 653 /** @brief Set whether the fbx importer will use the legacy embedded texture naming.
nuclear@0 654 *
nuclear@0 655 * The default value is false (0)
nuclear@0 656 * Property type: bool
nuclear@0 657 */
nuclear@0 658 #define AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING \
nuclear@0 659 "AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING"
nuclear@0 660
nuclear@0 661 // ---------------------------------------------------------------------------
nuclear@0 662 /** @brief Set the vertex animation keyframe to be imported
nuclear@0 663 *
nuclear@0 664 * ASSIMP does not support vertex keyframes (only bone animation is supported).
nuclear@0 665 * The library reads only one frame of models with vertex animations.
nuclear@0 666 * By default this is the first frame.
nuclear@0 667 * \note The default value is 0. This option applies to all importers.
nuclear@0 668 * However, it is also possible to override the global setting
nuclear@0 669 * for a specific loader. You can use the AI_CONFIG_IMPORT_XXX_KEYFRAME
nuclear@0 670 * options (where XXX is a placeholder for the file format for which you
nuclear@0 671 * want to override the global setting).
nuclear@0 672 * Property type: integer.
nuclear@0 673 */
nuclear@0 674 #define AI_CONFIG_IMPORT_GLOBAL_KEYFRAME "IMPORT_GLOBAL_KEYFRAME"
nuclear@0 675
nuclear@0 676 #define AI_CONFIG_IMPORT_MD3_KEYFRAME "IMPORT_MD3_KEYFRAME"
nuclear@0 677 #define AI_CONFIG_IMPORT_MD2_KEYFRAME "IMPORT_MD2_KEYFRAME"
nuclear@0 678 #define AI_CONFIG_IMPORT_MDL_KEYFRAME "IMPORT_MDL_KEYFRAME"
nuclear@0 679 #define AI_CONFIG_IMPORT_MDC_KEYFRAME "IMPORT_MDC_KEYFRAME"
nuclear@0 680 #define AI_CONFIG_IMPORT_SMD_KEYFRAME "IMPORT_SMD_KEYFRAME"
nuclear@0 681 #define AI_CONFIG_IMPORT_UNREAL_KEYFRAME "IMPORT_UNREAL_KEYFRAME"
nuclear@0 682
nuclear@0 683 // ---------------------------------------------------------------------------
nuclear@0 684 /** Smd load multiple animations
nuclear@0 685 *
nuclear@0 686 * Property type: bool. Default value: true.
nuclear@0 687 */
nuclear@0 688 #define AI_CONFIG_IMPORT_SMD_LOAD_ANIMATION_LIST "IMPORT_SMD_LOAD_ANIMATION_LIST"
nuclear@0 689
nuclear@0 690 // ---------------------------------------------------------------------------
nuclear@0 691 /** @brief Configures the AC loader to collect all surfaces which have the
nuclear@0 692 * "Backface cull" flag set in separate meshes.
nuclear@0 693 *
nuclear@0 694 * Property type: bool. Default value: true.
nuclear@0 695 */
nuclear@0 696 #define AI_CONFIG_IMPORT_AC_SEPARATE_BFCULL \
nuclear@0 697 "IMPORT_AC_SEPARATE_BFCULL"
nuclear@0 698
nuclear@0 699 // ---------------------------------------------------------------------------
nuclear@0 700 /** @brief Configures whether the AC loader evaluates subdivision surfaces (
nuclear@0 701 * indicated by the presence of the 'subdiv' attribute in the file). By
nuclear@0 702 * default, Assimp performs the subdivision using the standard
nuclear@0 703 * Catmull-Clark algorithm
nuclear@0 704 *
nuclear@0 705 * * Property type: bool. Default value: true.
nuclear@0 706 */
nuclear@0 707 #define AI_CONFIG_IMPORT_AC_EVAL_SUBDIVISION \
nuclear@0 708 "IMPORT_AC_EVAL_SUBDIVISION"
nuclear@0 709
nuclear@0 710 // ---------------------------------------------------------------------------
nuclear@0 711 /** @brief Configures the UNREAL 3D loader to separate faces with different
nuclear@0 712 * surface flags (e.g. two-sided vs. single-sided).
nuclear@0 713 *
nuclear@0 714 * * Property type: bool. Default value: true.
nuclear@0 715 */
nuclear@0 716 #define AI_CONFIG_IMPORT_UNREAL_HANDLE_FLAGS \
nuclear@0 717 "UNREAL_HANDLE_FLAGS"
nuclear@0 718
nuclear@0 719 // ---------------------------------------------------------------------------
nuclear@0 720 /** @brief Configures the terragen import plugin to compute uv's for
nuclear@0 721 * terrains, if not given. Furthermore a default texture is assigned.
nuclear@0 722 *
nuclear@0 723 * UV coordinates for terrains are so simple to compute that you'll usually
nuclear@0 724 * want to compute them on your own, if you need them. This option is intended
nuclear@0 725 * for model viewers which want to offer an easy way to apply textures to
nuclear@0 726 * terrains.
nuclear@0 727 * * Property type: bool. Default value: false.
nuclear@0 728 */
nuclear@0 729 #define AI_CONFIG_IMPORT_TER_MAKE_UVS \
nuclear@0 730 "IMPORT_TER_MAKE_UVS"
nuclear@0 731
nuclear@0 732 // ---------------------------------------------------------------------------
nuclear@0 733 /** @brief Configures the ASE loader to always reconstruct normal vectors
nuclear@0 734 * basing on the smoothing groups loaded from the file.
nuclear@0 735 *
nuclear@0 736 * Some ASE files have carry invalid normals, other don't.
nuclear@0 737 * * Property type: bool. Default value: true.
nuclear@0 738 */
nuclear@0 739 #define AI_CONFIG_IMPORT_ASE_RECONSTRUCT_NORMALS \
nuclear@0 740 "IMPORT_ASE_RECONSTRUCT_NORMALS"
nuclear@0 741
nuclear@0 742 // ---------------------------------------------------------------------------
nuclear@0 743 /** @brief Configures the M3D loader to detect and process multi-part
nuclear@0 744 * Quake player models.
nuclear@0 745 *
nuclear@0 746 * These models usually consist of 3 files, lower.md3, upper.md3 and
nuclear@0 747 * head.md3. If this property is set to true, Assimp will try to load and
nuclear@0 748 * combine all three files if one of them is loaded.
nuclear@0 749 * Property type: bool. Default value: true.
nuclear@0 750 */
nuclear@0 751 #define AI_CONFIG_IMPORT_MD3_HANDLE_MULTIPART \
nuclear@0 752 "IMPORT_MD3_HANDLE_MULTIPART"
nuclear@0 753
nuclear@0 754 // ---------------------------------------------------------------------------
nuclear@0 755 /** @brief Tells the MD3 loader which skin files to load.
nuclear@0 756 *
nuclear@0 757 * When loading MD3 files, Assimp checks whether a file
nuclear@0 758 * [md3_file_name]_[skin_name].skin is existing. These files are used by
nuclear@0 759 * Quake III to be able to assign different skins (e.g. red and blue team)
nuclear@0 760 * to models. 'default', 'red', 'blue' are typical skin names.
nuclear@0 761 * Property type: String. Default value: "default".
nuclear@0 762 */
nuclear@0 763 #define AI_CONFIG_IMPORT_MD3_SKIN_NAME \
nuclear@0 764 "IMPORT_MD3_SKIN_NAME"
nuclear@0 765
nuclear@0 766 // ---------------------------------------------------------------------------
nuclear@0 767 /** @brief Specify the Quake 3 shader file to be used for a particular
nuclear@0 768 * MD3 file. This can also be a search path.
nuclear@0 769 *
nuclear@0 770 * By default Assimp's behaviour is as follows: If a MD3 file
nuclear@0 771 * <tt>any_path/models/any_q3_subdir/model_name/file_name.md3</tt> is
nuclear@0 772 * loaded, the library tries to locate the corresponding shader file in
nuclear@0 773 * <tt>any_path/scripts/model_name.shader</tt>. This property overrides this
nuclear@0 774 * behaviour. It can either specify a full path to the shader to be loaded
nuclear@0 775 * or alternatively the path (relative or absolute) to the directory where
nuclear@0 776 * the shaders for all MD3s to be loaded reside. Assimp attempts to open
nuclear@0 777 * <tt>IMPORT_MD3_SHADER_SRC/model_name.shader</tt> first, <tt>IMPORT_MD3_SHADER_SRC/file_name.shader</tt>
nuclear@0 778 * is the fallback file. Note that IMPORT_MD3_SHADER_SRC should have a terminal (back)slash.
nuclear@0 779 * Property type: String. Default value: n/a.
nuclear@0 780 */
nuclear@0 781 #define AI_CONFIG_IMPORT_MD3_SHADER_SRC \
nuclear@0 782 "IMPORT_MD3_SHADER_SRC"
nuclear@0 783
nuclear@0 784 // ---------------------------------------------------------------------------
nuclear@0 785 /** @brief Configures the LWO loader to load just one layer from the model.
nuclear@0 786 *
nuclear@0 787 * LWO files consist of layers and in some cases it could be useful to load
nuclear@0 788 * only one of them. This property can be either a string - which specifies
nuclear@0 789 * the name of the layer - or an integer - the index of the layer. If the
nuclear@0 790 * property is not set the whole LWO model is loaded. Loading fails if the
nuclear@0 791 * requested layer is not available. The layer index is zero-based and the
nuclear@0 792 * layer name may not be empty.<br>
nuclear@0 793 * Property type: Integer. Default value: all layers are loaded.
nuclear@0 794 */
nuclear@0 795 #define AI_CONFIG_IMPORT_LWO_ONE_LAYER_ONLY \
nuclear@0 796 "IMPORT_LWO_ONE_LAYER_ONLY"
nuclear@0 797
nuclear@0 798 // ---------------------------------------------------------------------------
nuclear@0 799 /** @brief Configures the MD5 loader to not load the MD5ANIM file for
nuclear@0 800 * a MD5MESH file automatically.
nuclear@0 801 *
nuclear@0 802 * The default strategy is to look for a file with the same name but the
nuclear@0 803 * MD5ANIM extension in the same directory. If it is found, it is loaded
nuclear@0 804 * and combined with the MD5MESH file. This configuration option can be
nuclear@0 805 * used to disable this behaviour.
nuclear@0 806 *
nuclear@0 807 * * Property type: bool. Default value: false.
nuclear@0 808 */
nuclear@0 809 #define AI_CONFIG_IMPORT_MD5_NO_ANIM_AUTOLOAD \
nuclear@0 810 "IMPORT_MD5_NO_ANIM_AUTOLOAD"
nuclear@0 811
nuclear@0 812 // ---------------------------------------------------------------------------
nuclear@0 813 /** @brief Defines the begin of the time range for which the LWS loader
nuclear@0 814 * evaluates animations and computes aiNodeAnim's.
nuclear@0 815 *
nuclear@0 816 * Assimp provides full conversion of LightWave's envelope system, including
nuclear@0 817 * pre and post conditions. The loader computes linearly subsampled animation
nuclear@0 818 * chanels with the frame rate given in the LWS file. This property defines
nuclear@0 819 * the start time. Note: animation channels are only generated if a node
nuclear@0 820 * has at least one envelope with more tan one key assigned. This property.
nuclear@0 821 * is given in frames, '0' is the first frame. By default, if this property
nuclear@0 822 * is not set, the importer takes the animation start from the input LWS
nuclear@0 823 * file ('FirstFrame' line)<br>
nuclear@0 824 * Property type: Integer. Default value: taken from file.
nuclear@0 825 *
nuclear@0 826 * @see AI_CONFIG_IMPORT_LWS_ANIM_END - end of the imported time range
nuclear@0 827 */
nuclear@0 828 #define AI_CONFIG_IMPORT_LWS_ANIM_START \
nuclear@0 829 "IMPORT_LWS_ANIM_START"
nuclear@0 830 #define AI_CONFIG_IMPORT_LWS_ANIM_END \
nuclear@0 831 "IMPORT_LWS_ANIM_END"
nuclear@0 832
nuclear@0 833 // ---------------------------------------------------------------------------
nuclear@0 834 /** @brief Defines the output frame rate of the IRR loader.
nuclear@0 835 *
nuclear@0 836 * IRR animations are difficult to convert for Assimp and there will
nuclear@0 837 * always be a loss of quality. This setting defines how many keys per second
nuclear@0 838 * are returned by the converter.<br>
nuclear@0 839 * Property type: integer. Default value: 100
nuclear@0 840 */
nuclear@0 841 #define AI_CONFIG_IMPORT_IRR_ANIM_FPS \
nuclear@0 842 "IMPORT_IRR_ANIM_FPS"
nuclear@0 843
nuclear@0 844 // ---------------------------------------------------------------------------
nuclear@0 845 /** @brief Ogre Importer will try to find referenced materials from this file.
nuclear@0 846 *
nuclear@0 847 * Ogre meshes reference with material names, this does not tell Assimp the file
nuclear@0 848 * where it is located in. Assimp will try to find the source file in the following
nuclear@0 849 * order: <material-name>.material, <mesh-filename-base>.material and
nuclear@0 850 * lastly the material name defined by this config property.
nuclear@0 851 * <br>
nuclear@0 852 * Property type: String. Default value: Scene.material.
nuclear@0 853 */
nuclear@0 854 #define AI_CONFIG_IMPORT_OGRE_MATERIAL_FILE \
nuclear@0 855 "IMPORT_OGRE_MATERIAL_FILE"
nuclear@0 856
nuclear@0 857 // ---------------------------------------------------------------------------
nuclear@0 858 /** @brief Ogre Importer detect the texture usage from its filename.
nuclear@0 859 *
nuclear@0 860 * Ogre material texture units do not define texture type, the textures usage
nuclear@0 861 * depends on the used shader or Ogre's fixed pipeline. If this config property
nuclear@0 862 * is true Assimp will try to detect the type from the textures filename postfix:
nuclear@0 863 * _n, _nrm, _nrml, _normal, _normals and _normalmap for normal map, _s, _spec,
nuclear@0 864 * _specular and _specularmap for specular map, _l, _light, _lightmap, _occ
nuclear@0 865 * and _occlusion for light map, _disp and _displacement for displacement map.
nuclear@0 866 * The matching is case insensitive. Post fix is taken between the last
nuclear@0 867 * underscore and the last period.
nuclear@0 868 * Default behavior is to detect type from lower cased texture unit name by
nuclear@0 869 * matching against: normalmap, specularmap, lightmap and displacementmap.
nuclear@0 870 * For both cases if no match is found aiTextureType_DIFFUSE is used.
nuclear@0 871 * <br>
nuclear@0 872 * Property type: Bool. Default value: false.
nuclear@0 873 */
nuclear@0 874 #define AI_CONFIG_IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME \
nuclear@0 875 "IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME"
nuclear@0 876
nuclear@0 877 /** @brief Specifies whether the Android JNI asset extraction is supported.
nuclear@0 878 *
nuclear@0 879 * Turn on this option if you want to manage assets in native
nuclear@0 880 * Android application without having to keep the internal directory and asset
nuclear@0 881 * manager pointer.
nuclear@0 882 */
nuclear@0 883 #define AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT "AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT"
nuclear@0 884
nuclear@0 885 // ---------------------------------------------------------------------------
nuclear@0 886 /** @brief Specifies whether the IFC loader skips over IfcSpace elements.
nuclear@0 887 *
nuclear@0 888 * IfcSpace elements (and their geometric representations) are used to
nuclear@0 889 * represent, well, free space in a building storey.<br>
nuclear@0 890 * Property type: Bool. Default value: true.
nuclear@0 891 */
nuclear@0 892 #define AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS "IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS"
nuclear@0 893
nuclear@0 894 // ---------------------------------------------------------------------------
nuclear@0 895 /** @brief Specifies whether the IFC loader will use its own, custom triangulation
nuclear@0 896 * algorithm to triangulate wall and floor meshes.
nuclear@0 897 *
nuclear@0 898 * If this property is set to false, walls will be either triangulated by
nuclear@0 899 * #aiProcess_Triangulate or will be passed through as huge polygons with
nuclear@0 900 * faked holes (i.e. holes that are connected with the outer boundary using
nuclear@0 901 * a dummy edge). It is highly recommended to set this property to true
nuclear@0 902 * if you want triangulated data because #aiProcess_Triangulate is known to
nuclear@0 903 * have problems with the kind of polygons that the IFC loader spits out for
nuclear@0 904 * complicated meshes.
nuclear@0 905 * Property type: Bool. Default value: true.
nuclear@0 906 */
nuclear@0 907 #define AI_CONFIG_IMPORT_IFC_CUSTOM_TRIANGULATION "IMPORT_IFC_CUSTOM_TRIANGULATION"
nuclear@0 908
nuclear@0 909 // ---------------------------------------------------------------------------
nuclear@0 910 /** @brief Set the tessellation conic angle for IFC smoothing curves.
nuclear@0 911 *
nuclear@0 912 * This is used by the IFC importer to determine the tessellation parameter
nuclear@0 913 * for smoothing curves.
nuclear@0 914 * @note The default value is AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE and the
nuclear@0 915 * accepted values are in range [5.0, 120.0].
nuclear@0 916 * Property type: Float.
nuclear@0 917 */
nuclear@0 918 #define AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE "IMPORT_IFC_SMOOTHING_ANGLE"
nuclear@0 919
nuclear@0 920 // default value for AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE
nuclear@0 921 #if (!defined AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE)
nuclear@0 922 # define AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE 10.0f
nuclear@0 923 #endif
nuclear@0 924
nuclear@0 925 // ---------------------------------------------------------------------------
nuclear@0 926 /** @brief Set the tessellation for IFC cylindrical shapes.
nuclear@0 927 *
nuclear@0 928 * This is used by the IFC importer to determine the tessellation parameter
nuclear@0 929 * for cylindrical shapes, i.e. the number of segments used to approximate a circle.
nuclear@0 930 * @note The default value is AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION and the
nuclear@0 931 * accepted values are in range [3, 180].
nuclear@0 932 * Property type: Integer.
nuclear@0 933 */
nuclear@0 934 #define AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION "IMPORT_IFC_CYLINDRICAL_TESSELLATION"
nuclear@0 935
nuclear@0 936 // default value for AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION
nuclear@0 937 #if (!defined AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION)
nuclear@0 938 # define AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION 32
nuclear@0 939 #endif
nuclear@0 940
nuclear@0 941 // ---------------------------------------------------------------------------
nuclear@0 942 /** @brief Specifies whether the Collada loader will ignore the provided up direction.
nuclear@0 943 *
nuclear@0 944 * If this property is set to true, the up direction provided in the file header will
nuclear@0 945 * be ignored and the file will be loaded as is.
nuclear@0 946 * Property type: Bool. Default value: false.
nuclear@0 947 */
nuclear@0 948 #define AI_CONFIG_IMPORT_COLLADA_IGNORE_UP_DIRECTION "IMPORT_COLLADA_IGNORE_UP_DIRECTION"
nuclear@0 949
nuclear@0 950 // ---------------------------------------------------------------------------
nuclear@0 951 /** @brief Specifies whether the Collada loader should use Collada names as node names.
nuclear@0 952 *
nuclear@0 953 * If this property is set to true, the Collada names will be used as the
nuclear@0 954 * node name. The default is to use the id tag (resp. sid tag, if no id tag is present)
nuclear@0 955 * instead.
nuclear@0 956 * Property type: Bool. Default value: false.
nuclear@0 957 */
nuclear@0 958 #define AI_CONFIG_IMPORT_COLLADA_USE_COLLADA_NAMES "IMPORT_COLLADA_USE_COLLADA_NAMES"
nuclear@0 959
nuclear@0 960 // ---------- All the Export defines ------------
nuclear@0 961
nuclear@0 962 /** @brief Specifies the xfile use double for real values of float
nuclear@0 963 *
nuclear@0 964 * Property type: Bool. Default value: false.
nuclear@0 965 */
nuclear@0 966
nuclear@0 967 #define AI_CONFIG_EXPORT_XFILE_64BIT "EXPORT_XFILE_64BIT"
nuclear@0 968
nuclear@0 969 /**
nuclear@0 970 *
nuclear@0 971 */
nuclear@0 972 #define AI_CONFIG_EXPORT_POINT_CLOUDS "EXPORT_POINT_CLOUDS"
nuclear@0 973
nuclear@0 974 /**
nuclear@0 975 * @brief Specifies a gobal key factor for scale, float value
nuclear@0 976 */
nuclear@0 977 #define AI_CONFIG_GLOBAL_SCALE_FACTOR_KEY "GLOBAL_SCALE_FACTOR"
nuclear@0 978
nuclear@0 979 #if (!defined AI_CONFIG_GLOBAL_SCALE_FACTOR_DEFAULT)
nuclear@0 980 # define AI_CONFIG_GLOBAL_SCALE_FACTOR_DEFAULT 1.0f
nuclear@0 981 #endif // !! AI_DEBONE_THRESHOLD
nuclear@0 982
nuclear@0 983 // ---------- All the Build/Compile-time defines ------------
nuclear@0 984
nuclear@0 985 /** @brief Specifies if double precision is supported inside assimp
nuclear@0 986 *
nuclear@0 987 * Property type: Bool. Default value: undefined.
nuclear@0 988 */
nuclear@0 989
nuclear@0 990 /* #undef ASSIMP_DOUBLE_PRECISION */
nuclear@0 991
nuclear@0 992 #endif // !! AI_CONFIG_H_INC