From b506d35999edcec448b71fa3545f937b9f04dcc2 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 3 Dec 2018 21:53:54 +0100 Subject: [PATCH 1/5] closes https://github.com/assimp/assimp/issues/2247: change include folder from debian package from /usr/lib/include to /usr/include --- assimp.pc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assimp.pc.in b/assimp.pc.in index 02cf59dc4..c659e19f2 100644 --- a/assimp.pc.in +++ b/assimp.pc.in @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@/ libdir=@CMAKE_INSTALL_PREFIX@/@ASSIMP_LIB_INSTALL_DIR@ -includedir=@CMAKE_INSTALL_PREFIX@/@ASSIMP_INCLUDE_INSTALL_DIR@ +includedir=@CMAKE_INSTALL_PREFIX@/../include/@ASSIMP_INCLUDE_INSTALL_DIR@ Name: @CMAKE_PROJECT_NAME@ Description: Import various well-known 3D model formats in an uniform manner. From 8b6c6613f9b1408f43f2e411789401966941624d Mon Sep 17 00:00:00 2001 From: twhittock Date: Tue, 4 Dec 2018 14:44:49 +0000 Subject: [PATCH 2/5] collada export: Use Camera local coordinate system Fixes #2255 --- code/ColladaExporter.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp index 96421a532..0d5bdd46d 100644 --- a/code/ColladaExporter.cpp +++ b/code/ColladaExporter.cpp @@ -1533,7 +1533,23 @@ void ColladaExporter::WriteNode( const aiScene* pScene, aiNode* pNode) // write transformation - we can directly put the matrix there // TODO: (thom) decompose into scale - rot - quad to allow addressing it by animations afterwards - const aiMatrix4x4& mat = pNode->mTransformation; + aiMatrix4x4 mat = pNode->mTransformation; + + // If this node is a Camera node, the camera coordinate system needs to be multiplied in. + // When importing from Collada, the mLookAt is set to 0, 0, -1, and the node transform is unchanged. + // When importing from a different format, mLookAt is set to 0, 0, 1. Therefore, the local camera + // coordinate system must be changed to matche the Collada specification. + for (size_t i = 0; imNumCameras; i++){ + if (mScene->mCameras[i]->mName == pNode->mName){ + aiMatrix4x4 sourceView; + mScene->mCameras[i]->GetCameraMatrix(sourceView); + + aiMatrix4x4 colladaView; + colladaView.a1 = colladaView.c3 = -1; // move into -z space. + mat *= (sourceView * colladaView); + break; + } + } // customized, sid should be 'matrix' to match with loader code. //mOutput << startstr << ""; From af323de74127ded5e66337bdf585dfe4e19c3d45 Mon Sep 17 00:00:00 2001 From: sfalexrog Date: Tue, 4 Dec 2018 23:28:50 +0300 Subject: [PATCH 3/5] Use ADD_ASSIMP_IMPORTER for STEP importer --- code/CMakeLists.txt | 3 +-- code/Importer/StepFile/StepFileGen1.cpp | 2 +- code/Importer/StepFile/StepFileImporter.cpp | 4 ++-- code/Importer/StepFile/StepFileImporter.h | 4 ++-- code/ImporterRegistry.cpp | 4 ++-- scripts/StepImporter/StepReaderGen.cpp.template | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 6b8d3d322..e29467164 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -727,7 +727,7 @@ ADD_ASSIMP_IMPORTER( MMD MMDVmdParser.h ) -SET( Step_SRCS +ADD_ASSIMP_IMPORTER( STEP STEPFile.h Importer/StepFile/StepFileImporter.h Importer/StepFile/StepFileImporter.cpp @@ -738,7 +738,6 @@ SET( Step_SRCS StepExporter.h StepExporter.cpp ) -SOURCE_GROUP( Step FILES ${Step_SRCS}) SET( Exporter_SRCS Exporter.cpp diff --git a/code/Importer/StepFile/StepFileGen1.cpp b/code/Importer/StepFile/StepFileGen1.cpp index 32df66c17..50c54818e 100644 --- a/code/Importer/StepFile/StepFileGen1.cpp +++ b/code/Importer/StepFile/StepFileGen1.cpp @@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ -#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER #include "code/Importer/StepFile/StepReaderGen.h" diff --git a/code/Importer/StepFile/StepFileImporter.cpp b/code/Importer/StepFile/StepFileImporter.cpp index 9bfaf7051..edfe30754 100644 --- a/code/Importer/StepFile/StepFileImporter.cpp +++ b/code/Importer/StepFile/StepFileImporter.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER #include "StepFileImporter.h" #include "../../Importer/STEPParser/STEPFileReader.h" @@ -110,5 +110,5 @@ void StepFileImporter::InternReadFile(const std::string &file, aiScene* pScene, } // Namespace StepFile } // Namespace Assimp -#endif // ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#endif // ASSIMP_BUILD_NO_STEP_IMPORTER diff --git a/code/Importer/StepFile/StepFileImporter.h b/code/Importer/StepFile/StepFileImporter.h index 7314a54f3..68d5a09ad 100644 --- a/code/Importer/StepFile/StepFileImporter.h +++ b/code/Importer/StepFile/StepFileImporter.h @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #pragma once -#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER #include @@ -66,4 +66,4 @@ private: } // Namespace StepFile } // Namespace Assimp -#endif // ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#endif // ASSIMP_BUILD_NO_STEP_IMPORTER diff --git a/code/ImporterRegistry.cpp b/code/ImporterRegistry.cpp index d3ae53c7d..e6cf8299e 100644 --- a/code/ImporterRegistry.cpp +++ b/code/ImporterRegistry.cpp @@ -197,7 +197,7 @@ corresponding preprocessor flag to selectively disable formats. #ifndef ASSIMP_BUILD_NO_MMD_IMPORTER # include "MMDImporter.h" #endif -#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER # include "Importer/StepFile/StepFileImporter.h" #endif @@ -355,7 +355,7 @@ void GetImporterInstanceList(std::vector< BaseImporter* >& out) #ifndef ASSIMP_BUILD_NO_MMD_IMPORTER out.push_back( new MMDImporter() ); #endif -#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER out.push_back(new StepFile::StepFileImporter()); #endif } diff --git a/scripts/StepImporter/StepReaderGen.cpp.template b/scripts/StepImporter/StepReaderGen.cpp.template index 343c43019..91705f7a4 100644 --- a/scripts/StepImporter/StepReaderGen.cpp.template +++ b/scripts/StepImporter/StepReaderGen.cpp.template @@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ -#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER #include "code/Importer/StepFile/StepReaderGen.h" From f63caf894e8cd5eee6dbfe0fd4c25895ec5ffdcd Mon Sep 17 00:00:00 2001 From: Paul Arden Date: Thu, 6 Dec 2018 12:56:02 +1100 Subject: [PATCH 4/5] Add check for NULL texcoord values. --- code/glTF2Importer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/glTF2Importer.cpp b/code/glTF2Importer.cpp index 740935601..34f8cfcee 100755 --- a/code/glTF2Importer.cpp +++ b/code/glTF2Importer.cpp @@ -437,6 +437,12 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r) } for (size_t tc = 0; tc < attr.texcoord.size() && tc < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++tc) { + if (!attr.texcoord[tc]) { + DefaultLogger::get()->warn("NULL texcoord encountered in mesh \"" + mesh.name + + "\" and will be ignored"); + continue; + } + if (attr.texcoord[tc]->count != aim->mNumVertices) { DefaultLogger::get()->warn("Texcoord stream size in mesh \"" + mesh.name + "\" does not match the vertex count"); From b5ebd24688b237abc7ea448b388b005bb0016ce3 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 10 Dec 2018 22:07:26 +0100 Subject: [PATCH 5/5] closes https://github.com/assimp/assimp/issues/817: use emmisive factor instead of color. --- code/FBXConverter.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 0cbe04d8f..7dd9f94b4 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -1559,8 +1559,7 @@ void FBXConverter::TrySetTextureProperties( aiMaterial* out_mat, const TextureMa } const Texture* const tex = ( *it ).second; - if ( tex != 0 ) - { + if ( tex != nullptr ) { aiString path = GetTexturePath(tex); out_mat->AddProperty( &path, _AI_MATKEY_TEXTURE_BASE, target, 0 ); @@ -1794,10 +1793,9 @@ void FBXConverter::SetTextureProperties( aiMaterial* out_mat, const TextureMap& { TrySetTextureProperties( out_mat, textures, "DiffuseColor", aiTextureType_DIFFUSE, mesh ); TrySetTextureProperties( out_mat, textures, "AmbientColor", aiTextureType_AMBIENT, mesh ); - TrySetTextureProperties( out_mat, textures, "EmissiveColor", aiTextureType_EMISSIVE, mesh ); - TrySetTextureProperties( out_mat, textures, "SpecularColor", aiTextureType_SPECULAR, mesh ); + TrySetTextureProperties( out_mat, textures, "EmissiveFactor", aiTextureType_EMISSIVE, mesh ); TrySetTextureProperties( out_mat, textures, "SpecularFactor", aiTextureType_SPECULAR, mesh); - TrySetTextureProperties( out_mat, textures, "TransparentColor", aiTextureType_OPACITY, mesh ); + TrySetTextureProperties( out_mat, textures, "TransparencyFactor", aiTextureType_OPACITY, mesh ); TrySetTextureProperties( out_mat, textures, "ReflectionColor", aiTextureType_REFLECTION, mesh ); TrySetTextureProperties( out_mat, textures, "DisplacementColor", aiTextureType_DISPLACEMENT, mesh ); TrySetTextureProperties( out_mat, textures, "NormalMap", aiTextureType_NORMALS, mesh ); @@ -1809,10 +1807,9 @@ void FBXConverter::SetTextureProperties( aiMaterial* out_mat, const LayeredTextu { TrySetTextureProperties( out_mat, layeredTextures, "DiffuseColor", aiTextureType_DIFFUSE, mesh ); TrySetTextureProperties( out_mat, layeredTextures, "AmbientColor", aiTextureType_AMBIENT, mesh ); - TrySetTextureProperties( out_mat, layeredTextures, "EmissiveColor", aiTextureType_EMISSIVE, mesh ); - TrySetTextureProperties( out_mat, layeredTextures, "SpecularColor", aiTextureType_SPECULAR, mesh ); + TrySetTextureProperties( out_mat, layeredTextures, "EmissiveFactor", aiTextureType_EMISSIVE, mesh ); TrySetTextureProperties( out_mat, layeredTextures, "SpecularFactor", aiTextureType_SPECULAR, mesh); - TrySetTextureProperties( out_mat, layeredTextures, "TransparentColor", aiTextureType_OPACITY, mesh ); + TrySetTextureProperties( out_mat, layeredTextures, "TransparencyFactor", aiTextureType_OPACITY, mesh ); TrySetTextureProperties( out_mat, layeredTextures, "ReflectionColor", aiTextureType_REFLECTION, mesh ); TrySetTextureProperties( out_mat, layeredTextures, "DisplacementColor", aiTextureType_DISPLACEMENT, mesh ); TrySetTextureProperties( out_mat, layeredTextures, "NormalMap", aiTextureType_NORMALS, mesh );