- Update : Apply simple patch for debian-specific build-fixes: adapt architecture-macro.
- Bugfix : Fix a type in FixNormalStep. - Bugfix : Fix a missing exception in Obj-Importer, texture coordinate import. git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1079 67173fc5-114c-0410-ac8e-9d2fd5bffc1fpull/2/head
parent
487071be77
commit
d5bd7009a6
|
@ -51,7 +51,7 @@ namespace Assimp
|
||||||
{
|
{
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
/** The FixInfacingNormalsProcess tries to deteermine whether the normal
|
/** The FixInfacingNormalsProcess tries to determine whether the normal
|
||||||
* vectors of an object are facing inwards. In this case they will be
|
* vectors of an object are facing inwards. In this case they will be
|
||||||
* flipped.
|
* flipped.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -528,26 +528,34 @@ void WriteLogOpening(const std::string& file)
|
||||||
<< "."
|
<< "."
|
||||||
<< aiGetVersionRevision()
|
<< aiGetVersionRevision()
|
||||||
|
|
||||||
#if defined(ASSIMP_BUILD_X86_32BIT_ARCHITECTURE)
|
<< " "
|
||||||
<< " x86"
|
#if defined(ASSIMP_BUILD_ARCHITECTURE)
|
||||||
#elif defined(ASSIMP_BUILD_X86_64BIT_ARCHITECTURE)
|
<< ASSIMP_BUILD_ARCHITECTURE
|
||||||
<< " amd64"
|
#elif defined(_M_IX86) || defined(__x86_32__) || defined(__i386__)
|
||||||
#elif defined(ASSIMP_BUILD_IA_64BIT_ARCHITECTURE)
|
<< "x86"
|
||||||
<< " itanium"
|
#elif defined(_M_X64) || defined(__x86_64__)
|
||||||
#elif defined(ASSIMP_BUILD_PPC_32BIT_ARCHITECTURE)
|
<< "amd64"
|
||||||
<< " ppc32"
|
#elif defined(_M_IA64) || defined(__ia64__)
|
||||||
#elif defined(ASSIMP_BUILD_ARM_32BIT_ARCHITECTURE)
|
<< "itanium"
|
||||||
<< " arm"
|
#elif defined(__ppc__) || defined(__powerpc__)
|
||||||
|
<< "ppc32"
|
||||||
|
#elif defined(__powerpc64__)
|
||||||
|
<< "ppc64"
|
||||||
|
#elif defined(__arm__)
|
||||||
|
<< "arm"
|
||||||
#else
|
#else
|
||||||
# error unknown architecture
|
<< "<unknown architecture>"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
<< " "
|
||||||
<< " msvc"
|
#if defined(ASSIMP_BUILD_COMPILER)
|
||||||
|
<< ASSIMP_BUILD_COMPILER
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
<< "msvc"
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
<< " gcc"
|
<< "gcc"
|
||||||
#else
|
#else
|
||||||
# error unknown compiler
|
<< "<unknown compiler>"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
|
|
@ -96,12 +96,12 @@ void ObjFileImporter::InternReadFile( const std::string& pFile, aiScene* pScene,
|
||||||
DefaultIOSystem io;
|
DefaultIOSystem io;
|
||||||
|
|
||||||
// Read file into memory
|
// Read file into memory
|
||||||
const std::string mode = "rb";
|
const std::string mode = "rb";
|
||||||
boost::scoped_ptr<IOStream> file( pIOHandler->Open( pFile, mode));
|
boost::scoped_ptr<IOStream> file( pIOHandler->Open( pFile, mode));
|
||||||
if (NULL == file.get())
|
if (NULL == file.get())
|
||||||
throw DeadlyImportError( "Failed to open file " + pFile + ".");
|
throw DeadlyImportError( "Failed to open file " + pFile + ".");
|
||||||
|
|
||||||
// Get the filesize and vaslidate it, throwing an exception when failes
|
// Get the file-size and validate it, throwing an exception when fails
|
||||||
size_t fileSize = file->FileSize();
|
size_t fileSize = file->FileSize();
|
||||||
if( fileSize < 16)
|
if( fileSize < 16)
|
||||||
throw DeadlyImportError( "OBJ-file is too small.");
|
throw DeadlyImportError( "OBJ-file is too small.");
|
||||||
|
@ -189,10 +189,10 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile
|
||||||
|
|
||||||
pNode->mName = pObject->m_strObjName;
|
pNode->mName = pObject->m_strObjName;
|
||||||
|
|
||||||
|
// If we have a parent node, store it
|
||||||
if (pParent != NULL)
|
if (pParent != NULL)
|
||||||
appendChildToParentNode(pParent, pNode);
|
appendChildToParentNode(pParent, pNode);
|
||||||
|
|
||||||
|
|
||||||
for ( unsigned int i=0; i< pObject->m_Meshes.size(); i++ )
|
for ( unsigned int i=0; i< pObject->m_Meshes.size(); i++ )
|
||||||
{
|
{
|
||||||
unsigned int meshId = pObject->m_Meshes[ i ];
|
unsigned int meshId = pObject->m_Meshes[ i ];
|
||||||
|
@ -358,9 +358,8 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel,
|
||||||
for ( size_t vertexIndex = 0, outVertexIndex = 0; vertexIndex < pSourceFace->m_pVertices->size(); vertexIndex++ )
|
for ( size_t vertexIndex = 0, outVertexIndex = 0; vertexIndex < pSourceFace->m_pVertices->size(); vertexIndex++ )
|
||||||
{
|
{
|
||||||
const unsigned int vertex = pSourceFace->m_pVertices->at( vertexIndex );
|
const unsigned int vertex = pSourceFace->m_pVertices->at( vertexIndex );
|
||||||
if (vertex >= pModel->m_Vertices.size()) {
|
if ( vertex >= pModel->m_Vertices.size() )
|
||||||
throw DeadlyImportError("OBJ: vertex index out of range");
|
throw DeadlyImportError( "OBJ: vertex index out of range" );
|
||||||
}
|
|
||||||
|
|
||||||
pMesh->mVertices[ newIndex ] = pModel->m_Vertices[ vertex ];
|
pMesh->mVertices[ newIndex ] = pModel->m_Vertices[ vertex ];
|
||||||
|
|
||||||
|
@ -368,9 +367,8 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel,
|
||||||
if ( !pSourceFace->m_pNormals->empty() && !pModel->m_Normals.empty())
|
if ( !pSourceFace->m_pNormals->empty() && !pModel->m_Normals.empty())
|
||||||
{
|
{
|
||||||
const unsigned int normal = pSourceFace->m_pNormals->at( vertexIndex );
|
const unsigned int normal = pSourceFace->m_pNormals->at( vertexIndex );
|
||||||
if (normal >= pModel->m_Normals.size()) {
|
if ( normal >= pModel->m_Normals.size() )
|
||||||
throw DeadlyImportError("OBJ: vertex normal index out of range");
|
throw DeadlyImportError("OBJ: vertex normal index out of range");
|
||||||
}
|
|
||||||
|
|
||||||
pMesh->mNormals[ newIndex ] = pModel->m_Normals[ normal ];
|
pMesh->mNormals[ newIndex ] = pModel->m_Normals[ normal ];
|
||||||
}
|
}
|
||||||
|
@ -384,6 +382,9 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel,
|
||||||
ai_assert( tex < pModel->m_TextureCoord.size() );
|
ai_assert( tex < pModel->m_TextureCoord.size() );
|
||||||
for ( size_t i=0; i < pMesh->GetNumUVChannels(); i++ )
|
for ( size_t i=0; i < pMesh->GetNumUVChannels(); i++ )
|
||||||
{
|
{
|
||||||
|
if ( tex >= pModel->m_TextureCoord.size() )
|
||||||
|
throw DeadlyImportError("OBJ: texture coord index out of range");
|
||||||
|
|
||||||
aiVector2D coord2d = pModel->m_TextureCoord[ tex ];
|
aiVector2D coord2d = pModel->m_TextureCoord[ tex ];
|
||||||
pMesh->mTextureCoords[ i ][ newIndex ] = aiVector3D( coord2d.x, coord2d.y, 0.0 );
|
pMesh->mTextureCoords[ i ][ newIndex ] = aiVector3D( coord2d.x, coord2d.y, 0.0 );
|
||||||
}
|
}
|
||||||
|
@ -395,21 +396,24 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel,
|
||||||
// Get destination face
|
// Get destination face
|
||||||
aiFace *pDestFace = &pMesh->mFaces[ outIndex ];
|
aiFace *pDestFace = &pMesh->mFaces[ outIndex ];
|
||||||
|
|
||||||
const bool last = vertexIndex == pSourceFace->m_pVertices->size() - 1;
|
const bool last = ( vertexIndex == pSourceFace->m_pVertices->size() - 1 );
|
||||||
if (pSourceFace->m_PrimitiveType != aiPrimitiveType_LINE || !last) {
|
if (pSourceFace->m_PrimitiveType != aiPrimitiveType_LINE || !last)
|
||||||
pDestFace->mIndices[ outVertexIndex++ ] = newIndex;
|
{
|
||||||
|
pDestFace->mIndices[ outVertexIndex ] = newIndex;
|
||||||
|
outVertexIndex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSourceFace->m_PrimitiveType == aiPrimitiveType_POINT) {
|
if (pSourceFace->m_PrimitiveType == aiPrimitiveType_POINT)
|
||||||
|
{
|
||||||
outIndex++;
|
outIndex++;
|
||||||
outVertexIndex = 0;
|
outVertexIndex = 0;
|
||||||
}
|
}
|
||||||
else if (pSourceFace->m_PrimitiveType == aiPrimitiveType_LINE) {
|
else if (pSourceFace->m_PrimitiveType == aiPrimitiveType_LINE)
|
||||||
|
{
|
||||||
outVertexIndex = 0;
|
outVertexIndex = 0;
|
||||||
|
|
||||||
if(!last) {
|
if(!last)
|
||||||
outIndex++;
|
outIndex++;
|
||||||
}
|
|
||||||
|
|
||||||
if (vertexIndex) {
|
if (vertexIndex) {
|
||||||
if(!last) {
|
if(!last) {
|
||||||
|
|
|
@ -220,37 +220,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
# define ASSIMP_BUILD_DEBUG
|
# define ASSIMP_BUILD_DEBUG
|
||||||
#endif
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
/* ASSIMP_BUILD_XXXX_NNBIT_ARCHITECTURE */
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
// See http://msdn.microsoft.com/en-us/library/b0084kay.
|
|
||||||
# if defined(_M_IX86)
|
|
||||||
# define ASSIMP_BUILD_X86_32BIT_ARCHITECTURE
|
|
||||||
# elif defined(_M_X64)
|
|
||||||
# define ASSIMP_BUILD_X86_64BIT_ARCHITECTURE
|
|
||||||
# elif defined(_M_IA64)
|
|
||||||
# define ASSIMP_BUILD_IA_64BIT_ARCHITECTURE
|
|
||||||
# else
|
|
||||||
# error unknown architecture
|
|
||||||
# endif
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
// See http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html.
|
|
||||||
# if defined(__x86_32__) || defined(__i386__)
|
|
||||||
# define ASSIMP_BUILD_X86_32BIT_ARCHITECTURE
|
|
||||||
# elif defined(__x86_64__)
|
|
||||||
# define ASSIMP_BUILD_X86_64BIT_ARCHITECTURE
|
|
||||||
# elif defined(__ppc__)
|
|
||||||
# define ASSIMP_BUILD_PPC_32BIT_ARCHITECTURE
|
|
||||||
# elif defined(__arm__)
|
|
||||||
# define ASSIMP_BUILD_ARM_32BIT_ARCHITECTURE
|
|
||||||
# else
|
|
||||||
# error "unknown architecture"
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# error unknown compiler
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -271,9 +240,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define AI_DEG_TO_RAD(x) (x*0.0174532925f)
|
#define AI_DEG_TO_RAD(x) (x*0.0174532925f)
|
||||||
#define AI_RAD_TO_DEG(x) (x*57.2957795f)
|
#define AI_RAD_TO_DEG(x) (x*57.2957795f)
|
||||||
|
|
||||||
/* Support for big-endian builds on Mac OS X. */
|
/* Support for big-endian builds */
|
||||||
#if defined(__APPLE__) && defined(__BIG_ENDIAN__)
|
#if defined(__BYTE_ORDER__)
|
||||||
#define AI_BUILD_BIG_ENDIAN
|
# if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||||
|
# if !defined(__BIG_ENDIAN__)
|
||||||
|
# define __BIG_ENDIAN__
|
||||||
|
# endif
|
||||||
|
# else /* little endian */
|
||||||
|
# if defined (__BIG_ENDIAN__)
|
||||||
|
# undef __BIG_ENDIAN__
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(__BIG_ENDIAN__)
|
||||||
|
# define AI_BUILD_BIG_ENDIAN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // !! INCLUDED_AI_DEFINES_H
|
#endif // !! INCLUDED_AI_DEFINES_H
|
||||||
|
|
Loading…
Reference in New Issue