[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3242] trunk/py/scripts/addons/ io_scene_3ds/import_3ds.py: [#30894] 3ds import broken (now using poly/ loops).

Bastien Montagne montagne29 at wanadoo.fr
Tue Apr 10 23:03:28 CEST 2012


Revision: 3242
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3242
Author:   mont29
Date:     2012-04-10 21:03:27 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
[#30894] 3ds import broken (now using poly/loops).

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_3ds/import_3ds.py

Modified: trunk/py/scripts/addons/io_scene_3ds/import_3ds.py
===================================================================
--- trunk/py/scripts/addons/io_scene_3ds/import_3ds.py	2012-04-10 14:12:44 UTC (rev 3241)
+++ trunk/py/scripts/addons/io_scene_3ds/import_3ds.py	2012-04-10 21:03:27 UTC (rev 3242)
@@ -277,15 +277,19 @@
         if myContextMesh_vertls:
 
             bmesh.vertices.add(len(myContextMesh_vertls) // 3)
-            bmesh.faces.add(len(myContextMesh_facels))
             bmesh.vertices.foreach_set("co", myContextMesh_vertls)
 
+            nbr_faces = len(myContextMesh_facels)
+            bmesh.polygons.add(nbr_faces)
+            bmesh.loops.add(nbr_faces * 3)
             eekadoodle_faces = []
             for v1, v2, v3 in myContextMesh_facels:
-                eekadoodle_faces.extend([v3, v1, v2, 0] if v3 == 0 else [v1, v2, v3, 0])
-            bmesh.faces.foreach_set("vertices_raw", eekadoodle_faces)
+                eekadoodle_faces.extend((v3, v1, v2) if v3 == 0 else (v1, v2, v3))
+            bmesh.polygons.foreach_set("loop_start", range(0, nbr_faces * 3, 3))
+            bmesh.polygons.foreach_set("loop_total", (3,) * nbr_faces)
+            bmesh.loops.foreach_set("vertex_index", eekadoodle_faces)
 
-            if bmesh.faces and contextMeshUV:
+            if bmesh.polygons and contextMeshUV:
                 bmesh.uv_textures.new()
                 uv_faces = bmesh.uv_textures.active.data[:]
             else:
@@ -308,15 +312,15 @@
 
                 if uv_faces  and img:
                     for fidx in faces:
-                        bmesh.faces[fidx].material_index = mat_idx
-                        uf = uv_faces[fidx]
-                        uf.image = img
+                        bmesh.polygons[fidx].material_index = mat_idx
+                        uv_faces[fidx].image = img
                 else:
                     for fidx in faces:
-                        bmesh.faces[fidx].material_index = mat_idx
+                        bmesh.polygons[fidx].material_index = mat_idx
 
             if uv_faces:
-                for fidx, uf in enumerate(uv_faces):
+                uvl = bmesh.uv_loop_layers.active.data[:]
+                for fidx, pl in enumerate(bmesh.polygons):
                     face = myContextMesh_facels[fidx]
                     v1, v2, v3 = face
 
@@ -324,9 +328,9 @@
                     if v3 == 0:
                         v1, v2, v3 = v3, v1, v2
 
-                    uf.uv1 = contextMeshUV[v1 * 2:(v1 * 2) + 2]
-                    uf.uv2 = contextMeshUV[v2 * 2:(v2 * 2) + 2]
-                    uf.uv3 = contextMeshUV[v3 * 2:(v3 * 2) + 2]
+                    uvl[pl.loop_start] = contextMeshUV[v1 * 2:(v1 * 2) + 2]
+                    uvl[pl.loop_start + 1] = contextMeshUV[v2 * 2:(v2 * 2) + 2]
+                    uvl[pl.loop_start + 2] = contextMeshUV[v3 * 2:(v3 * 2) + 2]
                     # always a tri
 
         bmesh.validate()



More information about the Bf-extensions-cvs mailing list