Compare commits

...

36 Commits

Author SHA1 Message Date
Kim Kulling
c2375a4ff0 Merge pull request #4272 from errissa/pbr-obj
Support PBR properties/maps in Obj importer
2021-12-31 10:38:50 +01:00
Kim Kulling
ab19cff328 Merge branch 'master' into pbr-obj 2021-12-31 08:33:30 +01:00
Kim Kulling
049a241855 Merge pull request #4314 from pseiderer/ps-devel-fix-namespace-001
RFC: BlenderScene: use explicit namespace instead of using namespace
2021-12-31 08:32:54 +01:00
Kim Kulling
a86ab45161 Merge branch 'master' into ps-devel-fix-namespace-001 2021-12-31 08:20:24 +01:00
Peter Seiderer
a099fe7cd3 BlenderScene: use explicit namespace instead of using namespace
Fixes (using g++ Sourcery CodeBench Lite 2014.05-29 - 4.8.3 20140320):

  .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderScene.cpp:101:33: error: specialization of 'template<class T> void Assimp::Blender::Structure::Convert(T&, const Assimp::Blender::FileDatabase&) const' in different namespace [-fpermissive]
           const FileDatabase &db) const {
                                   ^
 In file included from .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderScene.h:49:0,
                   from .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderScene.cpp:47:
  .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderDNA.h:266:10: error:   from definition of 'template<class T> void Assimp::Blender::Structure::Convert(T&, const Assimp::Blender::FileDatabase&) const' [-fpermissive]
       void Convert(T &dest, const FileDatabase &db) const;
            ^
  .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderScene.cpp:121:33: error: specialization of 'template<class T> void Assimp::Blender::Structure::Convert(T&, const Assimp::Blender::FileDatabase&) const' in different namespace [-fpermissive]
           const FileDatabase &db) const {
                                   ^
  In file included from .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderScene.h:49:0,
                   from .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderScene.cpp:47:
  .../build/assimp-5.1.4/code/AssetLib/Blender/BlenderDNA.h:266:10: error:   from definition of 'template<class T> void Assimp::Blender::Structure::Convert(T&, const Assimp::Blender::FileDatabase&) const' [-fpermissive]
       void Convert(T &dest, const FileDatabase &db) const;
            ^

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
2021-12-30 18:01:54 +01:00
Kim Kulling
85dd84cc78 Merge pull request #4259 from VyacheslavVanin/fix-fbx-metalness-import
fix fbx import metalness
2021-12-29 20:35:46 +01:00
Kim Kulling
0a5bd792de Merge branch 'master' into fix-fbx-metalness-import 2021-12-29 19:08:16 +01:00
Kim Kulling
c882731688 Merge pull request #4311 from SirLynix/fix-mingw
CMake: Replace CMAKE_COMPILER_IS_MINGW by MINGW
2021-12-29 17:31:12 +01:00
Jérôme Leclercq
81fc50f612 CMake: Replace CMAKE_COMPILER_IS_MINGW by MINGW
See https://discourse.cmake.org/t/cmake-compiler-is-mingw-removed/4539 and https://cmake.org/cmake/help/latest/variable/MINGW.html
2021-12-28 15:58:37 +01:00
Vyacheslav Vanin
2da06dd41a Merge branch 'master' into fix-fbx-metalness-import 2021-12-26 17:31:33 +03:00
Kim Kulling
54a8da1d55 Merge pull request #4293 from assimp/add_colsole_progresshandler_issue_963
Add console progresshandler
2021-12-26 11:38:24 +01:00
Kim Kulling
d44641398f Add console progresshandler 2021-12-26 11:16:02 +01:00
Kim Kulling
4d7e817bd8 Merge pull request #4284 from assimp/kimkulling-skip_empty_embedded_textures_issue4238
MDL: Do not try to copy empty embedded texture
2021-12-23 13:03:43 +01:00
Kim Kulling
db2500c393 MDL: Do not try to copy empty embedded texture
- When an embedded texture is empty, skip it instead of trying to copy it. This must fail.
- closes https://github.com/assimp/assimp/issues/4238
- Found from the Google fuzzer.
2021-12-23 12:28:43 +01:00
Kim Kulling
64af16c427 Merge pull request #4283 from assimp/kimkulling-avoid_invalid_string_access_issue4222
LWS-Import: Avoid access to empty string token
2021-12-22 21:28:42 +01:00
Kim Kulling
635153b3a4 LWS-Import: Avoid access to empty string token
- Fix invalid access to string pointer when string token is empty
- closes https://github.com/assimp/assimp/issues/4222
2021-12-22 21:08:28 +01:00
Kim Kulling
7ec52e9e02 Merge pull request #4282 from assimp/kimkulling-fix_heap_overflow_during_utf8_issue4230
Make sure no overflow can happen
2021-12-22 20:56:39 +01:00
Kim Kulling
2c66d4d3a2 Optimize the check 2021-12-22 20:43:44 +01:00
Kim Kulling
215f4e1f4d Fix typo 2021-12-22 20:02:29 +01:00
Kim Kulling
2eb86d75b8 Make sure no overflow can happen
- During UTF32 LE with BOM make sure that the byteswap operation will have enough space when iterating through the text buffer, which shall get encoded.
- closes https://github.com/assimp/assimp/issues/4230
2021-12-22 19:45:19 +01:00
Rene Sepulveda
19371af6e6 Support PBR properties/maps in Obj importer 2021-12-20 13:43:46 -05:00
Kim Kulling
80b0b897ed Merge pull request #4266 from assimp/kimkulling-patch-1
Update version to 5.1.4
2021-12-18 21:42:19 +01:00
Kim Kulling
572e31ddcb Update version to 5.1.4 2021-12-18 21:30:04 +01:00
Kim Kulling
9dfd401624 Merge pull request #4263 from RivIs-sssa01/fix_X3DImporter.cpp_closingBraces
Fix compile error when ASSIMP_BUILD_NO_X3D_IMPORTER is define.
2021-12-18 21:28:32 +01:00
Kim Kulling
5a46597e47 Merge branch 'master' into fix_X3DImporter.cpp_closingBraces 2021-12-18 21:17:23 +01:00
Kim Kulling
01f68dd916 Merge pull request #4264 from Garux/IMAGE1.bmp_jpg
fix test/models/3DS/IMAGE1.bmp: is jpg
2021-12-18 21:16:59 +01:00
Garux
7fc4603579 fix test/models/3DS/IMAGE1.bmp: is jpg 2021-12-18 14:32:46 +03:00
sssaoi
d7bf8d6e07 Fix compile error when ASSIMP_BUILD_NO_X3D_IMPORTER is define. 2021-12-18 14:50:22 +09:00
Vyacheslav Vanin
53968550e4 Merge branch 'master' into fix-fbx-metalness-import 2021-12-17 12:08:55 +03:00
Kim Kulling
6693e7e08c Merge pull request #4256 from rumgot/cmake_no_known_features_error_fix
Fixed cmake error: No known features for C compiler when using the assimp library from another project
2021-12-16 21:35:52 +01:00
Kim Kulling
3e97329fa1 Merge branch 'master' into cmake_no_known_features_error_fix 2021-12-16 20:27:58 +01:00
Kim Kulling
c72e3905c2 Merge pull request #4261 from assimp/kimkulling-enable_language_support_issue4257-2
Enable C++11 and C99
2021-12-16 20:27:17 +01:00
Kim Kulling
2ffa0c59eb Switch to C++11 until gtest gets an update. 2021-12-16 19:54:40 +01:00
Kim Kulling
af42d53c92 Enable C++17 and C99
- closes https://github.com/assimp/assimp/issues/4257
2021-12-16 19:41:15 +01:00
Vyacheslav.Vanin
1afe7e6255 fix fbx import metalness
Can't import metalness textures in fbx importer
2021-12-16 12:09:06 +03:00
rumgot
92aef9236f Fixed cmake error: No known features for C compiler when using the assimp library from another project. 2021-12-14 23:54:36 +03:00
19 changed files with 203 additions and 28 deletions

View File

@@ -56,7 +56,7 @@ IF(ASSIMP_HUNTER_ENABLED)
add_definitions(-DASSIMP_USE_HUNTER)
ENDIF()
PROJECT(Assimp VERSION 5.1.3)
PROJECT(Assimp VERSION 5.1.4)
# All supported options ###############################################
@@ -183,7 +183,9 @@ SET (ASSIMP_SOVERSION 5)
SET( ASSIMP_PACKAGE_VERSION "0" CACHE STRING "the package-specific version used for uploading the sources" )
if(NOT ASSIMP_HUNTER_ENABLED)
# Enable C++11 support globally
set_property( GLOBAL PROPERTY CXX_STANDARD 11 )
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_STANDARD 99)
endif()
IF(NOT ASSIMP_IGNORE_GIT_HASH)
@@ -244,7 +246,7 @@ IF( UNIX )
ENDIF()
# Grouped compiler settings ########################################
IF ((CMAKE_C_COMPILER_ID MATCHES "GNU") AND NOT CMAKE_COMPILER_IS_MINGW)
IF ((CMAKE_C_COMPILER_ID MATCHES "GNU") AND NOT MINGW)
IF(NOT ASSIMP_HUNTER_ENABLED)
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
@@ -281,7 +283,7 @@ ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
ENDIF()
SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long ${CMAKE_CXX_FLAGS}" )
SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}")
ELSEIF( CMAKE_COMPILER_IS_MINGW )
ELSEIF( MINGW )
IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
message(FATAL_ERROR "MinGW is too old to be supported. Please update MinGW and try again.")
ELSEIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3)

View File

@@ -49,8 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "BlenderDNA.h"
#include "BlenderSceneGen.h"
using namespace Assimp;
using namespace Assimp::Blender;
namespace Assimp {
namespace Blender {
//--------------------------------------------------------------------------------
template <>
@@ -885,4 +885,7 @@ void DNA::RegisterConverters() {
converters["CollectionObject"] = DNA::FactoryPair(&Structure::Allocate<CollectionObject>, &Structure::Convert<CollectionObject>);
}
} // namespace Blender
} //namespace Assimp
#endif // ASSIMP_BUILD_NO_BLEND_IMPORTER

View File

@@ -2070,6 +2070,7 @@ void FBXConverter::SetTextureProperties(aiMaterial *out_mat, const LayeredTextur
TrySetTextureProperties(out_mat, layeredTextures, "ShininessExponent", aiTextureType_SHININESS, mesh);
TrySetTextureProperties(out_mat, layeredTextures, "EmissiveFactor", aiTextureType_EMISSIVE, mesh);
TrySetTextureProperties(out_mat, layeredTextures, "TransparencyFactor", aiTextureType_OPACITY, mesh);
TrySetTextureProperties(out_mat, layeredTextures, "ReflectionFactor", aiTextureType_METALNESS, mesh);
}
aiColor3D FBXConverter::GetColorPropertyFactored(const PropertyTable &props, const std::string &colorName,

View File

@@ -537,6 +537,11 @@ void LWSImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSy
// get file format version and print to log
++it;
if ((*it).tokens[0].empty()) {
ASSIMP_LOG_ERROR("Invalid LWS file detectedm abort import.");
return;
}
unsigned int version = strtoul10((*it).tokens[0].c_str());
ASSIMP_LOG_INFO("LWS file format version is ", (*it).tokens[0]);
first = 0.;

View File

@@ -463,8 +463,12 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7(
ASSIMP_LOG_WARN("Found a reference to an embedded DDS texture, "
"but texture height is not equal to 1, which is not supported by MED");
}
pcNew.reset(new aiTexture());
if (iWidth == 0) {
ASSIMP_LOG_ERROR("Found a reference to an embedded DDS texture, but texture width is zero, aborting import.");
return;
}
pcNew.reset(new aiTexture);
pcNew->mHeight = 0;
pcNew->mWidth = iWidth;

View File

@@ -133,6 +133,10 @@ struct Material {
aiString textureSpecularity;
aiString textureOpacity;
aiString textureDisp;
aiString textureRoughness;
aiString textureMetallic;
aiString textureSheen;
aiString textureRMA;
enum TextureType {
TextureDiffuseType = 0,
@@ -151,6 +155,10 @@ struct Material {
TextureSpecularityType,
TextureOpacityType,
TextureDispType,
TextureRoughnessType,
TextureMetallicType,
TextureSheenType,
TextureRMAType,
TextureTypeCount
};
bool clamp[TextureTypeCount];
@@ -174,6 +182,19 @@ struct Material {
//! Transparency color
aiColor3D transparent;
//! PBR Roughness
ai_real roughness;
//! PBR Metallic
ai_real metallic;
//! PBR Metallic
aiColor3D sheen;
//! PBR Clearcoat Thickness
ai_real clearcoat_thickness;
//! PBR Clearcoat Rougness
ai_real clearcoat_roughness;
//! PBR Anisotropy
ai_real anisotropy;
//! Constructor
Material() :
diffuse(ai_real(0.6), ai_real(0.6), ai_real(0.6)),
@@ -181,7 +202,13 @@ struct Material {
shineness(ai_real(0.0)),
illumination_model(1),
ior(ai_real(1.0)),
transparent(ai_real(1.0), ai_real(1.0), ai_real(1.0)) {
transparent(ai_real(1.0), ai_real(1.0), ai_real(1.0)),
roughness(ai_real(1.0)),
metallic(ai_real(0.0)),
sheen(ai_real(1.0), ai_real(1.0), ai_real(1.0)),
clearcoat_thickness(ai_real(0.0)),
clearcoat_roughness(ai_real(0.0)),
anisotropy(ai_real(0.0)) {
std::fill_n(clamp, static_cast<unsigned int>(TextureTypeCount), false);
}

View File

@@ -618,6 +618,12 @@ void ObjFileImporter::createMaterials(const ObjFile::Model *pModel, aiScene *pSc
mat->AddProperty(&pCurrentMaterial->shineness, 1, AI_MATKEY_SHININESS);
mat->AddProperty(&pCurrentMaterial->alpha, 1, AI_MATKEY_OPACITY);
mat->AddProperty(&pCurrentMaterial->transparent, 1, AI_MATKEY_COLOR_TRANSPARENT);
mat->AddProperty(&pCurrentMaterial->roughness, 1, AI_MATKEY_ROUGHNESS_FACTOR);
mat->AddProperty(&pCurrentMaterial->metallic, 1, AI_MATKEY_METALLIC_FACTOR);
mat->AddProperty(&pCurrentMaterial->sheen, 1, AI_MATKEY_SHEEN_COLOR_FACTOR);
mat->AddProperty(&pCurrentMaterial->clearcoat_thickness, 1, AI_MATKEY_CLEARCOAT_FACTOR);
mat->AddProperty(&pCurrentMaterial->clearcoat_roughness, 1, AI_MATKEY_CLEARCOAT_ROUGHNESS_FACTOR);
mat->AddProperty(&pCurrentMaterial->anisotropy, 1, AI_MATKEY_ANISOTROPY_FACTOR);
// Adding refraction index
mat->AddProperty(&pCurrentMaterial->ior, 1, AI_MATKEY_REFRACTI);
@@ -709,6 +715,39 @@ void ObjFileImporter::createMaterials(const ObjFile::Model *pModel, aiScene *pSc
}
}
if (0 != pCurrentMaterial->textureRoughness.length) {
mat->AddProperty(&pCurrentMaterial->textureRoughness, _AI_MATKEY_TEXTURE_BASE, aiTextureType_DIFFUSE_ROUGHNESS, 0);
mat->AddProperty(&uvwIndex, 1, _AI_MATKEY_UVWSRC_BASE, aiTextureType_DIFFUSE_ROUGHNESS, 0 );
if (pCurrentMaterial->clamp[ObjFile::Material::TextureRoughnessType]) {
addTextureMappingModeProperty(mat, aiTextureType_DIFFUSE_ROUGHNESS);
}
}
if (0 != pCurrentMaterial->textureMetallic.length) {
mat->AddProperty(&pCurrentMaterial->textureMetallic, _AI_MATKEY_TEXTURE_BASE, aiTextureType_METALNESS, 0);
mat->AddProperty(&uvwIndex, 1, _AI_MATKEY_UVWSRC_BASE, aiTextureType_METALNESS, 0 );
if (pCurrentMaterial->clamp[ObjFile::Material::TextureMetallicType]) {
addTextureMappingModeProperty(mat, aiTextureType_METALNESS);
}
}
if (0 != pCurrentMaterial->textureSheen.length) {
mat->AddProperty(&pCurrentMaterial->textureSheen, _AI_MATKEY_TEXTURE_BASE, aiTextureType_SHEEN, 0);
mat->AddProperty(&uvwIndex, 1, _AI_MATKEY_UVWSRC_BASE, aiTextureType_SHEEN, 0 );
if (pCurrentMaterial->clamp[ObjFile::Material::TextureSheenType]) {
addTextureMappingModeProperty(mat, aiTextureType_SHEEN);
}
}
if (0 != pCurrentMaterial->textureRMA.length) {
// NOTE: glTF importer places Rough/Metal/AO texture in Unknown so doing the same here for consistency.
mat->AddProperty(&pCurrentMaterial->textureRMA, _AI_MATKEY_TEXTURE_BASE, aiTextureType_UNKNOWN, 0);
mat->AddProperty(&uvwIndex, 1, _AI_MATKEY_UVWSRC_BASE, aiTextureType_UNKNOWN, 0 );
if (pCurrentMaterial->clamp[ObjFile::Material::TextureRMAType]) {
addTextureMappingModeProperty(mat, aiTextureType_UNKNOWN);
}
}
// Store material property info in material array in scene
pScene->mMaterials[pScene->mNumMaterials] = mat;
pScene->mNumMaterials++;

View File

@@ -67,6 +67,10 @@ static const std::string ReflectionTexture = "refl";
static const std::string DisplacementTexture1 = "map_disp";
static const std::string DisplacementTexture2 = "disp";
static const std::string SpecularityTexture = "map_ns";
static const std::string RoughnessTexture = "map_Pr";
static const std::string MetallicTexture = "map_Pm";
static const std::string SheenTexture = "map_Ps";
static const std::string RMATexture = "map_Ps";
// texture option specific token
static const std::string BlendUOption = "-blendu";
@@ -178,10 +182,45 @@ void ObjFileMtlImporter::load() {
case 'e': // New material
createMaterial();
break;
case 'o': // Norm texture
--m_DataIt;
getTexture();
break;
}
m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
} break;
case 'P':
{
++m_DataIt;
switch(*m_DataIt)
{
case 'r':
++m_DataIt;
getFloatValue(m_pModel->m_pCurrentMaterial->roughness);
break;
case 'm':
++m_DataIt;
getFloatValue(m_pModel->m_pCurrentMaterial->metallic);
break;
case 's':
++m_DataIt;
getColorRGBA(&m_pModel->m_pCurrentMaterial->sheen);
break;
case 'c':
++m_DataIt;
if (*m_DataIt == 'r') {
++m_DataIt;
getFloatValue(m_pModel->m_pCurrentMaterial->clearcoat_roughness);
} else {
getFloatValue(m_pModel->m_pCurrentMaterial->clearcoat_thickness);
}
break;
}
m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
}
break;
case 'm': // Texture
case 'b': // quick'n'dirty - for 'bump' sections
case 'r': // quick'n'dirty - for 'refl' sections
@@ -197,6 +236,12 @@ void ObjFileMtlImporter::load() {
m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
} break;
case 'a': // Anisotropy
{
getFloatValue(m_pModel->m_pCurrentMaterial->anisotropy);
m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
} break;
default: {
m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
} break;
@@ -334,6 +379,22 @@ void ObjFileMtlImporter::getTexture() {
// Specularity scaling (glossiness)
out = &m_pModel->m_pCurrentMaterial->textureSpecularity;
clampIndex = ObjFile::Material::TextureSpecularityType;
} else if ( !ASSIMP_strincmp( pPtr, RoughnessTexture.c_str(), static_cast<unsigned int>(RoughnessTexture.size()))) {
// PBR Roughness texture
out = & m_pModel->m_pCurrentMaterial->textureRoughness;
clampIndex = ObjFile::Material::TextureRoughnessType;
} else if ( !ASSIMP_strincmp( pPtr, MetallicTexture.c_str(), static_cast<unsigned int>(MetallicTexture.size()))) {
// PBR Metallic texture
out = & m_pModel->m_pCurrentMaterial->textureMetallic;
clampIndex = ObjFile::Material::TextureMetallicType;
} else if (!ASSIMP_strincmp( pPtr, SheenTexture.c_str(), static_cast<unsigned int>(SheenTexture.size()))) {
// PBR Sheen (reflectance) texture
out = & m_pModel->m_pCurrentMaterial->textureSheen;
clampIndex = ObjFile::Material::TextureSheenType;
} else if (!ASSIMP_strincmp( pPtr, RMATexture.c_str(), static_cast<unsigned int>(RMATexture.size()))) {
// PBR Rough/Metal/AO texture
out = & m_pModel->m_pCurrentMaterial->textureRMA;
clampIndex = ObjFile::Material::TextureRMAType;
} else {
ASSIMP_LOG_ERROR("OBJ/MTL: Encountered unknown texture type");
return;

View File

@@ -480,6 +480,6 @@ void X3DImporter::ParseHelper_Node_Exit() {
}
}
#endif // !ASSIMP_BUILD_NO_X3D_IMPORTER
} // namespace Assimp
#endif // !ASSIMP_BUILD_NO_X3D_IMPORTER

View File

@@ -557,7 +557,7 @@ ADD_ASSIMP_IMPORTER( IFC
if (ASSIMP_BUILD_IFC_IMPORTER)
if (MSVC)
set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "/bigobj")
elseif(CMAKE_COMPILER_IS_MINGW)
elseif(MINGW)
set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "-O2 -Wa,-mbig-obj")
endif()
endif ()
@@ -862,7 +862,7 @@ ADD_ASSIMP_IMPORTER( MMD
# optimizations that take up extra space. Given that the issue is a string table overflowing, -Os seemed appropriate
# Also, I'm not positive if both link & compile flags are needed, but this hopefully ensures that the issue should not
# recur for edge cases such as static builds.
if ((CMAKE_COMPILER_IS_MINGW) AND (CMAKE_BUILD_TYPE MATCHES Debug))
if ((MINGW) AND (CMAKE_BUILD_TYPE MATCHES Debug))
message("-- Applying MinGW StepFileGen1.cpp Debug Workaround")
SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES COMPILE_FLAGS -Os )
SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES LINK_FLAGS -Os )
@@ -1172,7 +1172,7 @@ ELSE()
ENDIF()
# adds C_FLAGS required to compile zip.c on old GCC 4.x compiler
TARGET_COMPILE_FEATURES(assimp PUBLIC c_std_99)
TARGET_COMPILE_FEATURES(assimp PRIVATE c_std_99)
TARGET_INCLUDE_DIRECTORIES ( assimp PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>

View File

@@ -65,6 +65,7 @@ using namespace Assimp;
// Constructor to be privately used by Importer
BaseImporter::BaseImporter() AI_NO_EXCEPT
: m_progress() {
// empty
}
// ------------------------------------------------------------------------------------------------
@@ -372,7 +373,10 @@ void BaseImporter::ConvertToUTF8(std::vector<char> &data) {
// UTF 16 BE with BOM
if (*((uint16_t *)&data.front()) == 0xFFFE) {
// Check to ensure no overflow can happen
if(data.size() % 2 != 0) {
return;
}
// swap the endianness ..
for (uint16_t *p = (uint16_t *)&data.front(), *end = (uint16_t *)&data.back(); p <= end; ++p) {
ByteSwap::Swap2(p);

View File

@@ -4,7 +4,6 @@ Open Asset Import Library (assimp)
Copyright (c) 2006-2021, assimp team
All rights reserved.
Redistribution and use of this software in source and binary forms,
@@ -48,18 +47,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <assimp/ProgressHandler.hpp>
namespace Assimp {
namespace Assimp {
// ------------------------------------------------------------------------------------
/** @brief Internal default implementation of the #ProgressHandler interface. */
/**
* @brief Internal default implementation of the #ProgressHandler interface.
*/
class DefaultProgressHandler : public ProgressHandler {
virtual bool Update(float /*percentage*/) {
public:
/// @brief Ignores the update callback.
bool Update(float) override {
return false;
}
};
}; // !class DefaultProgressHandler
} // Namespace Assimp
#endif
#endif // INCLUDED_AI_DEFAULTPROGRESSHANDLER_H

View File

@@ -329,7 +329,7 @@ bool Importer::IsDefaultIOHandler() const {
// ------------------------------------------------------------------------------------------------
// Supplies a custom progress handler to get regular callbacks during importing
void Importer::SetProgressHandler ( ProgressHandler* pHandler ) {
void Importer::SetProgressHandler(ProgressHandler* pHandler) {
ai_assert(nullptr != pimpl);
ASSIMP_BEGIN_EXCEPTION_REGION();

View File

@@ -1616,6 +1616,7 @@ endif()
if( CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_HOST_WIN32 )
# it is a bad hack after all
# CMake generates Ninja makefiles with UNIX paths only if it thinks that we are going to build with MinGW
set( MINGW TRUE ) # tell CMake that we are MinGW
set( CMAKE_COMPILER_IS_MINGW TRUE ) # tell CMake that we are MinGW
set( CMAKE_CROSSCOMPILING TRUE ) # stop recursion
enable_language( C )

View File

@@ -74,6 +74,7 @@ protected:
public:
/// @brief Virtual destructor.
virtual ~ProgressHandler () {
// empty
}
// -------------------------------------------------------------------

View File

@@ -989,6 +989,9 @@ extern "C" {
// Roughness factor. 0.0 = Perfectly Smooth, 1.0 = Completely Rough
#define AI_MATKEY_ROUGHNESS_FACTOR "$mat.roughnessFactor", 0, 0
#define AI_MATKEY_ROUGHNESS_TEXTURE aiTextureType_DIFFUSE_ROUGHNESS, 0
// Anisotropy factor. 0.0 = isotropic, 1.0 = anisotropy along tangent direction,
// -1.0 = anisotropy along bitangent direction
#define AI_MATKEY_ANISOTROPY_FACTOR "$mat.anisotropyFactor", 0, 0
// Specular/Glossiness Workflow
// ---------------------------

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

View File

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
Copyright (c) 2006-2021, assimp team
All rights reserved.
Redistribution and use of this software in source and binary forms,
@@ -47,6 +45,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "Main.h"
#include <assimp/ProgressHandler.hpp>
#include <iostream>
class ConsoleProgressHandler : public ProgressHandler {
public:
ConsoleProgressHandler() :
ProgressHandler() {
// empty
}
~ConsoleProgressHandler() override {
// empty
}
bool Update(float percentage) override {
std::cout << percentage * 100.0f << " %\n";
return true;
}
};
const char* AICMD_MSG_ABOUT =
"------------------------------------------------------ \n"
"Open Asset Import Library (\"Assimp\", https://github.com/assimp/assimp) \n"
@@ -73,10 +90,10 @@ const char* AICMD_MSG_HELP =
"\n Use \'assimp <verb> --help\' for detailed help on a command.\n"
;
/*extern*/ Assimp::Importer* globalImporter = NULL;
/*extern*/ Assimp::Importer* globalImporter = nullptr;
#ifndef ASSIMP_BUILD_NO_EXPORT
/*extern*/ Assimp::Exporter* globalExporter = NULL;
/*extern*/ Assimp::Exporter* globalExporter = nullptr;
#endif
// ------------------------------------------------------------------------------
@@ -286,6 +303,9 @@ const aiScene* ImportModel(
// do the actual import, measure time
const clock_t first = clock();
ConsoleProgressHandler *ph = new ConsoleProgressHandler;
globalImporter->SetProgressHandler(ph);
const aiScene* scene = globalImporter->ReadFile(path,imp.ppFlags);
if (imp.showLog) {
@@ -305,6 +325,9 @@ const aiScene* ImportModel(
if (imp.log) {
FreeLogStreams();
}
globalImporter->SetProgressHandler(nullptr);
delete ph;
return scene;
}