Now actually fixed the bug with the normals.

pyassimp returned a list instead of a numpy array when the normals were
empty. This also applies to texture coordinates and other stuff which is
explicitly converted in _finalize_mesh.
pull/64/head
Faule Socke 2013-07-29 01:24:22 +02:00
parent 853a5f9bbc
commit 945231ba94
2 changed files with 9 additions and 9 deletions

View File

@ -58,14 +58,14 @@ def make_tuple(ai_obj, type = None):
return res return res
def call_init(obj, caller = None): def call_init(obj, caller = None):
# init children # init children
if helper.hasattr_silent(obj, '_init'): if helper.hasattr_silent(obj, '_init'):
obj._init(parent = caller) obj._init(parent = caller)
# pointers # pointers
elif helper.hasattr_silent(obj, 'contents'): elif helper.hasattr_silent(obj, 'contents'):
if helper.hasattr_silent(obj.contents, '_init'): if helper.hasattr_silent(obj.contents, '_init'):
obj.contents._init(target = obj, parent = caller) obj.contents._init(target = obj, parent = caller)
@ -313,7 +313,7 @@ def _finalize_mesh(mesh, target):
data = numpy.array([make_tuple(getattr(mesh, name)[i]) for i in range(nb_vertices)], dtype=numpy.float32) data = numpy.array([make_tuple(getattr(mesh, name)[i]) for i in range(nb_vertices)], dtype=numpy.float32)
setattr(target, name[1:].lower(), data) setattr(target, name[1:].lower(), data)
else: else:
setattr(target, name[1:].lower(), []) setattr(target, name[1:].lower(), numpy.array([], dtype="float32"))
def fillarray(name): def fillarray(name):
mAttr = getattr(mesh, name) mAttr = getattr(mesh, name)

View File

@ -43,7 +43,7 @@ def main(filename=None):
print(" material id:" + str(mesh.materialindex+1)) print(" material id:" + str(mesh.materialindex+1))
print(" vertices:" + str(len(mesh.vertices))) print(" vertices:" + str(len(mesh.vertices)))
print(" first 3 verts:\n" + str(mesh.vertices[:3])) print(" first 3 verts:\n" + str(mesh.vertices[:3]))
if mesh.normals: if mesh.normals.any():
print(" first 3 normals:\n" + str(mesh.normals[:3])) print(" first 3 normals:\n" + str(mesh.normals[:3]))
else: else:
print(" no normals") print(" no normals")