- fixed a bug with OBJReader that prevented the material color to be loaded correctly
- added a corresponding unittest Thanks for the patch by Karthik Nathan closes #1473 git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@823 fdac6126-5c0c-442c-9429-916003d36597
This commit is contained in:
@@ -574,9 +574,10 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt)
|
||||
|
||||
}
|
||||
|
||||
fh = _bi.add_face(faceVertices);
|
||||
|
||||
// note that add_face can possibly triangulate the faces, which is why we have to
|
||||
// store the current number of faces first
|
||||
size_t n_faces = _bi.n_faces();
|
||||
fh = _bi.add_face(faceVertices);
|
||||
|
||||
if (!vhandles.empty() && fh.is_valid() )
|
||||
_bi.add_face_texcoords(fh, vhandles[0], face_texcoords);
|
||||
|
||||
4
src/Unittests/TestFiles/square_material.mtl
Normal file
4
src/Unittests/TestFiles/square_material.mtl
Normal file
@@ -0,0 +1,4 @@
|
||||
newmtl Colored
|
||||
Ka 0.500 0.500 0.500
|
||||
Kd 0.500 0.500 0.500
|
||||
Ks 0.500 0.500 0.500
|
||||
13
src/Unittests/TestFiles/square_material.obj
Normal file
13
src/Unittests/TestFiles/square_material.obj
Normal file
@@ -0,0 +1,13 @@
|
||||
mtllib square_material.mtl
|
||||
|
||||
v 0.000000 2.000000 0.000000
|
||||
v 0.000000 0.000000 0.000000
|
||||
v 2.000000 0.000000 0.000000
|
||||
v 2.000000 2.000000 0.000000
|
||||
vt 0.000000 1.000000 0.000000
|
||||
vt 0.000000 0.000000 0.000000
|
||||
vt 1.000000 0.000000 0.000000
|
||||
vt 1.000000 1.000000 0.000000
|
||||
|
||||
usemtl Colored
|
||||
f 1/1 2/2 3/3 4/4
|
||||
@@ -185,6 +185,34 @@ TEST_F(OpenMeshReadWriteOBJ, LoadSimpleOBJCheckTexCoords) {
|
||||
mesh_.release_halfedge_texcoords2D();
|
||||
}
|
||||
|
||||
/*
|
||||
* Just load a obj file of a square with a material
|
||||
*/
|
||||
TEST_F(OpenMeshReadWriteOBJ, LoadObjWithMaterial) {
|
||||
|
||||
mesh_.clear();
|
||||
|
||||
mesh_.request_face_colors();
|
||||
|
||||
OpenMesh::IO::Options options;
|
||||
options += OpenMesh::IO::Options::FaceColor;
|
||||
|
||||
std::string file_name = "square_material.obj";
|
||||
|
||||
bool ok = OpenMesh::IO::read_mesh(mesh_, file_name,options);
|
||||
|
||||
EXPECT_TRUE(ok) << file_name;
|
||||
|
||||
OpenMesh::FaceHandle fh = mesh_.face_handle(mesh_.halfedge_handle(0));
|
||||
|
||||
EXPECT_TRUE(fh.is_valid()) << "fh should be valid";
|
||||
|
||||
EXPECT_EQ(128, mesh_.color(fh)[0] ) << "Wrong vertex color at vertex 0 component 0";
|
||||
EXPECT_EQ(128, mesh_.color(fh)[1] ) << "Wrong vertex color at vertex 0 component 1";
|
||||
EXPECT_EQ(128, mesh_.color(fh)[2] ) << "Wrong vertex color at vertex 0 component 2";
|
||||
|
||||
mesh_.release_face_colors();
|
||||
}
|
||||
|
||||
/*
|
||||
* Just load a obj file of a cube with vertex colors defined directly after the vertex definitions
|
||||
|
||||
Reference in New Issue
Block a user