From a949102dd14d92532644cae8696d04bc8aa5a646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= <christian.stromme@qt.io> Date: Tue, 20 Aug 2019 17:01:42 +0200 Subject: [PATCH] Re-add assimp Assimp is now a submodule, and configure options have been added to make it possible to select the supplied version, the system version, or non. Change-Id: If9930c5e65d6e087fd918d61e6d367ca0fc3a4e0 Reviewed-by: Andy Nichols <andy.nichols@qt.io> --- .gitmodules | 3 + config.tests/assimp/assimp.pro | 1 + config.tests/assimp/main.cpp | 49 + config_help.txt | 3 + configure.json | 5 + src/3rdparty/assimp/assimp.pri | 576 +++++----- src/3rdparty/assimp/config.h | 992 ++++++++++++++++++ src/3rdparty/assimp/revision.h | 15 +- src/3rdparty/assimp/src | 1 + src/plugins/assetimporters/assetimporters.pro | 3 + src/plugins/assetimporters/assimp/assimp.pro | 9 +- src/plugins/assetimporters/configure.json | 48 + 12 files changed, 1406 insertions(+), 299 deletions(-) create mode 100644 .gitmodules create mode 100644 config.tests/assimp/assimp.pro create mode 100644 config.tests/assimp/main.cpp create mode 100644 config_help.txt create mode 100644 configure.json create mode 100644 src/3rdparty/assimp/config.h create mode 160000 src/3rdparty/assimp/src create mode 100644 src/plugins/assetimporters/configure.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..340e872f8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/3rdparty/assimp/src"] + path = src/3rdparty/assimp/src + url = https://github.com/assimp/assimp.git diff --git a/config.tests/assimp/assimp.pro b/config.tests/assimp/assimp.pro new file mode 100644 index 000000000..28dcadcbf --- /dev/null +++ b/config.tests/assimp/assimp.pro @@ -0,0 +1 @@ +SOURCES += main.cpp diff --git a/config.tests/assimp/main.cpp b/config.tests/assimp/main.cpp new file mode 100644 index 000000000..8d5e86f85 --- /dev/null +++ b/config.tests/assimp/main.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <assimp/cimport.h> +#include <assimp/scene.h> +#include <assimp/postprocess.h> +#include <assimp/Importer.hpp> +#include <assimp/DefaultLogger.hpp> +#include <assimp/anim.h> + +int main(int , char **) +{ + Assimp::Importer importer; + Assimp::DefaultLogger::create("AssimpLog.txt", Assimp::Logger::VERBOSE); + + // SET THIS TO REMOVE POINTS AND LINES -> HAVE ONLY TRIANGLES + importer.SetPropertyInteger(AI_CONFIG_PP_SBP_REMOVE, aiPrimitiveType_LINE|aiPrimitiveType_POINT); + + // Check for new version by setting animation morph channels. + aiAnimation anim; + anim.mNumMorphMeshChannels = 0; + + return 0; +} diff --git a/config_help.txt b/config_help.txt new file mode 100644 index 000000000..453b1a9e1 --- /dev/null +++ b/config_help.txt @@ -0,0 +1,3 @@ +QtQuick3D options: + + -assimp .............. Select used assimp library [system/qt/no] diff --git a/configure.json b/configure.json new file mode 100644 index 000000000..fb93e060b --- /dev/null +++ b/configure.json @@ -0,0 +1,5 @@ +{ + "subconfigs": [ + "src/plugins/assetimporters" + ] +} diff --git a/src/3rdparty/assimp/assimp.pri b/src/3rdparty/assimp/assimp.pri index dd46503da..dee1601bc 100644 --- a/src/3rdparty/assimp/assimp.pri +++ b/src/3rdparty/assimp/assimp.pri @@ -3,6 +3,8 @@ CONFIG += exceptions rtti CONFIG -= precompile_header +ASSIMP_SRC = $$PWD/src + win32:DEFINES+=_CRT_SECURE_NO_WARNINGS qtConfig(system-zlib):!if(cross_compile:host_build): \ @@ -100,312 +102,316 @@ msvc: QMAKE_CXXFLAGS += /bigobj CONFIG += warn_on VPATH += \ - $$PWD \ - $$PWD/code \ - $$PWD/code/res + $$ASSIMP_SRC \ + $$ASSIMP_SRC/code \ + $$ASSIMP_SRC/code/res INCLUDEPATH += \ $$PWD \ - $$PWD/code \ - $$PWD/include \ - $$PWD/include/assimp/Compiler + $$PWD/.. \ + $$ASSIMP_SRC \ + $$ASSIMP_SRC/code \ + $$ASSIMP_SRC/include \ + $$ASSIMP_SRC/include/assimp/Compiler + +HEADERS += \ + $$PWD/config.h \ + $$PWD/revision.h HEADERS += \ - revision.h \ - include/assimp/Compiler/pushpack1.h \ - include/assimp/Compiler/poppack1.h \ - include/assimp/Compiler/pstdint.h \ - include/assimp/anim.h \ - include/assimp/ai_assert.h \ - include/assimp/camera.h \ - include/assimp/color4.h \ - include/assimp/color4.inl \ - include/assimp/config.h \ - include/assimp/defs.h \ - include/assimp/Defines.h \ - include/assimp/cfileio.h \ - include/assimp/light.h \ - include/assimp/material.h \ - include/assimp/material.inl \ - include/assimp/matrix3x3.h \ - include/assimp/matrix3x3.inl \ - include/assimp/matrix4x4.h \ - include/assimp/matrix4x4.inl \ - include/assimp/mesh.h \ - include/assimp/pbrmaterial.h \ - include/assimp/postprocess.h \ - include/assimp/quaternion.h \ - include/assimp/quaternion.inl \ - include/assimp/scene.h \ - include/assimp/metadata.h \ - include/assimp/texture.h \ - include/assimp/types.h \ - include/assimp/vector2.h \ - include/assimp/vector2.inl \ - include/assimp/vector3.h \ - include/assimp/vector3.inl \ - include/assimp/version.h \ - include/assimp/cimport.h \ - include/assimp/importerdesc.h \ - include/assimp/Importer.hpp \ - include/assimp/DefaultLogger.hpp \ - include/assimp/ProgressHandler.hpp \ - include/assimp/IOStream.hpp \ - include/assimp/IOSystem.hpp \ - include/assimp/Logger.hpp \ - include/assimp/LogStream.hpp \ - include/assimp/NullLogger.hpp \ - include/assimp/cexport.h \ - include/assimp/Exporter.hpp \ - include/assimp/DefaultIOStream.h \ - include/assimp/DefaultIOSystem.h \ - include/assimp/SceneCombiner.h \ - include/assimp/fast_atof.h \ - include/assimp/qnan.h \ - include/assimp/BaseImporter.h \ - include/assimp/Hash.h \ - include/assimp/MemoryIOWrapper.h \ - include/assimp/ParsingUtils.h \ - include/assimp/StreamReader.h \ - include/assimp/StreamWriter.h \ - include/assimp/StringComparison.h \ - include/assimp/StringUtils.h \ - include/assimp/SGSpatialSort.h \ - include/assimp/GenericProperty.h \ - include/assimp/SpatialSort.h \ - include/assimp/SkeletonMeshBuilder.h \ - include/assimp/SmoothingGroups.h \ - include/assimp/SmoothingGroups.inl \ - include/assimp/StandardShapes.h \ - include/assimp/RemoveComments.h \ - include/assimp/Subdivision.h \ - include/assimp/Vertex.h \ - include/assimp/LineSplitter.h \ - include/assimp/TinyFormatter.h \ - include/assimp/Profiler.h \ - include/assimp/LogAux.h \ - include/assimp/Bitmap.h \ - include/assimp/XMLTools.h \ - include/assimp/IOStreamBuffer.h \ - include/assimp/CreateAnimMesh.h \ - include/assimp/irrXMLWrapper.h \ - include/assimp/BlobIOSystem.h \ - include/assimp/MathFunctions.h \ - include/assimp/Macros.h \ - include/assimp/Exceptional.h \ - include/assimp/ByteSwapper.h \ - include/assimp/DefaultLogger.hpp \ - include/assimp/LogStream.hpp \ - include/assimp/Logger.hpp \ - include/assimp/NullLogger.hpp \ - code/FileLogStream.h \ - code/StdOStreamLogStream.h \ - code/BaseProcess.h \ - code/Importer.h \ - code/ScenePrivate.h \ - code/DefaultProgressHandler.h \ - code/CInterfaceIOWrapper.h \ - code/IFF.h \ - code/VertexTriangleAdjacency.h \ - code/ScenePreprocessor.h \ - code/SplitByBoneCountProcess.h \ - code/TargetAnimation.h \ - code/simd.h \ - code/ColladaHelper.h \ - code/ColladaLoader.h \ - code/ColladaParser.h \ - code/MaterialSystem.h \ - code/ObjFileData.h \ - code/ObjFileImporter.h \ - code/ObjFileMtlImporter.h \ - code/ObjFileParser.h \ - code/ObjTools.h \ - code/BlenderLoader.h \ - code/BlenderDNA.h \ - code/BlenderDNA.inl \ - code/BlenderScene.h \ - code/BlenderSceneGen.h \ - code/BlenderIntermediate.h \ - code/BlenderModifier.h \ - code/BlenderBMesh.h \ - code/BlenderTessellator.h \ - code/BlenderCustomData.h \ - code/FBXCompileConfig.h \ - code/FBXImporter.h \ - code/FBXParser.h \ - code/FBXTokenizer.h \ - code/FBXImportSettings.h \ - code/FBXConverter.h \ - code/FBXUtil.h \ - code/FBXDocument.h \ - code/FBXProperties.h \ - code/FBXMeshGeometry.h \ - code/FBXCommon.h \ - code/CalcTangentsProcess.h \ - code/ComputeUVMappingProcess.h \ - code/ConvertToLHProcess.h \ - code/EmbedTexturesProcess.h \ - code/FindDegenerates.h \ - code/FindInstancesProcess.h \ - code/FindInvalidDataProcess.h \ - code/FixNormalsStep.h \ - code/DropFaceNormalsProcess.h \ - code/GenFaceNormalsProcess.h \ - code/GenVertexNormalsProcess.h \ - code/PretransformVertices.h \ - code/ImproveCacheLocality.h \ - code/JoinVerticesProcess.h \ - code/LimitBoneWeightsProcess.h \ - code/RemoveRedundantMaterials.h \ - code/RemoveVCProcess.h \ - code/SortByPTypeProcess.h \ - code/SplitLargeMeshes.h \ - code/TextureTransform.h \ - code/TriangulateProcess.h \ - code/ValidateDataStructure.h \ - code/OptimizeGraph.h \ - code/OptimizeMeshes.h \ - code/DeboneProcess.h \ - code/ProcessHelper.h \ - code/PolyTools.h \ - code/MakeVerboseFormat.h \ - code/ScaleProcess.h \ - code/glTFAsset.h \ - code/glTFAsset.inl \ - code/glTFAssetWriter.inl \ - code/glTFAssetWriter.h \ - code/glTFImporter.h \ - code/glTF2AssetWriter.h \ - code/glTF2Asset.h \ - code/glTF2Asset.inl \ - code/glTF2AssetWriter.inl \ - code/glTF2Importer.h + $$ASSIMP_SRC/include/assimp/Compiler/pushpack1.h \ + $$ASSIMP_SRC/include/assimp/Compiler/poppack1.h \ + $$ASSIMP_SRC/include/assimp/Compiler/pstdint.h \ + $$ASSIMP_SRC/include/assimp/anim.h \ + $$ASSIMP_SRC/include/assimp/ai_assert.h \ + $$ASSIMP_SRC/include/assimp/camera.h \ + $$ASSIMP_SRC/include/assimp/color4.h \ + $$ASSIMP_SRC/include/assimp/color4.inl \ + $$ASSIMP_SRC/include/assimp/defs.h \ + $$ASSIMP_SRC/include/assimp/Defines.h \ + $$ASSIMP_SRC/include/assimp/cfileio.h \ + $$ASSIMP_SRC/include/assimp/light.h \ + $$ASSIMP_SRC/include/assimp/material.h \ + $$ASSIMP_SRC/include/assimp/material.inl \ + $$ASSIMP_SRC/include/assimp/matrix3x3.h \ + $$ASSIMP_SRC/include/assimp/matrix3x3.inl \ + $$ASSIMP_SRC/include/assimp/matrix4x4.h \ + $$ASSIMP_SRC/include/assimp/matrix4x4.inl \ + $$ASSIMP_SRC/include/assimp/mesh.h \ + $$ASSIMP_SRC/include/assimp/pbrmaterial.h \ + $$ASSIMP_SRC/include/assimp/postprocess.h \ + $$ASSIMP_SRC/include/assimp/quaternion.h \ + $$ASSIMP_SRC/include/assimp/quaternion.inl \ + $$ASSIMP_SRC/include/assimp/scene.h \ + $$ASSIMP_SRC/include/assimp/metadata.h \ + $$ASSIMP_SRC/include/assimp/texture.h \ + $$ASSIMP_SRC/include/assimp/types.h \ + $$ASSIMP_SRC/include/assimp/vector2.h \ + $$ASSIMP_SRC/include/assimp/vector2.inl \ + $$ASSIMP_SRC/include/assimp/vector3.h \ + $$ASSIMP_SRC/include/assimp/vector3.inl \ + $$ASSIMP_SRC/include/assimp/version.h \ + $$ASSIMP_SRC/include/assimp/cimport.h \ + $$ASSIMP_SRC/include/assimp/importerdesc.h \ + $$ASSIMP_SRC/include/assimp/Importer.hpp \ + $$ASSIMP_SRC/include/assimp/DefaultLogger.hpp \ + $$ASSIMP_SRC/include/assimp/ProgressHandler.hpp \ + $$ASSIMP_SRC/include/assimp/IOStream.hpp \ + $$ASSIMP_SRC/include/assimp/IOSystem.hpp \ + $$ASSIMP_SRC/include/assimp/Logger.hpp \ + $$ASSIMP_SRC/include/assimp/LogStream.hpp \ + $$ASSIMP_SRC/include/assimp/NullLogger.hpp \ + $$ASSIMP_SRC/include/assimp/cexport.h \ + $$ASSIMP_SRC/include/assimp/Exporter.hpp \ + $$ASSIMP_SRC/include/assimp/DefaultIOStream.h \ + $$ASSIMP_SRC/include/assimp/DefaultIOSystem.h \ + $$ASSIMP_SRC/include/assimp/SceneCombiner.h \ + $$ASSIMP_SRC/include/assimp/fast_atof.h \ + $$ASSIMP_SRC/include/assimp/qnan.h \ + $$ASSIMP_SRC/include/assimp/BaseImporter.h \ + $$ASSIMP_SRC/include/assimp/Hash.h \ + $$ASSIMP_SRC/include/assimp/MemoryIOWrapper.h \ + $$ASSIMP_SRC/include/assimp/ParsingUtils.h \ + $$ASSIMP_SRC/include/assimp/StreamReader.h \ + $$ASSIMP_SRC/include/assimp/StreamWriter.h \ + $$ASSIMP_SRC/include/assimp/StringComparison.h \ + $$ASSIMP_SRC/include/assimp/StringUtils.h \ + $$ASSIMP_SRC/include/assimp/SGSpatialSort.h \ + $$ASSIMP_SRC/include/assimp/GenericProperty.h \ + $$ASSIMP_SRC/include/assimp/SpatialSort.h \ + $$ASSIMP_SRC/include/assimp/SkeletonMeshBuilder.h \ + $$ASSIMP_SRC/include/assimp/SmoothingGroups.h \ + $$ASSIMP_SRC/include/assimp/SmoothingGroups.inl \ + $$ASSIMP_SRC/include/assimp/StandardShapes.h \ + $$ASSIMP_SRC/include/assimp/RemoveComments.h \ + $$ASSIMP_SRC/include/assimp/Subdivision.h \ + $$ASSIMP_SRC/include/assimp/Vertex.h \ + $$ASSIMP_SRC/include/assimp/LineSplitter.h \ + $$ASSIMP_SRC/include/assimp/TinyFormatter.h \ + $$ASSIMP_SRC/include/assimp/Profiler.h \ + $$ASSIMP_SRC/include/assimp/LogAux.h \ + $$ASSIMP_SRC/include/assimp/Bitmap.h \ + $$ASSIMP_SRC/include/assimp/XMLTools.h \ + $$ASSIMP_SRC/include/assimp/IOStreamBuffer.h \ + $$ASSIMP_SRC/include/assimp/CreateAnimMesh.h \ + $$ASSIMP_SRC/include/assimp/irrXMLWrapper.h \ + $$ASSIMP_SRC/include/assimp/BlobIOSystem.h \ + $$ASSIMP_SRC/include/assimp/MathFunctions.h \ + $$ASSIMP_SRC/include/assimp/Macros.h \ + $$ASSIMP_SRC/include/assimp/Exceptional.h \ + $$ASSIMP_SRC/include/assimp/ByteSwapper.h \ + $$ASSIMP_SRC/include/assimp/DefaultLogger.hpp \ + $$ASSIMP_SRC/include/assimp/LogStream.hpp \ + $$ASSIMP_SRC/include/assimp/Logger.hpp \ + $$ASSIMP_SRC/include/assimp/NullLogger.hpp \ + $$ASSIMP_SRC/code/FileLogStream.h \ + $$ASSIMP_SRC/code/StdOStreamLogStream.h \ + $$ASSIMP_SRC/code/BaseProcess.h \ + $$ASSIMP_SRC/code/Importer.h \ + $$ASSIMP_SRC/code/ScenePrivate.h \ + $$ASSIMP_SRC/code/DefaultProgressHandler.h \ + $$ASSIMP_SRC/code/CInterfaceIOWrapper.h \ + $$ASSIMP_SRC/code/IFF.h \ + $$ASSIMP_SRC/code/VertexTriangleAdjacency.h \ + $$ASSIMP_SRC/code/ScenePreprocessor.h \ + $$ASSIMP_SRC/code/SplitByBoneCountProcess.h \ + $$ASSIMP_SRC/code/TargetAnimation.h \ + $$ASSIMP_SRC/code/simd.h \ + $$ASSIMP_SRC/code/ColladaHelper.h \ + $$ASSIMP_SRC/code/ColladaLoader.h \ + $$ASSIMP_SRC/code/ColladaParser.h \ + $$ASSIMP_SRC/code/MaterialSystem.h \ + $$ASSIMP_SRC/code/ObjFileData.h \ + $$ASSIMP_SRC/code/ObjFileImporter.h \ + $$ASSIMP_SRC/code/ObjFileMtlImporter.h \ + $$ASSIMP_SRC/code/ObjFileParser.h \ + $$ASSIMP_SRC/code/ObjTools.h \ + $$ASSIMP_SRC/code/BlenderLoader.h \ + $$ASSIMP_SRC/code/BlenderDNA.h \ + $$ASSIMP_SRC/code/BlenderDNA.inl \ + $$ASSIMP_SRC/code/BlenderScene.h \ + $$ASSIMP_SRC/code/BlenderSceneGen.h \ + $$ASSIMP_SRC/code/BlenderIntermediate.h \ + $$ASSIMP_SRC/code/BlenderModifier.h \ + $$ASSIMP_SRC/code/BlenderBMesh.h \ + $$ASSIMP_SRC/code/BlenderTessellator.h \ + $$ASSIMP_SRC/code/BlenderCustomData.h \ + $$ASSIMP_SRC/code/FBXCompileConfig.h \ + $$ASSIMP_SRC/code/FBXImporter.h \ + $$ASSIMP_SRC/code/FBXParser.h \ + $$ASSIMP_SRC/code/FBXTokenizer.h \ + $$ASSIMP_SRC/code/FBXImportSettings.h \ + $$ASSIMP_SRC/code/FBXConverter.h \ + $$ASSIMP_SRC/code/FBXUtil.h \ + $$ASSIMP_SRC/code/FBXDocument.h \ + $$ASSIMP_SRC/code/FBXProperties.h \ + $$ASSIMP_SRC/code/FBXMeshGeometry.h \ + $$ASSIMP_SRC/code/FBXCommon.h \ + $$ASSIMP_SRC/code/CalcTangentsProcess.h \ + $$ASSIMP_SRC/code/ComputeUVMappingProcess.h \ + $$ASSIMP_SRC/code/ConvertToLHProcess.h \ + $$ASSIMP_SRC/code/EmbedTexturesProcess.h \ + $$ASSIMP_SRC/code/FindDegenerates.h \ + $$ASSIMP_SRC/code/FindInstancesProcess.h \ + $$ASSIMP_SRC/code/FindInvalidDataProcess.h \ + $$ASSIMP_SRC/code/FixNormalsStep.h \ + $$ASSIMP_SRC/code/DropFaceNormalsProcess.h \ + $$ASSIMP_SRC/code/GenFaceNormalsProcess.h \ + $$ASSIMP_SRC/code/GenVertexNormalsProcess.h \ + $$ASSIMP_SRC/code/PretransformVertices.h \ + $$ASSIMP_SRC/code/ImproveCacheLocality.h \ + $$ASSIMP_SRC/code/JoinVerticesProcess.h \ + $$ASSIMP_SRC/code/LimitBoneWeightsProcess.h \ + $$ASSIMP_SRC/code/RemoveRedundantMaterials.h \ + $$ASSIMP_SRC/code/RemoveVCProcess.h \ + $$ASSIMP_SRC/code/SortByPTypeProcess.h \ + $$ASSIMP_SRC/code/SplitLargeMeshes.h \ + $$ASSIMP_SRC/code/TextureTransform.h \ + $$ASSIMP_SRC/code/TriangulateProcess.h \ + $$ASSIMP_SRC/code/ValidateDataStructure.h \ + $$ASSIMP_SRC/code/OptimizeGraph.h \ + $$ASSIMP_SRC/code/OptimizeMeshes.h \ + $$ASSIMP_SRC/code/DeboneProcess.h \ + $$ASSIMP_SRC/code/ProcessHelper.h \ + $$ASSIMP_SRC/code/PolyTools.h \ + $$ASSIMP_SRC/code/MakeVerboseFormat.h \ + $$ASSIMP_SRC/code/ScaleProcess.h \ + $$ASSIMP_SRC/code/glTFAsset.h \ + $$ASSIMP_SRC/code/glTFAsset.inl \ + $$ASSIMP_SRC/code/glTFAssetWriter.inl \ + $$ASSIMP_SRC/code/glTFAssetWriter.h \ + $$ASSIMP_SRC/code/glTFImporter.h \ + $$ASSIMP_SRC/code/glTF2AssetWriter.h \ + $$ASSIMP_SRC/code/glTF2Asset.h \ + $$ASSIMP_SRC/code/glTF2Asset.inl \ + $$ASSIMP_SRC/code/glTF2AssetWriter.inl \ + $$ASSIMP_SRC/code/glTF2Importer.h SOURCES += \ - code/Assimp.cpp \ - code/DefaultLogger.cpp \ - code/BaseImporter.cpp \ - code/BaseProcess.cpp \ - code/PostStepRegistry.cpp \ - code/ImporterRegistry.cpp \ - code/DefaultIOStream.cpp \ - code/DefaultIOSystem.cpp \ - code/CInterfaceIOWrapper.cpp \ - code/Importer.cpp \ - code/SGSpatialSort.cpp \ - code/VertexTriangleAdjacency.cpp \ - code/SpatialSort.cpp \ - code/SceneCombiner.cpp \ - code/ScenePreprocessor.cpp \ - code/SkeletonMeshBuilder.cpp \ - code/SplitByBoneCountProcess.cpp \ - code/StandardShapes.cpp \ - code/TargetAnimation.cpp \ - code/RemoveComments.cpp \ - code/Subdivision.cpp \ - code/scene.cpp \ - code/Bitmap.cpp \ - code/Version.cpp \ - code/CreateAnimMesh.cpp \ - code/simd.cpp \ - code/ColladaLoader.cpp \ - code/ColladaParser.cpp \ - code/MaterialSystem.cpp \ - code/ObjFileImporter.cpp \ - code/ObjFileMtlImporter.cpp \ - code/ObjFileParser.cpp \ - code/BlenderLoader.cpp \ - code/BlenderDNA.cpp \ - code/BlenderScene.cpp \ - code/BlenderModifier.cpp \ - code/BlenderBMesh.cpp \ - code/BlenderTessellator.cpp \ - code/BlenderCustomData.cpp \ - code/FBXImporter.cpp \ - code/FBXParser.cpp \ - code/FBXTokenizer.cpp \ - code/FBXConverter.cpp \ - code/FBXUtil.cpp \ - code/FBXDocument.cpp \ - code/FBXProperties.cpp \ - code/FBXMeshGeometry.cpp \ - code/FBXMaterial.cpp \ - code/FBXModel.cpp \ - code/FBXAnimation.cpp \ - code/FBXNodeAttribute.cpp \ - code/FBXDeformer.cpp \ - code/FBXBinaryTokenizer.cpp \ - code/FBXDocumentUtil.cpp \ - code/CalcTangentsProcess.cpp \ - code/ComputeUVMappingProcess.cpp \ - code/ConvertToLHProcess.cpp \ - code/EmbedTexturesProcess.cpp \ - code/FindDegenerates.cpp \ - code/FindInstancesProcess.cpp \ - code/FindInvalidDataProcess.cpp \ - code/FixNormalsStep.cpp \ - code/DropFaceNormalsProcess.cpp \ - code/GenFaceNormalsProcess.cpp \ - code/GenVertexNormalsProcess.cpp \ - code/PretransformVertices.cpp \ - code/ImproveCacheLocality.cpp \ - code/JoinVerticesProcess.cpp \ - code/LimitBoneWeightsProcess.cpp \ - code/RemoveRedundantMaterials.cpp \ - code/RemoveVCProcess.cpp \ - code/SortByPTypeProcess.cpp \ - code/SplitLargeMeshes.cpp \ - code/TextureTransform.cpp \ - code/TriangulateProcess.cpp \ - code/ValidateDataStructure.cpp \ - code/OptimizeGraph.cpp \ - code/OptimizeMeshes.cpp \ - code/DeboneProcess.cpp \ - code/ProcessHelper.cpp \ - code/MakeVerboseFormat.cpp \ - code/ScaleProcess.cpp \ - code/glTFImporter.cpp \ - code/glTF2Importer.cpp + $$ASSIMP_SRC/code/Assimp.cpp \ + $$ASSIMP_SRC/code/DefaultLogger.cpp \ + $$ASSIMP_SRC/code/BaseImporter.cpp \ + $$ASSIMP_SRC/code/BaseProcess.cpp \ + $$ASSIMP_SRC/code/PostStepRegistry.cpp \ + $$ASSIMP_SRC/code/ImporterRegistry.cpp \ + $$ASSIMP_SRC/code/DefaultIOStream.cpp \ + $$ASSIMP_SRC/code/DefaultIOSystem.cpp \ + $$ASSIMP_SRC/code/CInterfaceIOWrapper.cpp \ + $$ASSIMP_SRC/code/Importer.cpp \ + $$ASSIMP_SRC/code/SGSpatialSort.cpp \ + $$ASSIMP_SRC/code/VertexTriangleAdjacency.cpp \ + $$ASSIMP_SRC/code/SpatialSort.cpp \ + $$ASSIMP_SRC/code/SceneCombiner.cpp \ + $$ASSIMP_SRC/code/ScenePreprocessor.cpp \ + $$ASSIMP_SRC/code/SkeletonMeshBuilder.cpp \ + $$ASSIMP_SRC/code/SplitByBoneCountProcess.cpp \ + $$ASSIMP_SRC/code/StandardShapes.cpp \ + $$ASSIMP_SRC/code/TargetAnimation.cpp \ + $$ASSIMP_SRC/code/RemoveComments.cpp \ + $$ASSIMP_SRC/code/Subdivision.cpp \ + $$ASSIMP_SRC/code/scene.cpp \ + $$ASSIMP_SRC/code/Bitmap.cpp \ + $$ASSIMP_SRC/code/Version.cpp \ + $$ASSIMP_SRC/code/CreateAnimMesh.cpp \ + $$ASSIMP_SRC/code/simd.cpp \ + $$ASSIMP_SRC/code/ColladaLoader.cpp \ + $$ASSIMP_SRC/code/ColladaParser.cpp \ + $$ASSIMP_SRC/code/MaterialSystem.cpp \ + $$ASSIMP_SRC/code/ObjFileImporter.cpp \ + $$ASSIMP_SRC/code/ObjFileMtlImporter.cpp \ + $$ASSIMP_SRC/code/ObjFileParser.cpp \ + $$ASSIMP_SRC/code/BlenderLoader.cpp \ + $$ASSIMP_SRC/code/BlenderDNA.cpp \ + $$ASSIMP_SRC/code/BlenderScene.cpp \ + $$ASSIMP_SRC/code/BlenderModifier.cpp \ + $$ASSIMP_SRC/code/BlenderBMesh.cpp \ + $$ASSIMP_SRC/code/BlenderTessellator.cpp \ + $$ASSIMP_SRC/code/BlenderCustomData.cpp \ + $$ASSIMP_SRC/code/FBXImporter.cpp \ + $$ASSIMP_SRC/code/FBXParser.cpp \ + $$ASSIMP_SRC/code/FBXTokenizer.cpp \ + $$ASSIMP_SRC/code/FBXConverter.cpp \ + $$ASSIMP_SRC/code/FBXUtil.cpp \ + $$ASSIMP_SRC/code/FBXDocument.cpp \ + $$ASSIMP_SRC/code/FBXProperties.cpp \ + $$ASSIMP_SRC/code/FBXMeshGeometry.cpp \ + $$ASSIMP_SRC/code/FBXMaterial.cpp \ + $$ASSIMP_SRC/code/FBXModel.cpp \ + $$ASSIMP_SRC/code/FBXAnimation.cpp \ + $$ASSIMP_SRC/code/FBXNodeAttribute.cpp \ + $$ASSIMP_SRC/code/FBXDeformer.cpp \ + $$ASSIMP_SRC/code/FBXBinaryTokenizer.cpp \ + $$ASSIMP_SRC/code/FBXDocumentUtil.cpp \ + $$ASSIMP_SRC/code/CalcTangentsProcess.cpp \ + $$ASSIMP_SRC/code/ComputeUVMappingProcess.cpp \ + $$ASSIMP_SRC/code/ConvertToLHProcess.cpp \ + $$ASSIMP_SRC/code/EmbedTexturesProcess.cpp \ + $$ASSIMP_SRC/code/FindDegenerates.cpp \ + $$ASSIMP_SRC/code/FindInstancesProcess.cpp \ + $$ASSIMP_SRC/code/FindInvalidDataProcess.cpp \ + $$ASSIMP_SRC/code/FixNormalsStep.cpp \ + $$ASSIMP_SRC/code/DropFaceNormalsProcess.cpp \ + $$ASSIMP_SRC/code/GenFaceNormalsProcess.cpp \ + $$ASSIMP_SRC/code/GenVertexNormalsProcess.cpp \ + $$ASSIMP_SRC/code/PretransformVertices.cpp \ + $$ASSIMP_SRC/code/ImproveCacheLocality.cpp \ + $$ASSIMP_SRC/code/JoinVerticesProcess.cpp \ + $$ASSIMP_SRC/code/LimitBoneWeightsProcess.cpp \ + $$ASSIMP_SRC/code/RemoveRedundantMaterials.cpp \ + $$ASSIMP_SRC/code/RemoveVCProcess.cpp \ + $$ASSIMP_SRC/code/SortByPTypeProcess.cpp \ + $$ASSIMP_SRC/code/SplitLargeMeshes.cpp \ + $$ASSIMP_SRC/code/TextureTransform.cpp \ + $$ASSIMP_SRC/code/TriangulateProcess.cpp \ + $$ASSIMP_SRC/code/ValidateDataStructure.cpp \ + $$ASSIMP_SRC/code/OptimizeGraph.cpp \ + $$ASSIMP_SRC/code/OptimizeMeshes.cpp \ + $$ASSIMP_SRC/code/DeboneProcess.cpp \ + $$ASSIMP_SRC/code/ProcessHelper.cpp \ + $$ASSIMP_SRC/code/MakeVerboseFormat.cpp \ + $$ASSIMP_SRC/code/ScaleProcess.cpp \ + $$ASSIMP_SRC/code/glTFImporter.cpp \ + $$ASSIMP_SRC/code/glTF2Importer.cpp # IrrXML (needed for DAE/Collada support) HEADERS += \ - contrib/irrXML/CXMLReaderImpl.h \ - contrib/irrXML/heapsort.h \ - contrib/irrXML/irrArray.h \ - contrib/irrXML/irrString.h \ - contrib/irrXML/irrTypes.h \ - contrib/irrXML/irrXML.h + $$ASSIMP_SRC/contrib/irrXML/CXMLReaderImpl.h \ + $$ASSIMP_SRC/contrib/irrXML/heapsort.h \ + $$ASSIMP_SRC/contrib/irrXML/irrArray.h \ + $$ASSIMP_SRC/contrib/irrXML/irrString.h \ + $$ASSIMP_SRC/contrib/irrXML/irrTypes.h \ + $$ASSIMP_SRC/contrib/irrXML/irrXML.h -SOURCES += contrib/irrXML/irrXML.cpp +SOURCES += $$ASSIMP_SRC/contrib/irrXML/irrXML.cpp -VPATH += $$PWD/contrib/irrXML -INCLUDEPATH += $$PWD/contrib/irrXML +VPATH += $$ASSIMP_SRC/contrib/irrXML +INCLUDEPATH += $$ASSIMP_SRC/contrib/irrXML msvc: DEFINES += _SCL_SECURE_NO_WARNINGS _CRT_SECURE_NO_WARNINGS # rapidjson (needed for GLTF/GLTF2) -VPATH += $$PWD/contrib/rapidjson/include -INCLUDEPATH += $$PWD/contrib/rapidjson/include +VPATH += $$ASSIMP_SRC/contrib/rapidjson/include +INCLUDEPATH += $$ASSIMP_SRC/contrib/rapidjson/include # utf8cpp -VPATH += $$PWD/contrib/utf8cpp/source -INCLUDEPATH += $$PWD/contrib/utf8cpp/source +VPATH += $$ASSIMP_SRC/contrib/utf8cpp/source +INCLUDEPATH += $$ASSIMP_SRC/contrib/utf8cpp/source # poly2tri (blender tessellator) -VPATH += $$PWD/contrib/poly2tri -INCLUDEPATH += $$PWD/contrib/poly2tri +VPATH += $$ASSIMP_SRC/contrib/poly2tri +INCLUDEPATH += $$ASSIMP_SRC/contrib/poly2tri HEADERS += \ - contrib/poly2tri/poly2tri/common/shapes.h \ - contrib/poly2tri/poly2tri/common/utils.h \ - contrib/poly2tri/poly2tri/sweep/advancing_front.h \ - contrib/poly2tri/poly2tri/sweep/cdt.h \ - contrib/poly2tri/poly2tri/sweep/sweep.h \ - contrib/poly2tri/poly2tri/sweep/sweep_context.h + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/common/shapes.h \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/common/utils.h \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/advancing_front.h \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/cdt.h \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/sweep.h \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/sweep_context.h SOURCES += \ - contrib/poly2tri/poly2tri/common/shapes.cc \ - contrib/poly2tri/poly2tri/sweep/advancing_front.cc \ - contrib/poly2tri/poly2tri/sweep/cdt.cc \ - contrib/poly2tri/poly2tri/sweep/sweep.cc \ - contrib/poly2tri/poly2tri/sweep/sweep_context.cc + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/common/shapes.cc \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/advancing_front.cc \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/cdt.cc \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/sweep.cc \ + $$ASSIMP_SRC/contrib/poly2tri/poly2tri/sweep/sweep_context.cc diff --git a/src/3rdparty/assimp/config.h b/src/3rdparty/assimp/config.h new file mode 100644 index 000000000..c75a419dd --- /dev/null +++ b/src/3rdparty/assimp/config.h @@ -0,0 +1,992 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp 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 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. +--------------------------------------------------------------------------- +*/ + +/** @file config.h + * @brief Defines constants for configurable properties for the library + * + * Typically these properties are set via + * #Assimp::Importer::SetPropertyFloat, + * #Assimp::Importer::SetPropertyInteger or + * #Assimp::Importer::SetPropertyString, + * depending on the data type of a property. All properties have a + * default value. See the doc for the mentioned methods for more details. + * + * <br><br> + * The corresponding functions for use with the plain-c API are: + * #aiSetImportPropertyInteger, + * #aiSetImportPropertyFloat, + * #aiSetImportPropertyString + */ +#pragma once +#ifndef AI_CONFIG_H_INC +#define AI_CONFIG_H_INC + + +// ########################################################################### +// LIBRARY SETTINGS +// General, global settings +// ########################################################################### + +// --------------------------------------------------------------------------- +/** @brief Enables time measurements. + * + * If enabled, measures the time needed for each part of the loading + * process (i.e. IO time, importing, postprocessing, ..) and dumps + * these timings to the DefaultLogger. See the @link perf Performance + * Page@endlink for more information on this topic. + * + * Property type: bool. Default value: false. + */ +#define AI_CONFIG_GLOB_MEASURE_TIME \ + "GLOB_MEASURE_TIME" + + +// --------------------------------------------------------------------------- +/** @brief Global setting to disable generation of skeleton dummy meshes + * + * Skeleton dummy meshes are generated as a visualization aid in cases which + * the input data contains no geometry, but only animation data. + * Property data type: bool. Default value: false + */ +// --------------------------------------------------------------------------- +#define AI_CONFIG_IMPORT_NO_SKELETON_MESHES \ + "IMPORT_NO_SKELETON_MESHES" + + + +# if 0 // not implemented yet +// --------------------------------------------------------------------------- +/** @brief Set Assimp's multithreading policy. + * + * This setting is ignored if Assimp was built without boost.thread + * support (ASSIMP_BUILD_NO_THREADING, which is implied by ASSIMP_BUILD_BOOST_WORKAROUND). + * Possible values are: -1 to let Assimp decide what to do, 0 to disable + * multithreading entirely and any number larger than 0 to force a specific + * number of threads. Assimp is always free to ignore this settings, which is + * merely a hint. Usually, the default value (-1) will be fine. However, if + * Assimp is used concurrently from multiple user threads, it might be useful + * to limit each Importer instance to a specific number of cores. + * + * For more information, see the @link threading Threading page@endlink. + * Property type: int, default value: -1. + */ +#define AI_CONFIG_GLOB_MULTITHREADING \ + "GLOB_MULTITHREADING" +#endif + +// ########################################################################### +// POST PROCESSING SETTINGS +// Various stuff to fine-tune the behavior of a specific post processing step. +// ########################################################################### + + +// --------------------------------------------------------------------------- +/** @brief Maximum bone count per mesh for the SplitbyBoneCount step. + * + * Meshes are split until the maximum number of bones is reached. The default + * value is AI_SBBC_DEFAULT_MAX_BONES, which may be altered at + * compile-time. + * Property data type: integer. + */ +// --------------------------------------------------------------------------- +#define AI_CONFIG_PP_SBBC_MAX_BONES \ + "PP_SBBC_MAX_BONES" + + +// default limit for bone count +#if (!defined AI_SBBC_DEFAULT_MAX_BONES) +# define AI_SBBC_DEFAULT_MAX_BONES 60 +#endif + + +// --------------------------------------------------------------------------- +/** @brief Specifies the maximum angle that may be between two vertex tangents + * that their tangents and bi-tangents are smoothed. + * + * This applies to the CalcTangentSpace-Step. The angle is specified + * in degrees. The maximum value is 175. + * Property type: float. Default value: 45 degrees + */ +#define AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE \ + "PP_CT_MAX_SMOOTHING_ANGLE" + +// --------------------------------------------------------------------------- +/** @brief Source UV channel for tangent space computation. + * + * The specified channel must exist or an error will be raised. + * Property type: integer. Default value: 0 + */ +// --------------------------------------------------------------------------- +#define AI_CONFIG_PP_CT_TEXTURE_CHANNEL_INDEX \ + "PP_CT_TEXTURE_CHANNEL_INDEX" + +// --------------------------------------------------------------------------- +/** @brief Specifies the maximum angle that may be between two face normals + * at the same vertex position that their are smoothed together. + * + * Sometimes referred to as 'crease angle'. + * This applies to the GenSmoothNormals-Step. The angle is specified + * in degrees, so 180 is PI. The default value is 175 degrees (all vertex + * normals are smoothed). The maximum value is 175, too. Property type: float. + * Warning: setting this option may cause a severe loss of performance. The + * performance is unaffected if the #AI_CONFIG_FAVOUR_SPEED flag is set but + * the output quality may be reduced. + */ +#define AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE \ + "PP_GSN_MAX_SMOOTHING_ANGLE" + + +// --------------------------------------------------------------------------- +/** @brief Sets the colormap (= palette) to be used to decode embedded + * textures in MDL (Quake or 3DGS) files. + * + * This must be a valid path to a file. The file is 768 (256*3) bytes + * large and contains RGB triplets for each of the 256 palette entries. + * The default value is colormap.lmp. If the file is not found, + * a default palette (from Quake 1) is used. + * Property type: string. + */ +#define AI_CONFIG_IMPORT_MDL_COLORMAP \ + "IMPORT_MDL_COLORMAP" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_RemoveRedundantMaterials step to + * keep materials matching a name in a given list. + * + * This is a list of 1 to n strings, ' ' serves as delimiter character. + * Identifiers containing whitespaces must be enclosed in *single* + * quotation marks. For example:<tt> + * "keep-me and_me_to anotherMaterialToBeKept \'name with whitespace\'"</tt>. + * If a material matches on of these names, it will not be modified or + * removed by the postprocessing step nor will other materials be replaced + * by a reference to it. <br> + * This option might be useful if you are using some magic material names + * to pass additional semantics through the content pipeline. This ensures + * they won't be optimized away, but a general optimization is still + * performed for materials not contained in the list. + * Property type: String. Default value: n/a + * @note Linefeeds, tabs or carriage returns are treated as whitespace. + * Material names are case sensitive. + */ +#define AI_CONFIG_PP_RRM_EXCLUDE_LIST \ + "PP_RRM_EXCLUDE_LIST" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_PreTransformVertices step to + * keep the scene hierarchy. Meshes are moved to worldspace, but + * no optimization is performed (read: meshes with equal materials are not + * joined. The total number of meshes won't change). + * + * This option could be of use for you if the scene hierarchy contains + * important additional information which you intend to parse. + * For rendering, you can still render all meshes in the scene without + * any transformations. + * Property type: bool. Default value: false. + */ +#define AI_CONFIG_PP_PTV_KEEP_HIERARCHY \ + "PP_PTV_KEEP_HIERARCHY" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_PreTransformVertices step to normalize + * all vertex components into the [-1,1] range. That is, a bounding box + * for the whole scene is computed, the maximum component is taken and all + * meshes are scaled appropriately (uniformly of course!). + * This might be useful if you don't know the spatial dimension of the input + * data*/ +#define AI_CONFIG_PP_PTV_NORMALIZE \ + "PP_PTV_NORMALIZE" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_PreTransformVertices step to use + * a users defined matrix as the scene root node transformation before + * transforming vertices. + * Property type: bool. Default value: false. + */ +#define AI_CONFIG_PP_PTV_ADD_ROOT_TRANSFORMATION \ + "PP_PTV_ADD_ROOT_TRANSFORMATION" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_PreTransformVertices step to use + * a users defined matrix as the scene root node transformation before + * transforming vertices. This property correspond to the 'a1' component + * of the transformation matrix. + * Property type: aiMatrix4x4. + */ +#define AI_CONFIG_PP_PTV_ROOT_TRANSFORMATION \ + "PP_PTV_ROOT_TRANSFORMATION" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_FindDegenerates step to + * remove degenerated primitives from the import - immediately. + * + * The default behaviour converts degenerated triangles to lines and + * degenerated lines to points. See the documentation to the + * #aiProcess_FindDegenerates step for a detailed example of the various ways + * to get rid of these lines and points if you don't want them. + * Property type: bool. Default value: false. + */ +#define AI_CONFIG_PP_FD_REMOVE \ + "PP_FD_REMOVE" + +// --------------------------------------------------------------------------- +/** + * @brief Configures the #aiProcess_FindDegenerates to check the area of a + * trinagle to be greates than e-6. If this is not the case the triangle will + * be removed if #AI_CONFIG_PP_FD_REMOVE is set to true. + */ +#define AI_CONFIG_PP_FD_CHECKAREA \ + "PP_FD_CHECKAREA" + +// --------------------------------------------------------------------------- +/** @brief Configures the #aiProcess_OptimizeGraph step to preserve nodes + * matching a name in a given list. + * + * This is a list of 1 to n strings, ' ' serves as delimiter character. + * Identifiers containing whitespaces must be enclosed in *single* + * quotation marks. For example:<tt> + * "keep-me and_me_to anotherNodeToBeKept \'name with whitespace\'"</tt>. + * If a node matches on of these names, it will not be modified or + * removed by the postprocessing step.<br> + * This option might be useful if you are using some magic node names + * to pass additional semantics through the content pipeline. This ensures + * they won't be optimized away, but a general optimization is still + * performed for nodes not contained in the list. + * Property type: String. Default value: n/a + * @note Linefeeds, tabs or carriage returns are treated as whitespace. + * Node names are case sensitive. + */ +#define AI_CONFIG_PP_OG_EXCLUDE_LIST \ + "PP_OG_EXCLUDE_LIST" + +// --------------------------------------------------------------------------- +/** @brief Set the maximum number of triangles in a mesh. + * + * This is used by the "SplitLargeMeshes" PostProcess-Step to determine + * whether a mesh must be split or not. + * @note The default value is AI_SLM_DEFAULT_MAX_TRIANGLES + * Property type: integer. + */ +#define AI_CONFIG_PP_SLM_TRIANGLE_LIMIT \ + "PP_SLM_TRIANGLE_LIMIT" + +// default value for AI_CONFIG_PP_SLM_TRIANGLE_LIMIT +#if (!defined AI_SLM_DEFAULT_MAX_TRIANGLES) +# define AI_SLM_DEFAULT_MAX_TRIANGLES 1000000 +#endif + +// --------------------------------------------------------------------------- +/** @brief Set the maximum number of vertices in a mesh. + * + * This is used by the "SplitLargeMeshes" PostProcess-Step to determine + * whether a mesh must be split or not. + * @note The default value is AI_SLM_DEFAULT_MAX_VERTICES + * Property type: integer. + */ +#define AI_CONFIG_PP_SLM_VERTEX_LIMIT \ + "PP_SLM_VERTEX_LIMIT" + +// default value for AI_CONFIG_PP_SLM_VERTEX_LIMIT +#if (!defined AI_SLM_DEFAULT_MAX_VERTICES) +# define AI_SLM_DEFAULT_MAX_VERTICES 1000000 +#endif + +// --------------------------------------------------------------------------- +/** @brief Set the maximum number of bones affecting a single vertex + * + * This is used by the #aiProcess_LimitBoneWeights PostProcess-Step. + * @note The default value is AI_LMW_MAX_WEIGHTS + * Property type: integer.*/ +#define AI_CONFIG_PP_LBW_MAX_WEIGHTS \ + "PP_LBW_MAX_WEIGHTS" + +// default value for AI_CONFIG_PP_LBW_MAX_WEIGHTS +#if (!defined AI_LMW_MAX_WEIGHTS) +# define AI_LMW_MAX_WEIGHTS 0x4 +#endif // !! AI_LMW_MAX_WEIGHTS + +// --------------------------------------------------------------------------- +/** @brief Lower the deboning threshold in order to remove more bones. + * + * This is used by the #aiProcess_Debone PostProcess-Step. + * @note The default value is AI_DEBONE_THRESHOLD + * Property type: float.*/ +#define AI_CONFIG_PP_DB_THRESHOLD \ + "PP_DB_THRESHOLD" + +// default value for AI_CONFIG_PP_LBW_MAX_WEIGHTS +#if (!defined AI_DEBONE_THRESHOLD) +# define AI_DEBONE_THRESHOLD 1.0f +#endif // !! AI_DEBONE_THRESHOLD + +// --------------------------------------------------------------------------- +/** @brief Require all bones qualify for deboning before removing any + * + * This is used by the #aiProcess_Debone PostProcess-Step. + * @note The default value is 0 + * Property type: bool.*/ +#define AI_CONFIG_PP_DB_ALL_OR_NONE \ + "PP_DB_ALL_OR_NONE" + +/** @brief Default value for the #AI_CONFIG_PP_ICL_PTCACHE_SIZE property + */ +#ifndef PP_ICL_PTCACHE_SIZE +# define PP_ICL_PTCACHE_SIZE 12 +#endif + +// --------------------------------------------------------------------------- +/** @brief Set the size of the post-transform vertex cache to optimize the + * vertices for. This configures the #aiProcess_ImproveCacheLocality step. + * + * The size is given in vertices. Of course you can't know how the vertex + * format will exactly look like after the import returns, but you can still + * guess what your meshes will probably have. + * @note The default value is #PP_ICL_PTCACHE_SIZE. That results in slight + * performance improvements for most nVidia/AMD cards since 2002. + * Property type: integer. + */ +#define AI_CONFIG_PP_ICL_PTCACHE_SIZE "PP_ICL_PTCACHE_SIZE" + +// --------------------------------------------------------------------------- +/** @brief Enumerates components of the aiScene and aiMesh data structures + * that can be excluded from the import using the #aiProcess_RemoveComponent step. + * + * See the documentation to #aiProcess_RemoveComponent for more details. + */ +enum aiComponent +{ + /** Normal vectors */ +#ifdef SWIG + aiComponent_NORMALS = 0x2, +#else + aiComponent_NORMALS = 0x2u, +#endif + + /** Tangents and bitangents go always together ... */ +#ifdef SWIG + aiComponent_TANGENTS_AND_BITANGENTS = 0x4, +#else + aiComponent_TANGENTS_AND_BITANGENTS = 0x4u, +#endif + + /** ALL color sets + * Use aiComponent_COLORn(N) to specify the N'th set */ + aiComponent_COLORS = 0x8, + + /** ALL texture UV sets + * aiComponent_TEXCOORDn(N) to specify the N'th set */ + aiComponent_TEXCOORDS = 0x10, + + /** Removes all bone weights from all meshes. + * The scenegraph nodes corresponding to the bones are NOT removed. + * use the #aiProcess_OptimizeGraph step to do this */ + aiComponent_BONEWEIGHTS = 0x20, + + /** Removes all node animations (aiScene::mAnimations). + * The corresponding scenegraph nodes are NOT removed. + * use the #aiProcess_OptimizeGraph step to do this */ + aiComponent_ANIMATIONS = 0x40, + + /** Removes all embedded textures (aiScene::mTextures) */ + aiComponent_TEXTURES = 0x80, + + /** Removes all light sources (aiScene::mLights). + * The corresponding scenegraph nodes are NOT removed. + * use the #aiProcess_OptimizeGraph step to do this */ + aiComponent_LIGHTS = 0x100, + + /** Removes all cameras (aiScene::mCameras). + * The corresponding scenegraph nodes are NOT removed. + * use the #aiProcess_OptimizeGraph step to do this */ + aiComponent_CAMERAS = 0x200, + + /** Removes all meshes (aiScene::mMeshes). */ + aiComponent_MESHES = 0x400, + + /** Removes all materials. One default material will + * be generated, so aiScene::mNumMaterials will be 1. */ + aiComponent_MATERIALS = 0x800, + + + /** This value is not used. It is just there to force the + * compiler to map this enum to a 32 Bit integer. */ +#ifndef SWIG + _aiComponent_Force32Bit = 0x9fffffff +#endif +}; + +// Remove a specific color channel 'n' +#define aiComponent_COLORSn(n) (1u << (n+20u)) + +// Remove a specific UV channel 'n' +#define aiComponent_TEXCOORDSn(n) (1u << (n+25u)) + +// --------------------------------------------------------------------------- +/** @brief Input parameter to the #aiProcess_RemoveComponent step: + * Specifies the parts of the data structure to be removed. + * + * See the documentation to this step for further details. The property + * is expected to be an integer, a bitwise combination of the + * #aiComponent flags defined above in this header. The default + * value is 0. Important: if no valid mesh is remaining after the + * step has been executed (e.g you thought it was funny to specify ALL + * of the flags defined above) the import FAILS. Mainly because there is + * no data to work on anymore ... + */ +#define AI_CONFIG_PP_RVC_FLAGS \ + "PP_RVC_FLAGS" + +// --------------------------------------------------------------------------- +/** @brief Input parameter to the #aiProcess_SortByPType step: + * Specifies which primitive types are removed by the step. + * + * This is a bitwise combination of the aiPrimitiveType flags. + * Specifying all of them is illegal, of course. A typical use would + * be to exclude all line and point meshes from the import. This + * is an integer property, its default value is 0. + */ +#define AI_CONFIG_PP_SBP_REMOVE \ + "PP_SBP_REMOVE" + +// --------------------------------------------------------------------------- +/** @brief Input parameter to the #aiProcess_FindInvalidData step: + * Specifies the floating-point accuracy for animation values. The step + * checks for animation tracks where all frame values are absolutely equal + * and removes them. This tweakable controls the epsilon for floating-point + * comparisons - two keys are considered equal if the invariant + * abs(n0-n1)>epsilon holds true for all vector respectively quaternion + * components. The default value is 0.f - comparisons are exact then. + */ +#define AI_CONFIG_PP_FID_ANIM_ACCURACY \ + "PP_FID_ANIM_ACCURACY" + +// --------------------------------------------------------------------------- +/** @brief Input parameter to the #aiProcess_FindInvalidData step: + * Set to true to ignore texture coordinates. This may be useful if you have + * to assign different kind of textures like one for the summer or one for the winter. + */ +#define AI_CONFIG_PP_FID_IGNORE_TEXTURECOORDS \ + "PP_FID_IGNORE_TEXTURECOORDS" + +// TransformUVCoords evaluates UV scalings +#define AI_UVTRAFO_SCALING 0x1 + +// TransformUVCoords evaluates UV rotations +#define AI_UVTRAFO_ROTATION 0x2 + +// TransformUVCoords evaluates UV translation +#define AI_UVTRAFO_TRANSLATION 0x4 + +// Everything baked together -> default value +#define AI_UVTRAFO_ALL (AI_UVTRAFO_SCALING | AI_UVTRAFO_ROTATION | AI_UVTRAFO_TRANSLATION) + +// --------------------------------------------------------------------------- +/** @brief Input parameter to the #aiProcess_TransformUVCoords step: + * Specifies which UV transformations are evaluated. + * + * This is a bitwise combination of the AI_UVTRAFO_XXX flags (integer + * property, of course). By default all transformations are enabled + * (AI_UVTRAFO_ALL). + */ +#define AI_CONFIG_PP_TUV_EVALUATE \ + "PP_TUV_EVALUATE" + +// --------------------------------------------------------------------------- +/** @brief A hint to assimp to favour speed against import quality. + * + * Enabling this option may result in faster loading, but it needn't. + * It represents just a hint to loaders and post-processing steps to use + * faster code paths, if possible. + * This property is expected to be an integer, != 0 stands for true. + * The default value is 0. + */ +#define AI_CONFIG_FAVOUR_SPEED \ + "FAVOUR_SPEED" + + +// ########################################################################### +// IMPORTER SETTINGS +// Various stuff to fine-tune the behaviour of specific importer plugins. +// ########################################################################### + + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will merge all geometry layers present + * in the source file or take only the first. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_ALL_GEOMETRY_LAYERS \ + "IMPORT_FBX_READ_ALL_GEOMETRY_LAYERS" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will read all materials present in the + * source file or take only the referenced materials. + * + * This is void unless IMPORT_FBX_READ_MATERIALS=1. + * + * The default value is false (0) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_ALL_MATERIALS \ + "IMPORT_FBX_READ_ALL_MATERIALS" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will read materials. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_MATERIALS \ + "IMPORT_FBX_READ_MATERIALS" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will read embedded textures. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_TEXTURES \ + "IMPORT_FBX_READ_TEXTURES" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will read cameras. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_CAMERAS \ + "IMPORT_FBX_READ_CAMERAS" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will read light sources. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_LIGHTS \ + "IMPORT_FBX_READ_LIGHTS" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will read animations. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_READ_ANIMATIONS \ + "IMPORT_FBX_READ_ANIMATIONS" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will act in strict mode in which only + * FBX 2013 is supported and any other sub formats are rejected. FBX 2013 + * is the primary target for the importer, so this format is best + * supported and well-tested. + * + * The default value is false (0) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_STRICT_MODE \ + "IMPORT_FBX_STRICT_MODE" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will preserve pivot points for + * transformations (as extra nodes). If set to false, pivots and offsets + * will be evaluated whenever possible. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_PRESERVE_PIVOTS \ + "IMPORT_FBX_PRESERVE_PIVOTS" + +// --------------------------------------------------------------------------- +/** @brief Specifies whether the importer will drop empty animation curves or + * animation curves which match the bind pose transformation over their + * entire defined range. + * + * The default value is true (1) + * Property type: bool + */ +#define AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES \ + "IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES" + +// --------------------------------------------------------------------------- +/** @brief Set whether the fbx importer will use the legacy embedded texture naming. +* +* The default value is false (0) +* Property type: bool +*/ +#define AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING \ + "AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING" + +// --------------------------------------------------------------------------- +/** @brief Set the vertex animation keyframe to be imported + * + * ASSIMP does not support vertex keyframes (only bone animation is supported). + * The library reads only one frame of models with vertex animations. + * By default this is the first frame. + * \note The default value is 0. This option applies to all importers. + * However, it is also possible to override the global setting + * for a specific loader. You can use the AI_CONFIG_IMPORT_XXX_KEYFRAME + * options (where XXX is a placeholder for the file format for which you + * want to override the global setting). + * Property type: integer. + */ +#define AI_CONFIG_IMPORT_GLOBAL_KEYFRAME "IMPORT_GLOBAL_KEYFRAME" + +#define AI_CONFIG_IMPORT_MD3_KEYFRAME "IMPORT_MD3_KEYFRAME" +#define AI_CONFIG_IMPORT_MD2_KEYFRAME "IMPORT_MD2_KEYFRAME" +#define AI_CONFIG_IMPORT_MDL_KEYFRAME "IMPORT_MDL_KEYFRAME" +#define AI_CONFIG_IMPORT_MDC_KEYFRAME "IMPORT_MDC_KEYFRAME" +#define AI_CONFIG_IMPORT_SMD_KEYFRAME "IMPORT_SMD_KEYFRAME" +#define AI_CONFIG_IMPORT_UNREAL_KEYFRAME "IMPORT_UNREAL_KEYFRAME" + +// --------------------------------------------------------------------------- +/** Smd load multiple animations + * + * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_SMD_LOAD_ANIMATION_LIST "IMPORT_SMD_LOAD_ANIMATION_LIST" + +// --------------------------------------------------------------------------- +/** @brief Configures the AC loader to collect all surfaces which have the + * "Backface cull" flag set in separate meshes. + * + * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_AC_SEPARATE_BFCULL \ + "IMPORT_AC_SEPARATE_BFCULL" + +// --------------------------------------------------------------------------- +/** @brief Configures whether the AC loader evaluates subdivision surfaces ( + * indicated by the presence of the 'subdiv' attribute in the file). By + * default, Assimp performs the subdivision using the standard + * Catmull-Clark algorithm + * + * * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_AC_EVAL_SUBDIVISION \ + "IMPORT_AC_EVAL_SUBDIVISION" + +// --------------------------------------------------------------------------- +/** @brief Configures the UNREAL 3D loader to separate faces with different + * surface flags (e.g. two-sided vs. single-sided). + * + * * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_UNREAL_HANDLE_FLAGS \ + "UNREAL_HANDLE_FLAGS" + +// --------------------------------------------------------------------------- +/** @brief Configures the terragen import plugin to compute uv's for + * terrains, if not given. Furthermore a default texture is assigned. + * + * UV coordinates for terrains are so simple to compute that you'll usually + * want to compute them on your own, if you need them. This option is intended + * for model viewers which want to offer an easy way to apply textures to + * terrains. + * * Property type: bool. Default value: false. + */ +#define AI_CONFIG_IMPORT_TER_MAKE_UVS \ + "IMPORT_TER_MAKE_UVS" + +// --------------------------------------------------------------------------- +/** @brief Configures the ASE loader to always reconstruct normal vectors + * basing on the smoothing groups loaded from the file. + * + * Some ASE files have carry invalid normals, other don't. + * * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_ASE_RECONSTRUCT_NORMALS \ + "IMPORT_ASE_RECONSTRUCT_NORMALS" + +// --------------------------------------------------------------------------- +/** @brief Configures the M3D loader to detect and process multi-part + * Quake player models. + * + * These models usually consist of 3 files, lower.md3, upper.md3 and + * head.md3. If this property is set to true, Assimp will try to load and + * combine all three files if one of them is loaded. + * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_MD3_HANDLE_MULTIPART \ + "IMPORT_MD3_HANDLE_MULTIPART" + +// --------------------------------------------------------------------------- +/** @brief Tells the MD3 loader which skin files to load. + * + * When loading MD3 files, Assimp checks whether a file + * [md3_file_name]_[skin_name].skin is existing. These files are used by + * Quake III to be able to assign different skins (e.g. red and blue team) + * to models. 'default', 'red', 'blue' are typical skin names. + * Property type: String. Default value: "default". + */ +#define AI_CONFIG_IMPORT_MD3_SKIN_NAME \ + "IMPORT_MD3_SKIN_NAME" + +// --------------------------------------------------------------------------- +/** @brief Specify the Quake 3 shader file to be used for a particular + * MD3 file. This can also be a search path. + * + * By default Assimp's behaviour is as follows: If a MD3 file + * <tt>any_path/models/any_q3_subdir/model_name/file_name.md3</tt> is + * loaded, the library tries to locate the corresponding shader file in + * <tt>any_path/scripts/model_name.shader</tt>. This property overrides this + * behaviour. It can either specify a full path to the shader to be loaded + * or alternatively the path (relative or absolute) to the directory where + * the shaders for all MD3s to be loaded reside. Assimp attempts to open + * <tt>IMPORT_MD3_SHADER_SRC/model_name.shader</tt> first, <tt>IMPORT_MD3_SHADER_SRC/file_name.shader</tt> + * is the fallback file. Note that IMPORT_MD3_SHADER_SRC should have a terminal (back)slash. + * Property type: String. Default value: n/a. + */ +#define AI_CONFIG_IMPORT_MD3_SHADER_SRC \ + "IMPORT_MD3_SHADER_SRC" + +// --------------------------------------------------------------------------- +/** @brief Configures the LWO loader to load just one layer from the model. + * + * LWO files consist of layers and in some cases it could be useful to load + * only one of them. This property can be either a string - which specifies + * the name of the layer - or an integer - the index of the layer. If the + * property is not set the whole LWO model is loaded. Loading fails if the + * requested layer is not available. The layer index is zero-based and the + * layer name may not be empty.<br> + * Property type: Integer. Default value: all layers are loaded. + */ +#define AI_CONFIG_IMPORT_LWO_ONE_LAYER_ONLY \ + "IMPORT_LWO_ONE_LAYER_ONLY" + +// --------------------------------------------------------------------------- +/** @brief Configures the MD5 loader to not load the MD5ANIM file for + * a MD5MESH file automatically. + * + * The default strategy is to look for a file with the same name but the + * MD5ANIM extension in the same directory. If it is found, it is loaded + * and combined with the MD5MESH file. This configuration option can be + * used to disable this behaviour. + * + * * Property type: bool. Default value: false. + */ +#define AI_CONFIG_IMPORT_MD5_NO_ANIM_AUTOLOAD \ + "IMPORT_MD5_NO_ANIM_AUTOLOAD" + +// --------------------------------------------------------------------------- +/** @brief Defines the begin of the time range for which the LWS loader + * evaluates animations and computes aiNodeAnim's. + * + * Assimp provides full conversion of LightWave's envelope system, including + * pre and post conditions. The loader computes linearly subsampled animation + * chanels with the frame rate given in the LWS file. This property defines + * the start time. Note: animation channels are only generated if a node + * has at least one envelope with more tan one key assigned. This property. + * is given in frames, '0' is the first frame. By default, if this property + * is not set, the importer takes the animation start from the input LWS + * file ('FirstFrame' line)<br> + * Property type: Integer. Default value: taken from file. + * + * @see AI_CONFIG_IMPORT_LWS_ANIM_END - end of the imported time range + */ +#define AI_CONFIG_IMPORT_LWS_ANIM_START \ + "IMPORT_LWS_ANIM_START" +#define AI_CONFIG_IMPORT_LWS_ANIM_END \ + "IMPORT_LWS_ANIM_END" + +// --------------------------------------------------------------------------- +/** @brief Defines the output frame rate of the IRR loader. + * + * IRR animations are difficult to convert for Assimp and there will + * always be a loss of quality. This setting defines how many keys per second + * are returned by the converter.<br> + * Property type: integer. Default value: 100 + */ +#define AI_CONFIG_IMPORT_IRR_ANIM_FPS \ + "IMPORT_IRR_ANIM_FPS" + +// --------------------------------------------------------------------------- +/** @brief Ogre Importer will try to find referenced materials from this file. + * + * Ogre meshes reference with material names, this does not tell Assimp the file + * where it is located in. Assimp will try to find the source file in the following + * order: <material-name>.material, <mesh-filename-base>.material and + * lastly the material name defined by this config property. + * <br> + * Property type: String. Default value: Scene.material. + */ +#define AI_CONFIG_IMPORT_OGRE_MATERIAL_FILE \ + "IMPORT_OGRE_MATERIAL_FILE" + +// --------------------------------------------------------------------------- +/** @brief Ogre Importer detect the texture usage from its filename. + * + * Ogre material texture units do not define texture type, the textures usage + * depends on the used shader or Ogre's fixed pipeline. If this config property + * is true Assimp will try to detect the type from the textures filename postfix: + * _n, _nrm, _nrml, _normal, _normals and _normalmap for normal map, _s, _spec, + * _specular and _specularmap for specular map, _l, _light, _lightmap, _occ + * and _occlusion for light map, _disp and _displacement for displacement map. + * The matching is case insensitive. Post fix is taken between the last + * underscore and the last period. + * Default behavior is to detect type from lower cased texture unit name by + * matching against: normalmap, specularmap, lightmap and displacementmap. + * For both cases if no match is found aiTextureType_DIFFUSE is used. + * <br> + * Property type: Bool. Default value: false. + */ +#define AI_CONFIG_IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME \ + "IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME" + + /** @brief Specifies whether the Android JNI asset extraction is supported. + * + * Turn on this option if you want to manage assets in native + * Android application without having to keep the internal directory and asset + * manager pointer. + */ + #define AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT "AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT" + +// --------------------------------------------------------------------------- +/** @brief Specifies whether the IFC loader skips over IfcSpace elements. + * + * IfcSpace elements (and their geometric representations) are used to + * represent, well, free space in a building storey.<br> + * Property type: Bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS "IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS" + +// --------------------------------------------------------------------------- +/** @brief Specifies whether the IFC loader will use its own, custom triangulation + * algorithm to triangulate wall and floor meshes. + * + * If this property is set to false, walls will be either triangulated by + * #aiProcess_Triangulate or will be passed through as huge polygons with + * faked holes (i.e. holes that are connected with the outer boundary using + * a dummy edge). It is highly recommended to set this property to true + * if you want triangulated data because #aiProcess_Triangulate is known to + * have problems with the kind of polygons that the IFC loader spits out for + * complicated meshes. + * Property type: Bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_IFC_CUSTOM_TRIANGULATION "IMPORT_IFC_CUSTOM_TRIANGULATION" + +// --------------------------------------------------------------------------- +/** @brief Set the tessellation conic angle for IFC smoothing curves. + * + * This is used by the IFC importer to determine the tessellation parameter + * for smoothing curves. + * @note The default value is AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE and the + * accepted values are in range [5.0, 120.0]. + * Property type: Float. + */ +#define AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE "IMPORT_IFC_SMOOTHING_ANGLE" + +// default value for AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE +#if (!defined AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE) +# define AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE 10.0f +#endif + +// --------------------------------------------------------------------------- +/** @brief Set the tessellation for IFC cylindrical shapes. + * + * This is used by the IFC importer to determine the tessellation parameter + * for cylindrical shapes, i.e. the number of segments used to approximate a circle. + * @note The default value is AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION and the + * accepted values are in range [3, 180]. + * Property type: Integer. + */ +#define AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION "IMPORT_IFC_CYLINDRICAL_TESSELLATION" + +// default value for AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION +#if (!defined AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION) +# define AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION 32 +#endif + +// --------------------------------------------------------------------------- +/** @brief Specifies whether the Collada loader will ignore the provided up direction. + * + * If this property is set to true, the up direction provided in the file header will + * be ignored and the file will be loaded as is. + * Property type: Bool. Default value: false. + */ +#define AI_CONFIG_IMPORT_COLLADA_IGNORE_UP_DIRECTION "IMPORT_COLLADA_IGNORE_UP_DIRECTION" + +// --------------------------------------------------------------------------- +/** @brief Specifies whether the Collada loader should use Collada names as node names. + * + * If this property is set to true, the Collada names will be used as the + * node name. The default is to use the id tag (resp. sid tag, if no id tag is present) + * instead. + * Property type: Bool. Default value: false. + */ +#define AI_CONFIG_IMPORT_COLLADA_USE_COLLADA_NAMES "IMPORT_COLLADA_USE_COLLADA_NAMES" + +// ---------- All the Export defines ------------ + +/** @brief Specifies the xfile use double for real values of float + * + * Property type: Bool. Default value: false. + */ + +#define AI_CONFIG_EXPORT_XFILE_64BIT "EXPORT_XFILE_64BIT" + +/** + * + */ +#define AI_CONFIG_EXPORT_POINT_CLOUDS "EXPORT_POINT_CLOUDS" + +/** + * @brief Specifies a gobal key factor for scale, float value + */ +#define AI_CONFIG_GLOBAL_SCALE_FACTOR_KEY "GLOBAL_SCALE_FACTOR" + +#if (!defined AI_CONFIG_GLOBAL_SCALE_FACTOR_DEFAULT) +# define AI_CONFIG_GLOBAL_SCALE_FACTOR_DEFAULT 1.0f +#endif // !! AI_DEBONE_THRESHOLD + +// ---------- All the Build/Compile-time defines ------------ + +/** @brief Specifies if double precision is supported inside assimp + * + * Property type: Bool. Default value: undefined. + */ + +/* #undef ASSIMP_DOUBLE_PRECISION */ + +#endif // !! AI_CONFIG_H_INC diff --git a/src/3rdparty/assimp/revision.h b/src/3rdparty/assimp/revision.h index adc837138..985b2c7e7 100644 --- a/src/3rdparty/assimp/revision.h +++ b/src/3rdparty/assimp/revision.h @@ -1,18 +1,7 @@ #ifndef ASSIMP_REVISION_H_INC #define ASSIMP_REVISION_H_INC -#define GitVersion 0x9740c04 -#define GitBranch "master" - -//#define VER_MAJOR @ASSIMP_VERSION_MAJOR@ -//#define VER_MINOR @ASSIMP_VERSION_MINOR@ -//#define VER_PATCH @ASSIMP_VERSION_PATCH@ -//#define VER_BUILD @ASSIMP_PACKAGE_VERSION@ - -//#define STR_HELP(x) #x -//#define STR(x) STR_HELP(x) - -//#define VER_FILEVERSION VER_MAJOR,VER_MINOR,VER_PATCH,VER_BUILD -//#define VER_FILEVERSION_STR STR(VER_MAJOR) "." STR(VER_MINOR) "." STR(VER_PATCH) "." STR(VER_BUILD) +#define GitVersion 0x5c900d68 +#define GitBranch "HEAD" #endif // ASSIMP_REVISION_H_INC diff --git a/src/3rdparty/assimp/src b/src/3rdparty/assimp/src new file mode 160000 index 000000000..5c900d689 --- /dev/null +++ b/src/3rdparty/assimp/src @@ -0,0 +1 @@ +Subproject commit 5c900d689a5db5637b98f665fc1e9e9c9ed416b9 diff --git a/src/plugins/assetimporters/assetimporters.pro b/src/plugins/assetimporters/assetimporters.pro index da8d911f4..7add08840 100644 --- a/src/plugins/assetimporters/assetimporters.pro +++ b/src/plugins/assetimporters/assetimporters.pro @@ -3,3 +3,6 @@ TEMPLATE = subdirs SUBDIRS = \ uip +qtConfig(assimp):!integrity { + SUBDIRS += assimp +} diff --git a/src/plugins/assetimporters/assimp/assimp.pro b/src/plugins/assetimporters/assimp/assimp.pro index b17774a76..035c198f9 100644 --- a/src/plugins/assetimporters/assimp/assimp.pro +++ b/src/plugins/assetimporters/assimp/assimp.pro @@ -6,7 +6,14 @@ PLUGIN_CLASS_NAME = AssimpImporterPlugin load(qt_plugin) -include(../../../3rdparty/assimp/assimp.pri) +QT_FOR_CONFIG += assetimporters-private +include($$OUT_PWD/../qtassetimporters-config.pri) + +qtConfig(system-assimp):!if(cross_compile:host_build) { + QMAKE_USE_PRIVATE += assimp +} else { + include(../../../3rdparty/assimp/assimp.pri) +} OTHER_FILES += assimp.json diff --git a/src/plugins/assetimporters/configure.json b/src/plugins/assetimporters/configure.json new file mode 100644 index 000000000..456b4c01d --- /dev/null +++ b/src/plugins/assetimporters/configure.json @@ -0,0 +1,48 @@ +{ + "module": "assetimporters", + "testDir": "../../../config.tests", + + "commandline": { + "options": { + "assimp": { "type": "enum", "values": [ "no", "qt", "system" ] } + } + }, + + "libraries": { + "assimp": { + "label": "Assimp", + "test": "assimp", + "sources": [ + { "type": "pkgConfig", "args": "assimp >= 5.0.0" }, + "-lassimp" + ] + } + }, + + "features": { + "assimp": { + "label": "Assimp", + "output": [ "privateFeature", "feature" ] + }, + "system-assimp": { + "label": "System Assimp", + "enable": "input.assimp == 'system'", + "disable": "input.assimp == 'qt'", + "condition": "features.assimp && libs.assimp", + "output": [ "privateFeature" ] + } + }, + + "report": [ + ], + + "summary": [ + { + "section": "QtQuick3D", + "entries": [ + "assimp", + "system-assimp" + ] + } + ] +} -- GitLab