Improved support for loading meshes with per vertex texture coords (as saved by blender)
This commit is contained in:
parent
092211c82c
commit
7ef26b5a25
|
|
@ -276,7 +276,7 @@ struct LoadPly_Camera
|
||||||
float k4;
|
float k4;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define _VERTDESC_LAST_ 20
|
#define _VERTDESC_LAST_ 22
|
||||||
static const PropDescriptor &VertDesc(int i)
|
static const PropDescriptor &VertDesc(int i)
|
||||||
{
|
{
|
||||||
static const PropDescriptor pv[_VERTDESC_LAST_]={
|
static const PropDescriptor pv[_VERTDESC_LAST_]={
|
||||||
|
|
@ -300,6 +300,8 @@ static const PropDescriptor &VertDesc(int i)
|
||||||
/*17*/ {"vertex", "texture_v", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,v),0,0,0,0,0 ,0},
|
/*17*/ {"vertex", "texture_v", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,v),0,0,0,0,0 ,0},
|
||||||
/*18*/ {"vertex", "texture_w", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,w),0,0,0,0,0 ,0},
|
/*18*/ {"vertex", "texture_w", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,w),0,0,0,0,0 ,0},
|
||||||
/*19*/ {"vertex", "intensity", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,intensity),0,0,0,0,0 ,0},
|
/*19*/ {"vertex", "intensity", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,intensity),0,0,0,0,0 ,0},
|
||||||
|
/*20*/ {"vertex", "s", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,u),0,0,0,0,0 ,0},
|
||||||
|
/*21*/ {"vertex", "t", ply::T_FLOAT, ply::T_FLOAT, offsetof(LoadPly_VertAux<ScalarType>,v),0,0,0,0,0 ,0},
|
||||||
|
|
||||||
};
|
};
|
||||||
return pv[i];
|
return pv[i];
|
||||||
|
|
@ -573,7 +575,17 @@ static int Open( OpenMeshType &m, const char * filename, PlyInfo &pi )
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if( tri::HasPerVertexTexCoord(m) )
|
||||||
|
{
|
||||||
|
if(( pf.AddToRead(VertDesc(20))!=-1 )&& (pf.AddToRead(VertDesc(21))!=-1))
|
||||||
|
{
|
||||||
|
pi.mask |= Mask::IOM_VERTTEXCOORD;
|
||||||
|
}
|
||||||
|
if(( pf.AddToRead(VertDesc(16))!=-1 )&& (pf.AddToRead(VertDesc(17))!=-1))
|
||||||
|
{
|
||||||
|
pi.mask |= Mask::IOM_VERTTEXCOORD;
|
||||||
|
}
|
||||||
|
}
|
||||||
if(tri::HasPerVertexRadius(m))
|
if(tri::HasPerVertexRadius(m))
|
||||||
{
|
{
|
||||||
if( pf.AddToRead(VertDesc(15))!=-1 )
|
if( pf.AddToRead(VertDesc(15))!=-1 )
|
||||||
|
|
@ -878,7 +890,7 @@ static int Open( OpenMeshType &m, const char * filename, PlyInfo &pi )
|
||||||
int curpos=int(fi-m.face.begin());
|
int curpos=int(fi-m.face.begin());
|
||||||
Allocator<OpenMeshType>::AddFaces(m,fa.size-3);
|
Allocator<OpenMeshType>::AddFaces(m,fa.size-3);
|
||||||
fi=m.face.begin()+curpos;
|
fi=m.face.begin()+curpos;
|
||||||
|
pi.mask |= Mask::IOM_BITPOLYGONAL;
|
||||||
}
|
}
|
||||||
for(int qq=0;qq<fa.size-3;++qq)
|
for(int qq=0;qq<fa.size-3;++qq)
|
||||||
{
|
{
|
||||||
|
|
@ -1178,6 +1190,12 @@ static bool LoadMask(const char * filename, int &mask, PlyInfo &pi)
|
||||||
( pf.AddToRead(VertDesc(10))!=-1 ) ) mask |= Mask::IOM_VERTCOLOR;
|
( pf.AddToRead(VertDesc(10))!=-1 ) ) mask |= Mask::IOM_VERTCOLOR;
|
||||||
if( pf.AddToRead(VertDesc(19))!=-1 ) mask |= Mask::IOM_VERTCOLOR;
|
if( pf.AddToRead(VertDesc(19))!=-1 ) mask |= Mask::IOM_VERTCOLOR;
|
||||||
|
|
||||||
|
if(( pf.AddToRead(VertDesc(20))!=-1 ) && (pf.AddToRead(VertDesc(21))!=-1))
|
||||||
|
mask |= Mask::IOM_VERTTEXCOORD;
|
||||||
|
|
||||||
|
if(( pf.AddToRead(VertDesc(16))!=-1 ) && (pf.AddToRead(VertDesc(17))!=-1))
|
||||||
|
mask |= Mask::IOM_VERTTEXCOORD;
|
||||||
|
|
||||||
if( pf.AddToRead(FaceDesc(0))!=-1 ) mask |= Mask::IOM_FACEINDEX;
|
if( pf.AddToRead(FaceDesc(0))!=-1 ) mask |= Mask::IOM_FACEINDEX;
|
||||||
if( pf.AddToRead(FaceDesc(1))!=-1 ) mask |= Mask::IOM_FACEFLAGS;
|
if( pf.AddToRead(FaceDesc(1))!=-1 ) mask |= Mask::IOM_FACEFLAGS;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue