Skip to content
Snippets Groups Projects
Commit 0918250e authored by Campbell Barton's avatar Campbell Barton
Browse files

fix [#28150] .3ds format export

parent cc104d3a
No related branches found
No related tags found
No related merge requests found
...@@ -699,7 +699,15 @@ def make_uv_chunk(uv_array): ...@@ -699,7 +699,15 @@ def make_uv_chunk(uv_array):
return uv_chunk 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.''' '''Make a chunk out of a Blender mesh.'''
# Extract the triangles from the mesh: # Extract the triangles from the mesh:
...@@ -739,8 +747,11 @@ def make_mesh_chunk(mesh, materialDict): ...@@ -739,8 +747,11 @@ def make_mesh_chunk(mesh, materialDict):
if uv_array: if uv_array:
mesh_chunk.add_subchunk(make_uv_chunk(uv_array)) mesh_chunk.add_subchunk(make_uv_chunk(uv_array))
mesh_chunk.add_subchunk(make_matrix_4x3_chunk(matrix))
return mesh_chunk return mesh_chunk
""" # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX """ # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX
def make_kfdata(start=0, stop=0, curtime=0): def make_kfdata(start=0, stop=0, curtime=0):
'''Make the basic keyframe data chunk''' '''Make the basic keyframe data chunk'''
...@@ -928,7 +939,7 @@ def save(operator, ...@@ -928,7 +939,7 @@ def save(operator,
continue continue
for ob_derived, mat in derived: 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 continue
try: try:
...@@ -937,9 +948,9 @@ def save(operator, ...@@ -937,9 +948,9 @@ def save(operator,
data = None data = None
if data: if data:
data.transform(global_matrix * mat) matrix = global_matrix * mat
# data.transform(mat, recalc_normals=False) data.transform(matrix)
mesh_objects.append((ob_derived, data)) mesh_objects.append((ob_derived, data, matrix))
mat_ls = data.materials mat_ls = data.materials
mat_ls_len = len(mat_ls) mat_ls_len = len(mat_ls)
...@@ -993,7 +1004,7 @@ def save(operator, ...@@ -993,7 +1004,7 @@ def save(operator,
# Create object chunks for all meshes: # Create object chunks for all meshes:
i = 0 i = 0
for ob, blender_mesh in mesh_objects: for ob, blender_mesh, matrix in mesh_objects:
# create a new object chunk # create a new object chunk
object_chunk = _3ds_chunk(OBJECT) object_chunk = _3ds_chunk(OBJECT)
...@@ -1001,7 +1012,7 @@ def save(operator, ...@@ -1001,7 +1012,7 @@ def save(operator,
object_chunk.add_variable("name", _3ds_string(sane_name(ob.name))) object_chunk.add_variable("name", _3ds_string(sane_name(ob.name)))
# make a mesh chunk out of the mesh: # 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) object_info.add_subchunk(object_chunk)
''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment