@@ -295,6 +295,18 @@ def loadLOD(context, filePtr, objectName, materialData, layerFlag, lodnr):
295295 #scn.objects.link(obj)
296296 #scn.objects.active = obj
297297
298+ # Build Edge database to make finding sharp edges easier
299+ edgeDict = dict ()
300+ for edge in mymesh .edges :
301+ v1 = edge .vertices [0 ]
302+ v2 = edge .vertices [1 ]
303+ if (v1 > v2 ): # Swap if out of order
304+ temp = v2
305+ v2 = v1
306+ v1 = temp
307+ #print(f"adding edge index {edge.index} as ({v1},{v2}) to edge dictionary")
308+ edgeDict [(v1 ,v2 )] = edge .index
309+
298310 print ("taggs" )
299311 loop = True
300312 sharpEdges = None
@@ -320,7 +332,7 @@ def loadLOD(context, filePtr, objectName, materialData, layerFlag, lodnr):
320332 n1 = readULong (filePtr )
321333 n2 = readULong (filePtr )
322334 sharpEdges .append ([n1 , n2 ])
323- #print (sharpEdges)
335+ #print ("sharp edges", sharpEdges)
324336 elif tagName == "#Property#" :
325337 # Read named property
326338 propName = struct .unpack ("64s" , filePtr .read (64 ))[0 ].decode ("utf-8" )
@@ -432,14 +444,29 @@ def loadLOD(context, filePtr, objectName, materialData, layerFlag, lodnr):
432444
433445 print ("sharp edges" )
434446 # Set sharp edges
447+ #if sharpEdges is not None:
448+ # for edge in mymesh.edges:
449+ # v1 = edge.vertices[0]
450+ # v2 = edge.vertices[1]
451+ # if [v1,v2] in sharpEdges:
452+ # mymesh.edges[edge.index].use_edge_sharp = True
453+ # elif [v2,v1] in sharpEdges:
454+ # mymesh.edges[edge.index].use_edge_sharp = True
455+
456+ # New Code
435457 if sharpEdges is not None :
436- for edge in mymesh .edges :
437- v1 = edge .vertices [0 ]
438- v2 = edge .vertices [1 ]
439- if [v1 ,v2 ] in sharpEdges :
440- mymesh .edges [edge .index ].use_edge_sharp = True
441- elif [v2 ,v1 ] in sharpEdges :
442- mymesh .edges [edge .index ].use_edge_sharp = True
458+ for sharpEdge in sharpEdges :
459+ v1 = sharpEdge [0 ]
460+ v2 = sharpEdge [1 ]
461+ if (v1 > v2 ): # Swap if out of order
462+ temp = v2
463+ v2 = v1
464+ v1 = temp
465+ idx = edgeDict [(v1 ,v2 )]
466+ mymesh .edges [idx ].use_edge_sharp = True
467+
468+
469+
443470 #for pair in sharpEdges:
444471 # p1 = pair[0]
445472 # p2 = pair[1]
0 commit comments