From 4e0ccae73c078b5c72447cd63fab41828f28d19b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 May 2011 07:34:58 +0000 Subject: correct support for IndexedTriangleSet with vertex colors and UV's. --- io_scene_x3d/__init__.py | 2 +- io_scene_x3d/export_x3d.py | 241 +++++++++++++++++++++++++++++---------------- 2 files changed, 156 insertions(+), 87 deletions(-) (limited to 'io_scene_x3d') diff --git a/io_scene_x3d/__init__.py b/io_scene_x3d/__init__.py index 492de10c..b795f6ab 100644 --- a/io_scene_x3d/__init__.py +++ b/io_scene_x3d/__init__.py @@ -96,7 +96,7 @@ class ExportX3D(bpy.types.Operator, ExportHelper): use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False) use_apply_modifiers = BoolProperty(name="Apply Modifiers", description="Use transformed mesh data from each object", default=True) - use_triangulate = BoolProperty(name="Triangulate", description="Write quads into 'IndexedTriangleSet'", default=False) + use_triangulate = BoolProperty(name="Triangulate", description="Write quads into 'IndexedTriangleSet'", default=True) use_compress = BoolProperty(name="Compress", description="GZip the resulting file, requires a full python install", default=False) axis_forward = EnumProperty( diff --git a/io_scene_x3d/export_x3d.py b/io_scene_x3d/export_x3d.py index ef20d9df..aebc2f25 100644 --- a/io_scene_x3d/export_x3d.py +++ b/io_scene_x3d/export_x3d.py @@ -341,8 +341,10 @@ def export(file, mesh_materials_use_face_texture = [getattr(material, "use_face_texture", True) for material in mesh_materials] + # fast access! mesh_faces = mesh.faces[:] mesh_faces_materials = [f.material_index for f in mesh_faces] + mesh_faces_vertices = [f.vertices[:] for f in mesh_faces] if is_uv and True in mesh_materials_use_face_texture: mesh_faces_image = [(fuv.image if (mesh_materials_use_face_texture[mesh_faces_materials[i]] and fuv.use_image) else mesh_material_images[mesh_faces_materials[i]]) for i, fuv in enumerate(mesh.uv_textures.active.data)] @@ -423,125 +425,192 @@ def export(file, ident = ident[:-1] fw("%s\n" % ident) + mesh_faces_col = mesh.vertex_colors.active.data if is_col else None + mesh_faces_uv = mesh.uv_textures.active.data if is_uv else None + #-- IndexedFaceSet or IndexedLineSet if EXPORT_TRI: fw("%s\n") + + fw("%s\n") + + if is_uv: + fw("%s\n") + + if is_col: + fw("%s\n") + + fw("%s\n" % ident) + else: fw("%s\n") + # close IndexedFaceSet + fw(">\n") - # --- Write IndexedFaceSet Elements - if True: - if is_coords_written: - fw("%s\n" % (ident, "coord_", mesh_name_x3d)) - else: - fw("%s\n" % (ident, "coord_", mesh_name_x3d)) + else: + fw("%s\n") + is_coords_written = True + + if is_uv: + fw("%s\n") - is_coords_written = True - if is_uv: - fw("%s\n") - - if is_col: - fw("%s\n") + fw("\" />\n") - #--- output vertexColors + #--- output vertexColors - #--- output closing braces - ident = ident[:-1] + #--- output closing braces + ident = ident[:-1] - if EXPORT_TRI: - fw("%s\n" % ident) - else: fw("%s\n" % ident) ident = ident[:-1] -- cgit v1.2.3