update: some micro improvements, replace post-increment operator with pre-increment operator.
Signed-off-by: Kim Kulling <kim.kulling@googlemail.com>pull/309/head
parent
0856ff9659
commit
b3b732c12b
|
@ -115,9 +115,9 @@ bool CalcTangentsProcess::ProcessMesh( aiMesh* pMesh, unsigned int meshIndex)
|
||||||
// we assume that the mesh is still in the verbose vertex format where each face has its own set
|
// we assume that the mesh is still in the verbose vertex format where each face has its own set
|
||||||
// of vertices and no vertices are shared between faces. Sadly I don't know any quick test to
|
// of vertices and no vertices are shared between faces. Sadly I don't know any quick test to
|
||||||
// assert() it here.
|
// assert() it here.
|
||||||
//assert( must be verbose, dammit);
|
// assert( must be verbose, dammit);
|
||||||
|
|
||||||
if (pMesh->mTangents) // thisimplies that mBitangents is also there
|
if (pMesh->mTangents) // this implies that mBitangents is also there
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// If the mesh consists of lines and/or points but not of
|
// If the mesh consists of lines and/or points but not of
|
||||||
|
|
|
@ -75,6 +75,7 @@ void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene
|
||||||
|
|
||||||
} // end of namespace Assimp
|
} // end of namespace Assimp
|
||||||
|
|
||||||
|
static const std::string MaterialExt = ".mtl";
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
ObjExporter :: ObjExporter(const char* _filename, const aiScene* pScene)
|
ObjExporter :: ObjExporter(const char* _filename, const aiScene* pScene)
|
||||||
|
@ -107,7 +108,7 @@ std::string ObjExporter :: GetMaterialLibName()
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
std::string ObjExporter :: GetMaterialLibFileName()
|
std::string ObjExporter :: GetMaterialLibFileName()
|
||||||
{
|
{
|
||||||
return filename + ".mtl";
|
return filename + MaterialExt;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -132,7 +133,7 @@ std::string ObjExporter :: GetMaterialName(unsigned int index)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void ObjExporter :: WriteMaterialFile()
|
void ObjExporter::WriteMaterialFile()
|
||||||
{
|
{
|
||||||
WriteHeader(mOutputMat);
|
WriteHeader(mOutputMat);
|
||||||
|
|
||||||
|
@ -281,7 +282,7 @@ void ObjExporter::vecIndexMap::getVectors( std::vector<aiVector3D>& vecs )
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void ObjExporter :: AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat)
|
void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat)
|
||||||
{
|
{
|
||||||
meshes.push_back(MeshInstance());
|
meshes.push_back(MeshInstance());
|
||||||
MeshInstance& mesh = meshes.back();
|
MeshInstance& mesh = meshes.back();
|
||||||
|
@ -332,7 +333,7 @@ void ObjExporter :: AddMesh(const aiString& name, const aiMesh* m, const aiMatri
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void ObjExporter :: AddNode(const aiNode* nd, const aiMatrix4x4& mParent)
|
void ObjExporter::AddNode(const aiNode* nd, const aiMatrix4x4& mParent)
|
||||||
{
|
{
|
||||||
const aiMatrix4x4& mAbs = mParent * nd->mTransformation;
|
const aiMatrix4x4& mAbs = mParent * nd->mTransformation;
|
||||||
|
|
||||||
|
@ -345,5 +346,7 @@ void ObjExporter :: AddNode(const aiNode* nd, const aiMatrix4x4& mParent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
// ------------------------------------------------------------------------------------------------
|
||||||
#endif
|
|
||||||
|
#endif // ASSIMP_BUILD_NO_OBJ_EXPORTER
|
||||||
|
#endif // ASSIMP_BUILD_NO_EXPORT
|
||||||
|
|
|
@ -550,13 +550,15 @@ void ObjFileParser::getNewMaterial()
|
||||||
{
|
{
|
||||||
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
|
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
|
||||||
m_DataIt = getNextWord<DataArrayIt>(m_DataIt, m_DataItEnd);
|
m_DataIt = getNextWord<DataArrayIt>(m_DataIt, m_DataItEnd);
|
||||||
if ( m_DataIt == m_DataItEnd )
|
if( m_DataIt == m_DataItEnd ) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
char *pStart = &(*m_DataIt);
|
char *pStart = &(*m_DataIt);
|
||||||
std::string strMat( pStart, *m_DataIt );
|
std::string strMat( pStart, *m_DataIt );
|
||||||
while ( m_DataIt != m_DataItEnd && isSeparator( *m_DataIt ) )
|
while( m_DataIt != m_DataItEnd && isSeparator( *m_DataIt ) ) {
|
||||||
m_DataIt++;
|
++m_DataIt;
|
||||||
|
}
|
||||||
std::map<std::string, ObjFile::Material*>::iterator it = m_pModel->m_MaterialMap.find( strMat );
|
std::map<std::string, ObjFile::Material*>::iterator it = m_pModel->m_MaterialMap.find( strMat );
|
||||||
if ( it == m_pModel->m_MaterialMap.end() )
|
if ( it == m_pModel->m_MaterialMap.end() )
|
||||||
{
|
{
|
||||||
|
@ -581,8 +583,9 @@ void ObjFileParser::getNewMaterial()
|
||||||
int ObjFileParser::getMaterialIndex( const std::string &strMaterialName )
|
int ObjFileParser::getMaterialIndex( const std::string &strMaterialName )
|
||||||
{
|
{
|
||||||
int mat_index = -1;
|
int mat_index = -1;
|
||||||
if ( strMaterialName.empty() )
|
if( strMaterialName.empty() ) {
|
||||||
return mat_index;
|
return mat_index;
|
||||||
|
}
|
||||||
for (size_t index = 0; index < m_pModel->m_MaterialLib.size(); ++index)
|
for (size_t index = 0; index < m_pModel->m_MaterialLib.size(); ++index)
|
||||||
{
|
{
|
||||||
if ( strMaterialName == m_pModel->m_MaterialLib[ index ])
|
if ( strMaterialName == m_pModel->m_MaterialLib[ index ])
|
||||||
|
@ -601,8 +604,9 @@ void ObjFileParser::getGroupName()
|
||||||
std::string strGroupName;
|
std::string strGroupName;
|
||||||
|
|
||||||
m_DataIt = getName<DataArrayIt>(m_DataIt, m_DataItEnd, strGroupName);
|
m_DataIt = getName<DataArrayIt>(m_DataIt, m_DataItEnd, strGroupName);
|
||||||
if ( isEndOfBuffer( m_DataIt, m_DataItEnd ) )
|
if( isEndOfBuffer( m_DataIt, m_DataItEnd ) ) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Change active group, if necessary
|
// Change active group, if necessary
|
||||||
if ( m_pModel->m_strActiveGroup != strGroupName )
|
if ( m_pModel->m_strActiveGroup != strGroupName )
|
||||||
|
@ -653,11 +657,13 @@ void ObjFileParser::getGroupNumberAndResolution()
|
||||||
void ObjFileParser::getObjectName()
|
void ObjFileParser::getObjectName()
|
||||||
{
|
{
|
||||||
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
|
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
|
||||||
if (m_DataIt == m_DataItEnd)
|
if( m_DataIt == m_DataItEnd ) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
char *pStart = &(*m_DataIt);
|
char *pStart = &(*m_DataIt);
|
||||||
while ( m_DataIt != m_DataItEnd && !isSeparator( *m_DataIt ) )
|
while( m_DataIt != m_DataItEnd && !isSeparator( *m_DataIt ) ) {
|
||||||
++m_DataIt;
|
++m_DataIt;
|
||||||
|
}
|
||||||
|
|
||||||
std::string strObjectName(pStart, &(*m_DataIt));
|
std::string strObjectName(pStart, &(*m_DataIt));
|
||||||
if (!strObjectName.empty())
|
if (!strObjectName.empty())
|
||||||
|
@ -678,8 +684,9 @@ void ObjFileParser::getObjectName()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allocate a new object, if current one was not found before
|
// Allocate a new object, if current one was not found before
|
||||||
if ( NULL == m_pModel->m_pCurrent )
|
if( NULL == m_pModel->m_pCurrent ) {
|
||||||
createObject(strObjectName);
|
createObject( strObjectName );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
|
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
|
||||||
}
|
}
|
||||||
|
@ -694,7 +701,6 @@ void ObjFileParser::createObject(const std::string &strObjectName)
|
||||||
m_pModel->m_pCurrent->m_strObjName = strObjectName;
|
m_pModel->m_pCurrent->m_strObjName = strObjectName;
|
||||||
m_pModel->m_Objects.push_back( m_pModel->m_pCurrent );
|
m_pModel->m_Objects.push_back( m_pModel->m_pCurrent );
|
||||||
|
|
||||||
|
|
||||||
createMesh();
|
createMesh();
|
||||||
|
|
||||||
if( m_pModel->m_pCurrentMaterial )
|
if( m_pModel->m_pCurrentMaterial )
|
||||||
|
|
|
@ -259,4 +259,4 @@ unsigned int tokenize( const string_type& str, std::vector<string_type>& tokens,
|
||||||
|
|
||||||
} // Namespace Assimp
|
} // Namespace Assimp
|
||||||
|
|
||||||
#endif
|
#endif // OBJ_TOOLS_H_INC
|
||||||
|
|
|
@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define AI_PARSING_UTILS_H_INC
|
#define AI_PARSING_UTILS_H_INC
|
||||||
|
|
||||||
#include "StringComparison.h"
|
#include "StringComparison.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
// NOTE: the functions below are mostly intended as replacement for
|
// NOTE: the functions below are mostly intended as replacement for
|
||||||
|
|
Loading…
Reference in New Issue