diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py index 060c7db1a578431661e6c1ff139087ccde647f74..df904ab7ac58b7ef62e06207561b8a380273a26f 100644 --- a/io_scene_fbx/import_fbx.py +++ b/io_scene_fbx/import_fbx.py @@ -262,32 +262,36 @@ def blen_read_geom(fbx_obj): # TODO # fbx_edges = elem_prop_first(elem_find_first(fbx_obj, b'Edges')) + if fbx_verts is None: + fbx_verts = () + if fbx_polys is None: + fbx_polys = () + mesh = bpy.data.meshes.new(name=elem_name_utf8) mesh.vertices.add(len(fbx_verts) // 3) mesh.vertices.foreach_set("co", fbx_verts) - mesh.loops.add(len(fbx_polys)) - - #poly_loops = [] # pairs (loop_start, loop_total) - poly_loop_starts = [] - poly_loop_totals = [] - poly_loop_prev = 0 - for i, l in enumerate(mesh.loops): - index = fbx_polys[i] - if index < 0: - poly_loop_starts.append(poly_loop_prev) - poly_loop_totals.append((i - poly_loop_prev) + 1) - poly_loop_prev = i + 1 - index = -(index + 1) - l.vertex_index = index - poly_loop_starts.append(poly_loop_prev) - poly_loop_totals.append((i - poly_loop_prev) + 1) - - mesh.polygons.add(len(poly_loop_starts)) - mesh.polygons.foreach_set("loop_start", poly_loop_starts) - mesh.polygons.foreach_set("loop_total", poly_loop_totals) - - blen_read_geom_uv(fbx_obj, mesh) + if fbx_polys: + mesh.loops.add(len(fbx_polys)) + poly_loop_starts = [] + poly_loop_totals = [] + poly_loop_prev = 0 + for i, l in enumerate(mesh.loops): + index = fbx_polys[i] + if index < 0: + poly_loop_starts.append(poly_loop_prev) + poly_loop_totals.append((i - poly_loop_prev) + 1) + poly_loop_prev = i + 1 + index = -(index + 1) + l.vertex_index = index + poly_loop_starts.append(poly_loop_prev) + poly_loop_totals.append((i - poly_loop_prev) + 1) + + mesh.polygons.add(len(poly_loop_starts)) + mesh.polygons.foreach_set("loop_start", poly_loop_starts) + mesh.polygons.foreach_set("loop_total", poly_loop_totals) + + blen_read_geom_uv(fbx_obj, mesh) mesh.validate() mesh.calc_normals() @@ -612,7 +616,7 @@ def load(operator, context, filepath="", for fbx_lnk, fbx_lnk_item, fbx_lnk_type in connection_filter_reverse(fbx_uuid, None): if not isinstance(fbx_lnk_item, bpy.types.ID): continue - if isinstance(fbx_lnk_item, bpy.types.Material): + if isinstance(fbx_lnk_item, (bpy.types.Material, bpy.types.Image)): continue #print(fbx_lnk, fbx_lnk_item, fbx_lnk_type)