Made lightwave import work with images by removing internal image loading wrapper and use BPyImage.comprehensiveImageLoad

Sped up with LC's for vert loading.
tried to removing meshtools as a dependancy, but cant do that everywhere.
This commit is contained in:
Campbell Barton 2006-06-29 07:06:54 +00:00
parent dc458265e3
commit e5b3fb85e4
3 changed files with 1493 additions and 1445 deletions

@ -913,3 +913,38 @@ class NMCol(object):
self.g= 255
self.b= 255
self.a= 255
'''
#
verts_split= [dict() for i in xrange(len(me.verts))]
tot_verts= 0
for f in me.faces:
f_uv= f.uv
for i, v in enumerate(f.v):
vert_index= v.index # mesh index
vert_dict= verts_split[vert_index] # get the dict for this vert
uv= f_uv[i]
# now we have the vert and the face uv well make a unique dict.
vert_key= v.x, v.y, v.x, uv.x, uv.y # ADD IMAGE NAME HETR IF YOU WANT TO SPLIT BY THAT TOO
value= vert_index, tot_verts # ADD WEIGHT HERE IF YOU NEED.
try:
vert_dict[vert_key] # if this is missing it will fail.
except:
# this stores a mapping between the split and orig vert indicies
vert_dict[vert_key]= value
tot_verts+= 1
# a flat list of split verts - can add custom weight data here too if you need
split_verts= [None]*tot_verts
for vert_split_dict in verts_split:
for key, value in vert_split_dict.iteritems():
local_index, split_index= value
split_verts[split_index]= key
# split_verts - Now you have a list of verts split by their UV.
'''

@ -48,7 +48,7 @@ except:
# === Append Faces To Face List ===
# =================================
def append_faces(mesh, faces, facesuv, uvcoords):
for i in range(len(faces)):
for i in xrange(len(faces)):
if not i%100 and show_progress: Blender.Window.DrawProgressBar(float(i)/len(faces), "Generating Faces")
numfaceverts=len(faces[i])
if numfaceverts == 2: #This is not a face is an edge
@ -62,7 +62,7 @@ def append_faces(mesh, faces, facesuv, uvcoords):
ee.flag |= Blender.NMesh.EdgeFlags.EDGERENDER
elif numfaceverts in [3,4]: # This face is a triangle or quad
face = Blender.NMesh.Face()
for j in range(numfaceverts):
for j in xrange(numfaceverts):
index = faces[i][j]
face.v.append(mesh.verts[index])
if len(uvcoords) > 1:
@ -73,7 +73,7 @@ def append_faces(mesh, faces, facesuv, uvcoords):
mesh.faces.append(face)
else: # Triangulate n-sided convex polygon.
a, b, c = 0, 1, 2 # Indices of first triangle.
for j in range(numfaceverts-2): # Number of triangles in polygon.
for j in xrange(numfaceverts-2): # Number of triangles in polygon.
face = Blender.NMesh.Face()
face.v.append(mesh.verts[faces[i][a]])
face.v.append(mesh.verts[faces[i][b]])
@ -88,7 +88,7 @@ def append_faces(mesh, faces, facesuv, uvcoords):
def append_verts(mesh, verts, normals):
#print "Number of normals:", len(normals)
#print "Number of verts :", len(verts)
for i in range(len(verts)):
for i in xrange(len(verts)):
if not i%100 and show_progress: Blender.Window.DrawProgressBar(float(i)/len(verts), "Generating Verts")
x, y, z = verts[i]
mesh.verts.append(Blender.NMesh.Vert(x, y, z))
@ -108,8 +108,8 @@ def create_mesh(verts, faces, objname, facesuv=[], uvcoords=[], normals=[]):
append_faces(mesh, faces, facesuv, uvcoords)
if not overwrite_mesh_name:
objname = versioned_name(objname)
Blender.NMesh.PutRaw(mesh, objname, normal_flag) # Name the Mesh
Blender.Object.GetSelected()[0].name=objname # Name the Object
ob= Blender.NMesh.PutRaw(mesh, objname, normal_flag) # Name the Mesh
ob.name= objname # Name the Object
Blender.Redraw()
# ==============================
@ -174,9 +174,9 @@ def mat2euler(mat):
def transpose(A):
S = len(A)
T = len(A[0])
B = [[None]*S for i in range(T)]
for i in range(T):
for j in range(S):
B = [[None]*S for i in xrange(T)]
for i in xrange(T):
for j in xrange(S):
B[i][j] = A[j][i]
return B
@ -215,7 +215,7 @@ def generate_edgetable(mesh):
edge_table = {}
numfaces = len(mesh.faces)
for i in range(numfaces):
for i in xrange(numfaces):
if not i%100 and show_progress:
Blender.Window.DrawProgressBar(float(i)/numfaces, "Generating Edge Table")
if len(mesh.faces[i].v) == 4: # Process Quadrilaterals

File diff suppressed because it is too large Load Diff