def test_beanie(self): parser = ObjLoader() obj = parser.parse(open('example/template/Beanie/beanie.obj').read()) self.assertEqual(152, len(obj.uvs) / 2, 'Beanie should have 152 uvs: %s' % (len(obj.uvs) / 2)) mtl_parser = MtlLibLoader() mtl = mtl_parser.parse(open('example/template/Beanie/beanie.mtl').read()) geometry = obj.toGeometry(mtl) self.assertTrue(isinstance(geometry, Object)) # Simple obj files get no Group # Test that all of the faces point to valid indices for face in geometry.mesh.faces: self.assertTrue(face < len(geometry.mesh.positions) / 3, 'Invalid face: %s in %s positions' % (face, len(geometry.mesh.positions) / 3))
def test_sofa(self): parser = ObjLoader() obj = parser.parse(open('example/template/LeCorbusier Sofa/LeCorbusierSofa.obj').read()) self.assertEqual(2236, (len(obj.vertices) / 3), 'Should have 2236 vertices: %s' % (len(obj.vertices) / 3)) self.assertEqual(3296, len(obj.faces), 'Should have 3296 faces: %s' % len(obj.faces)) self.assertEqual(3, len(obj.object_groups), 'Should have three object groups') self.assertEqual("Object01_02_-_Def", obj.object_groups[0][0], 'Object group name was %s' % obj.object_groups[0][0]) self.assertEqual(96, obj.object_groups[0][2], 'Should have 96 faces in the first object group: %s' % obj.object_groups[0][2]) self.assertEqual(1784, obj.object_groups[1][2], 'Should have 1784 faces in the first object group: %s' % obj.object_groups[1][2]) self.assertEqual(1416, obj.object_groups[2][2], 'Should have 1416 faces in the first object group: %s' % obj.object_groups[2][2]) self.assertEqual(3, len(obj.smoothing_groups), 'Should have three smoothing groups') self.assertEqual(obj.object_groups[2][1], obj.smoothing_groups[2][0], 'The object and smoothing groups should be the same') self.assertEqual(3, len(obj.material_groups), 'Should have three material groups %s' % len(obj.material_groups)) mtl_parser = MtlLibLoader() mtl = mtl_parser.parse(open('example/template/LeCorbusier Sofa/LeCorbusierSofa.mtl').read()) self.assertEqual(2, len(mtl.materials), 'Should have two materials: %s' % len(mtl.materials)) self.assertEqual('01_-_Default', mtl.materials[1].name) geometry = obj.toGeometry(mtl) self.assertEqual(obj.object_groups[0][2], len(geometry.children[0].mesh.faces) / 3, 'Geometry and obj group do not have the same number of faces: %s and %s' % (obj.object_groups[0][2], len(geometry.children[0].mesh.faces))) self.assertEqual(obj.object_groups[1][2], len(geometry.children[1].mesh.faces) / 3, 'Geometry and obj group do not have the same number of faces: %s and %s' % (obj.object_groups[1][2], len(geometry.children[1].mesh.faces))) self.assertEqual(obj.object_groups[2][2], len(geometry.children[2].mesh.faces) / 3, 'Geometry and obj group do not have the same number of faces: %s and %s' % (obj.object_groups[2][2], len(geometry.children[2].mesh.faces)))
def test_cube(self): parser = ObjLoader() obj = parser.parse(open('example/template/Cube/cube.obj').read()) self.assertEqual(6, len(obj.faces), 'The cube should have six faces') self.assertEqual(4, len(obj.faces[0]), 'The cube face should have four points') self.assertEqual([0,1,2,3], [point[0] for point in obj.faces[0]], 'The first face should have point vertices of [0, 1, 2, 3]: %s' % [point[0] for point in obj.faces[0]]) self.assertEqual(1, len(obj.material_groups), 'There should be only one material') self.assertEqual('Material', obj.material_groups[0][0], 'Material name should be "Material"') self.assertTrue(obj.mtllib != None, 'Should have a mtllib') self.assertEqual('cube.mtl', obj.mtllib, 'The mtllib should be "cube.mtl"') mtl_parser = MtlLibLoader() mtl = mtl_parser.parse(open('example/template/Cube/cube.mtl').read()) self.assertEqual(1, len(mtl.materials), 'Should have one material %s' % len(mtl.materials)) self.assertEqual('Material', mtl.materials[0].name, 'Incorrect material name: %s' % mtl.materials[0].name) self.assertEqual(96.078431, mtl.materials[0].phong_specular, 'Incorrect phong_specular %s' % mtl.materials[0].phong_specular) self.assertEqual([0.262127, 0.371511, 0.800000], mtl.materials[0].diffuse, 'Incorrect diffuse: %s' % mtl.materials[0].diffuse) geometry = obj.toGeometry(mtl) self.assertTrue(isinstance(geometry, Object)) # Simple obj files get no Group self.assertTrue(geometry.material != None, "The cube should have one material") #self.assertEqual(geometry.material.name, 'Material', 'The material should be named "Material": %s' % geometry.material.name) self.assertEqual(geometry.material.color, [0.262127, 0.371511, 0.800000], 'The color should have been 0.262127 0.371511 0.800000: %s' % geometry.material.color) self.assertEqual(geometry.material.alpha, 0.5, 'The alph should have 0.5: %s' % 0.5)