From 1829481591851abc3daf5119c4cab006a3c1f484 Mon Sep 17 00:00:00 2001 From: kimmi Date: Fri, 27 Nov 2009 14:33:29 +0000 Subject: [PATCH] - UPDATE : Add group loading support to Obj-Loader. Many thanks to Robert Ramirez for this Patch. - UPDATE : Add Robert Ramirez to CREDITS file. git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@506 67173fc5-114c-0410-ac8e-9d2fd5bffc1f --- CREDITS | 5 +- code/ObjFileImporter.cpp | 7 +- code/ObjFileImporter.h | 2 +- code/ObjFileParser.cpp | 22 +- workspaces/vc8/UnitTest.vcproj | 1429 ++++++++++++----------- workspaces/vc8/assimp.sln | 24 +- workspaces/vc8/assimp.vcproj | 1753 ++++++++++++++--------------- workspaces/vc8/assimp_cmd.vcproj | 1217 ++++++++++---------- workspaces/vc8/assimp_view.vcproj | 1265 +++++++++++---------- 9 files changed, 2858 insertions(+), 2866 deletions(-) diff --git a/CREDITS b/CREDITS index f8df35a74..c32836df6 100644 --- a/CREDITS +++ b/CREDITS @@ -69,4 +69,7 @@ Updated PyAssimp to the latest Assimp data structures and provided a script to k Collada testing with Cinema 4D - Brad Grantham -Improvements in OpenGL-sample +Improvements in OpenGL-Sample. + +- Robert Ramirez +Add group loading feature to Obj-Loader. diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index df061f851..1c279cbc7 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -155,7 +155,7 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene std::vector MeshArray; for (size_t index = 0; index < pModel->m_Objects.size(); index++) { - createNodes(pModel, pModel->m_Objects[ index ], pScene->mRootNode, pScene, MeshArray); + createNodes(pModel, pModel->m_Objects[ index ], index, pScene->mRootNode, pScene, MeshArray); } // Create mesh pointer buffer for this scene @@ -178,6 +178,7 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene // ------------------------------------------------------------------------------------------------ // Creates all nodes of the model aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile::Object* pData, + unsigned int uiMeshIndex, aiNode *pParent, aiScene* pScene, std::vector &MeshArray) { @@ -192,10 +193,10 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile this->appendChildToParentNode(pParent, pNode); aiMesh *pMesh = NULL; - for (unsigned int meshIndex = 0; meshIndex < pModel->m_Meshes.size(); meshIndex++) + //for (unsigned int meshIndex = 0; meshIndex < pModel->m_Meshes.size(); meshIndex++) { pMesh = new aiMesh(); - createTopology( pModel, pData, meshIndex, pMesh ); + createTopology( pModel, pData, uiMeshIndex, pMesh ); if (pMesh->mNumVertices > 0) { MeshArray.push_back( pMesh ); } diff --git a/code/ObjFileImporter.h b/code/ObjFileImporter.h index bbfc48c9c..996c73a83 100644 --- a/code/ObjFileImporter.h +++ b/code/ObjFileImporter.h @@ -90,7 +90,7 @@ private: void CreateDataFromImport(const ObjFile::Model* pModel, aiScene* pScene); //! \brief Creates all nodes stored in imported content. - aiNode *createNodes(const ObjFile::Model* pModel, const ObjFile::Object* pData, + aiNode *createNodes(const ObjFile::Model* pModel, const ObjFile::Object* pData, unsigned int uiMeshIndex, aiNode *pParent, aiScene* pScene, std::vector &MeshArray); //! \brief Creates topology data like faces and meshes for the geometry. diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index 7e67f953a..f1d468890 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -385,9 +385,9 @@ void ObjFileParser::getMaterialDesc() { // Not found, use default material m_pModel->m_pCurrentMaterial = m_pModel->m_pDefaultMaterial; - m_pModel->m_pCurrentMesh = new ObjFile::Mesh(); - m_pModel->m_Meshes.push_back( m_pModel->m_pCurrentMesh ); - m_pModel->m_pCurrentMesh->m_uiMaterialIndex = getMaterialIndex( DEFAULT_MATERIAL ); + //m_pModel->m_pCurrentMesh = new ObjFile::Mesh(); + //m_pModel->m_Meshes.push_back( m_pModel->m_pCurrentMesh ); + //m_pModel->m_pCurrentMesh->m_uiMaterialIndex = getMaterialIndex( DEFAULT_MATERIAL ); } else { @@ -395,9 +395,9 @@ void ObjFileParser::getMaterialDesc() m_pModel->m_pCurrentMaterial = (*it).second; // Create a new mesh for a new material - m_pModel->m_pCurrentMesh = new ObjFile::Mesh(); - m_pModel->m_Meshes.push_back( m_pModel->m_pCurrentMesh ); - m_pModel->m_pCurrentMesh->m_uiMaterialIndex = getMaterialIndex( strName ); + //m_pModel->m_pCurrentMesh = new ObjFile::Mesh(); + //m_pModel->m_Meshes.push_back( m_pModel->m_pCurrentMesh ); + //m_pModel->m_pCurrentMesh->m_uiMaterialIndex = getMaterialIndex( strName ); } // Skip rest of line @@ -597,6 +597,16 @@ void ObjFileParser::createObject(const std::string &strObjectName) m_pModel->m_pCurrent = new ObjFile::Object(); m_pModel->m_pCurrent->m_strObjName = strObjectName; m_pModel->m_Objects.push_back(m_pModel->m_pCurrent); + + m_pModel->m_pCurrentMesh = new ObjFile::Mesh(); + m_pModel->m_Meshes.push_back( m_pModel->m_pCurrentMesh ); + + if(m_pModel->m_pCurrentMaterial) + { + m_pModel->m_pCurrentMesh->m_uiMaterialIndex = + getMaterialIndex( m_pModel->m_pCurrentMaterial->MaterialName.data ); + m_pModel->m_pCurrentMesh->m_pMaterial = m_pModel->m_pCurrentMaterial; + } } // ------------------------------------------------------------------- diff --git a/workspaces/vc8/UnitTest.vcproj b/workspaces/vc8/UnitTest.vcproj index 6cb864c33..79ce5b272 100644 --- a/workspaces/vc8/UnitTest.vcproj +++ b/workspaces/vc8/UnitTest.vcproj @@ -1,11 +1,12 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1517,14 +1502,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1533,14 +1510,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1549,14 +1518,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1565,14 +1526,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1581,14 +1534,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1598,7 +1543,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -1649,14 +1634,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1665,14 +1642,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1681,14 +1650,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1697,14 +1658,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1713,14 +1666,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1730,7 +1675,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -1790,14 +1775,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1806,14 +1783,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1822,14 +1791,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1838,14 +1799,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1854,14 +1807,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1871,7 +1816,7 @@ /> + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1394,14 +1385,6 @@ UsePrecompiledHeader="0" /> - - - @@ -1426,6 +1409,22 @@ UsePrecompiledHeader="0" /> + + + + + + @@ -2200,14 +2199,6 @@ PrecompiledHeaderThrough="AssimpPCH.h" /> - - - @@ -2235,14 +2226,6 @@ PrecompiledHeaderThrough="AssimpPCH.h" /> - - - @@ -2270,6 +2253,22 @@ PrecompiledHeaderThrough="AssimpPCH.h" /> + + + + + + @@ -2409,14 +2408,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2425,14 +2416,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2441,14 +2424,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2457,14 +2432,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2473,14 +2440,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2489,14 +2448,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2506,7 +2457,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -2569,14 +2560,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2585,14 +2568,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2601,14 +2576,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2617,14 +2584,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2633,14 +2592,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2650,7 +2601,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -2701,14 +2692,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2717,14 +2700,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2733,14 +2708,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2749,14 +2716,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2765,14 +2724,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2782,7 +2733,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -2837,14 +2828,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2853,14 +2836,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2869,14 +2844,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2885,14 +2852,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2901,14 +2860,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2918,7 +2869,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -2977,14 +2968,6 @@ UsePrecompiledHeader="0" /> - - - @@ -2993,14 +2976,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3009,14 +2984,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3025,14 +2992,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3041,14 +3000,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3058,7 +3009,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -3113,14 +3104,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3129,14 +3112,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3145,14 +3120,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3161,14 +3128,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3177,14 +3136,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3194,7 +3145,7 @@ /> + + + + + + + + + + + + + + + + + + - - - @@ -3261,14 +3252,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3277,14 +3260,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3293,14 +3268,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3309,14 +3276,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3325,14 +3284,6 @@ UsePrecompiledHeader="0" /> - - - @@ -3342,7 +3293,7 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1342,14 +1327,6 @@ AdditionalIncludeDirectories="./" /> - - - @@ -1358,14 +1335,6 @@ AdditionalIncludeDirectories="./" /> - - - @@ -1374,14 +1343,6 @@ AdditionalIncludeDirectories="./" /> - - - @@ -1390,14 +1351,6 @@ AdditionalIncludeDirectories="./" /> - - - @@ -1406,14 +1359,6 @@ AdditionalIncludeDirectories="./" /> - - - @@ -1423,7 +1368,7 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1498,14 +1483,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1514,14 +1491,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1530,14 +1499,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1546,14 +1507,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1562,14 +1515,6 @@ UsePrecompiledHeader="1" /> - - - @@ -1579,7 +1524,7 @@ /> + + + + + + + + + + + + + + + + + +