提交 53bc1ea6 编写于 作者: M Mr.doob

Implemented @rectalogic's blender exporter flipyz patch. Fixes #825 and #1351.

上级 2a18c4c9
......@@ -454,7 +454,7 @@ def setBit(value, position, on):
mask = ~(1 << position)
return (value & mask)
def generate_faces(normals, uvs, colors, meshes, option_normals, option_colors, option_uv_coords, option_materials, flipyz, option_faces):
def generate_faces(normals, uvs, colors, meshes, option_normals, option_colors, option_uv_coords, option_materials, option_faces):
if not option_faces:
return "", 0
......@@ -483,7 +483,7 @@ def generate_faces(normals, uvs, colors, meshes, option_normals, option_colors,
mesh_extract_colors = False
for i, f in enumerate(mesh.faces):
face = generate_face(f, i, normals, uvs, colors, mesh, option_normals, mesh_colors, mesh_uvs, option_materials, flipyz, vertex_offset, material_offset)
face = generate_face(f, i, normals, uvs, colors, mesh, option_normals, mesh_colors, mesh_uvs, option_materials, vertex_offset, material_offset)
chunks.append(face)
vertex_offset += len(mesh.vertices)
......@@ -496,7 +496,7 @@ def generate_faces(normals, uvs, colors, meshes, option_normals, option_colors,
return ",".join(chunks), len(chunks)
def generate_face(f, faceIndex, normals, uvs, colors, mesh, option_normals, option_colors, option_uv_coords, option_materials, flipyz, vertex_offset, material_offset):
def generate_face(f, faceIndex, normals, uvs, colors, mesh, option_normals, option_colors, option_uv_coords, option_materials, vertex_offset, material_offset):
isTriangle = ( len(f.vertices) == 3 )
if isTriangle:
......@@ -938,7 +938,7 @@ def generate_ascii_model(meshes, morphs,
elif align_model == 3:
top(vertices)
faces_string, nfaces = generate_faces(normals, uvs, colors, meshes, option_normals, option_colors, option_uv_coords, option_materials, flipyz, option_faces)
faces_string, nfaces = generate_faces(normals, uvs, colors, meshes, option_normals, option_colors, option_uv_coords, option_materials, option_faces)
materials_string = ",\n\n".join(materials)
......@@ -978,7 +978,7 @@ def generate_ascii_model(meshes, morphs,
# Model exporter - export single mesh
# #####################################################
def extract_meshes(objects, scene, export_single_model, option_scale):
def extract_meshes(objects, scene, export_single_model, option_scale, flipyz):
meshes = []
......@@ -993,12 +993,14 @@ def extract_meshes(objects, scene, export_single_model, option_scale):
if not mesh:
raise Exception("Error, could not get mesh data from object [%s]" % object.name)
# that's what Blender's native export_obj.py does
# to flip YZ
if export_single_model:
X_ROT = mathutils.Matrix.Rotation(-math.pi/2, 4, 'X')
mesh.transform(X_ROT * object.matrix_world)
if flipyz:
# that's what Blender's native export_obj.py does
# to flip YZ
X_ROT = mathutils.Matrix.Rotation(-math.pi/2, 4, 'X')
mesh.transform(X_ROT * object.matrix_world)
else:
mesh.transform(object.matrix_world)
mesh.calc_normals()
mesh.transform(mathutils.Matrix.Scale(option_scale, 4))
......@@ -1023,7 +1025,7 @@ def generate_mesh_string(objects, scene,
option_animation,
option_frame_step):
meshes = extract_meshes(objects, scene, export_single_model, option_scale)
meshes = extract_meshes(objects, scene, export_single_model, option_scale, flipyz)
morphs = []
......@@ -1036,7 +1038,7 @@ def generate_mesh_string(objects, scene,
for frame in scene_frames:
scene.frame_set(frame, 0.0)
anim_meshes = extract_meshes(objects, scene, export_single_model, option_scale)
anim_meshes = extract_meshes(objects, scene, export_single_model, option_scale, flipyz)
frame_vertices = []
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册