[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2214] trunk/py/scripts/addons/ io_scene_3ds/export_3ds.py: fix [#28150] .3ds format export

Campbell Barton ideasman42 at gmail.com
Tue Aug 2 19:15:56 CEST 2011


Revision: 2214
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2214
Author:   campbellbarton
Date:     2011-08-02 17:15:56 +0000 (Tue, 02 Aug 2011)
Log Message:
-----------
fix [#28150] .3ds format export

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

Modified: trunk/py/scripts/addons/io_scene_3ds/export_3ds.py
===================================================================
--- trunk/py/scripts/addons/io_scene_3ds/export_3ds.py	2011-08-02 13:30:10 UTC (rev 2213)
+++ trunk/py/scripts/addons/io_scene_3ds/export_3ds.py	2011-08-02 17:15:56 UTC (rev 2214)
@@ -699,7 +699,15 @@
     return uv_chunk
 
 
-def make_mesh_chunk(mesh, materialDict):
+def make_matrix_4x3_chunk(matrix):
+    matrix_chunk = _3ds_chunk(OBJECT_TRANS_MATRIX)
+    for vec in matrix:
+        for f in vec[:3]:
+            matrix_chunk.add_variable("matrix_f", _3ds_float(f))
+    return matrix_chunk
+
+
+def make_mesh_chunk(mesh, matrix, materialDict):
     '''Make a chunk out of a Blender mesh.'''
 
     # Extract the triangles from the mesh:
@@ -739,8 +747,11 @@
     if uv_array:
         mesh_chunk.add_subchunk(make_uv_chunk(uv_array))
 
+    mesh_chunk.add_subchunk(make_matrix_4x3_chunk(matrix))
+
     return mesh_chunk
 
+
 """ # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX
 def make_kfdata(start=0, stop=0, curtime=0):
     '''Make the basic keyframe data chunk'''
@@ -928,7 +939,7 @@
             continue
 
         for ob_derived, mat in derived:
-            if ob.type not in ('MESH', 'CURVE', 'SURFACE', 'FONT', 'META'):
+            if ob.type not in {'MESH', 'CURVE', 'SURFACE', 'FONT', 'META'}:
                 continue
 
             try:
@@ -937,9 +948,9 @@
                 data = None
 
             if data:
-                data.transform(global_matrix * mat)
-# 				data.transform(mat, recalc_normals=False)
-                mesh_objects.append((ob_derived, data))
+                matrix = global_matrix * mat
+                data.transform(matrix)
+                mesh_objects.append((ob_derived, data, matrix))
                 mat_ls = data.materials
                 mat_ls_len = len(mat_ls)
 
@@ -993,7 +1004,7 @@
 
     # Create object chunks for all meshes:
     i = 0
-    for ob, blender_mesh in mesh_objects:
+    for ob, blender_mesh, matrix in mesh_objects:
         # create a new object chunk
         object_chunk = _3ds_chunk(OBJECT)
 
@@ -1001,7 +1012,7 @@
         object_chunk.add_variable("name", _3ds_string(sane_name(ob.name)))
 
         # make a mesh chunk out of the mesh:
-        object_chunk.add_subchunk(make_mesh_chunk(blender_mesh, materialDict))
+        object_chunk.add_subchunk(make_mesh_chunk(blender_mesh, matrix, materialDict))
         object_info.add_subchunk(object_chunk)
 
         ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX



More information about the Bf-extensions-cvs mailing list