[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4662] trunk/py/scripts/addons/ io_scene_fbx/import_fbx.py: support for loading meshes without vertices/ faces

Campbell Barton ideasman42 at gmail.com
Fri Aug 9 10:08:31 CEST 2013


Revision: 4662
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4662
Author:   campbellbarton
Date:     2013-08-09 08:08:30 +0000 (Fri, 09 Aug 2013)
Log Message:
-----------
support for loading meshes without vertices/faces

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_fbx/import_fbx.py

Modified: trunk/py/scripts/addons/io_scene_fbx/import_fbx.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/import_fbx.py	2013-08-09 07:51:37 UTC (rev 4661)
+++ trunk/py/scripts/addons/io_scene_fbx/import_fbx.py	2013-08-09 08:08:30 UTC (rev 4662)
@@ -262,33 +262,37 @@
     # 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))
+    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)
 
-    #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)
 
-    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)
 
-    blen_read_geom_uv(fbx_obj, mesh)
-
     mesh.validate()
     mesh.calc_normals()
 
@@ -612,7 +616,7 @@
             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)



More information about the Bf-extensions-cvs mailing list