print line numbers when failing to load material library, bugfix "next"
This commit is contained in:
parent
63695755b0
commit
505bdf9f4b
20
wfobj.py
20
wfobj.py
@ -118,39 +118,43 @@ class WFObj(object):
|
|||||||
fh = open(name, 'r')
|
fh = open(name, 'r')
|
||||||
material = None
|
material = None
|
||||||
material_name = ''
|
material_name = ''
|
||||||
|
lineno = 0
|
||||||
for line in iter(fh.readline, ''):
|
for line in iter(fh.readline, ''):
|
||||||
|
lineno += 1
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.startswith('#'):
|
if line.startswith('#'):
|
||||||
next
|
continue
|
||||||
parts = line.split()
|
parts = line.split()
|
||||||
if len(parts) < 1:
|
if len(parts) < 1:
|
||||||
next
|
continue
|
||||||
if parts[0] == 'newmtl':
|
if parts[0] == 'newmtl':
|
||||||
if len(parts[1:]) < 1:
|
if len(parts[1:]) < 1:
|
||||||
raise ValueError('newmtl directive requires argument')
|
raise ValueError('newmtl directive requires argument on line %d' % lineno)
|
||||||
material = Material()
|
material = Material()
|
||||||
material_name = parts[1]
|
material_name = parts[1]
|
||||||
self.materials[material_name] = material
|
self.materials[material_name] = material
|
||||||
else:
|
else:
|
||||||
if material is None:
|
if material is None:
|
||||||
raise ValueError('Material directive preceeding "newmtl"')
|
print line
|
||||||
|
print repr(parts)
|
||||||
|
raise ValueError('Material directive preceeding "newmtl" on line %d' % lineno)
|
||||||
if parts[0] == 'Ns':
|
if parts[0] == 'Ns':
|
||||||
material.shininess = float(parts[1])
|
material.shininess = float(parts[1])
|
||||||
elif parts[0] == 'Ka':
|
elif parts[0] == 'Ka':
|
||||||
if len(parts[1:]) < 3:
|
if len(parts[1:]) < 3:
|
||||||
raise ValueError('Ka requires 3 arguments')
|
raise ValueError('Ka requires 3 arguments on line %d' % lineno)
|
||||||
material.ambient = map(float, parts[1:])
|
material.ambient = map(float, parts[1:])
|
||||||
if len(material.ambient) < 4:
|
if len(material.ambient) < 4:
|
||||||
material.ambient.append(1.0)
|
material.ambient.append(1.0)
|
||||||
elif parts[0] == 'Kd':
|
elif parts[0] == 'Kd':
|
||||||
if len(parts[1:]) < 3:
|
if len(parts[1:]) < 3:
|
||||||
raise ValueError('Kd requires 3 arguments')
|
raise ValueError('Kd requires 3 arguments on line %d' % lineno)
|
||||||
material.diffuse = map(float, parts[1:])
|
material.diffuse = map(float, parts[1:])
|
||||||
if len(material.diffuse) < 4:
|
if len(material.diffuse) < 4:
|
||||||
material.diffuse.append(1.0)
|
material.diffuse.append(1.0)
|
||||||
elif parts[0] == 'Ks':
|
elif parts[0] == 'Ks':
|
||||||
if len(parts[1:]) < 3:
|
if len(parts[1:]) < 3:
|
||||||
raise ValueError('Ks requires 3 arguments')
|
raise ValueError('Ks requires 3 arguments on line %d' % lineno)
|
||||||
material.specular = map(float, parts[1:])
|
material.specular = map(float, parts[1:])
|
||||||
if len(material.specular) < 4:
|
if len(material.specular) < 4:
|
||||||
material.specular.append(1.0)
|
material.specular.append(1.0)
|
||||||
@ -166,7 +170,7 @@ class WFObj(object):
|
|||||||
elif parts[0] == 'map_Kd':
|
elif parts[0] == 'map_Kd':
|
||||||
material.texture = parts[1]
|
material.texture = parts[1]
|
||||||
else:
|
else:
|
||||||
raise ValueError('Unknown material directive "%s"' % parts[0])
|
raise ValueError('Unknown material directive "%s" on line %d' % (parts[0], lineno))
|
||||||
|
|
||||||
if self.fileloader is None:
|
if self.fileloader is None:
|
||||||
fh.close()
|
fh.close()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user