[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3604] contrib/py/scripts/addons/ io_scene_ms3d: exporter exports vertices, faces, groups - currently still under construction
Alexander Nussbaumer
alpha-beta-release at gmx.net
Mon Jul 9 23:13:07 CEST 2012
Revision: 3604
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3604
Author: beta-tester
Date: 2012-07-09 21:13:06 +0000 (Mon, 09 Jul 2012)
Log Message:
-----------
exporter exports vertices, faces, groups - currently still under construction
Modified Paths:
--------------
contrib/py/scripts/addons/io_scene_ms3d/__README__.txt
contrib/py/scripts/addons/io_scene_ms3d/__init__.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_spec.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_strings.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
Modified: contrib/py/scripts/addons/io_scene_ms3d/__README__.txt
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__README__.txt 2012-07-09 20:37:47 UTC (rev 3603)
+++ contrib/py/scripts/addons/io_scene_ms3d/__README__.txt 2012-07-09 21:13:06 UTC (rev 3604)
@@ -91,8 +91,68 @@
- add support for bones and joints in exporter
- add support for keyframes
-changelog:
-
+###############################################################################
+ exporter:
+ Ms3dModel
+ .vertices
+ Ms3dVertex
+ .vertex: 100%
+ .bone_id: 0%
+ .reference_count: 0%
+ .flags: 0%
+ .vertex_ex
+ Ms3dVertexEx
+ .bone_ids: 0%
+ .weights: 0%
+ .extra: 0%
+ .triangles
+ Ms3dTriangle
+ .vertex_indices: 100%
+ .s: 100%
+ .t: 100%
+ .group_index: 20% (not tested yet: TODO: auto generate groups from blender data, by materials)
+ .smoothing_group: 100%
+ .flags: 0%
+ .vertex_normals: 80% (not tested yet)
+ .groups
+ Ms3dGroup
+ .name: 100%
+ .triangle_indices: 100%
+ .material_index: 0% (TODO: auto generate groups from blender data, by materials)
+ .comment: 100%
+ .flags: 100%
+ .materials
+ Ms3dMaterial
+ name: 0%
+ ambient: 0%
+ diffuse: 0%
+ specular: 0%
+ emissive: 0%
+ shininess: 0%
+ transparency: 0%
+ mode: 0%
+ texture: 0%
+ alphamap: 0%
+ comment: 0%
+ .comment: 0%
+ .model_ex
+ Ms3dModelEx
+ .joint_size: 0%
+ .transparency_mode: 0%
+ .alpha_ref: 0%
+ .joints
+ Ms3dJoint
+ .name: 0%
+ .parent_name: 0%
+ .rotation: 0%
+ .position: 0%
+ .rotation_keyframes: 0%
+ .translation_keyframes: 0%
+ .joint_ex
+ Ms3DJointEx
+ .color: 0%
+ .comment: 0%
+###############################################################################
importer:
Ms3dModel
.vertices
@@ -100,7 +160,7 @@
.vertex: 100%
.bone_id: 100%
.reference_count: 0% (100% will be calculated on export)
- .flags: 100% (value only)
+ .flags: 0% (value only)
.vertex_ex
Ms3dVertexEx
.bone_ids: 0%
@@ -155,3 +215,4 @@
Ms3DJointEx
.color: 100% (value only)
.comment: 100%
+###############################################################################
Modified: contrib/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__init__.py 2012-07-09 20:37:47 UTC (rev 3603)
+++ contrib/py/scripts/addons/io_scene_ms3d/__init__.py 2012-07-09 21:13:06 UTC (rev 3604)
@@ -23,7 +23,7 @@
'description': "Import / Export MilkShape3D MS3D files"\
" (conform with v1.8.4)",
'author': "Alexander Nussbaumer",
- 'version': (0, 4, 0, 2),
+ 'version': (0, 4, 0, 3),
'blender': (2, 6, 3, 0),
'location': "File > Import & File > Export",
'warning': "[2012-07-09] currently only the importer is implemented",
Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py 2012-07-09 20:37:47 UTC (rev 3603)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py 2012-07-09 21:13:06 UTC (rev 3604)
@@ -205,18 +205,37 @@
blender_to_ms3d_groups = {}
blender_to_ms3d_materials = {}
for blender_mesh_object in blender_mesh_objects:
+ blender_mesh = blender_mesh_object.data
+
##########################
+ # prepare ms3d groups if available
+ for ms3d_local_group_index, blender_ms3d_group in enumerate(blender_mesh.ms3d.groups):
+ ms3d_group = Ms3dGroup()
+ ms3d_group.__index = ms3d_local_group_index
+ ms3d_group.name = blender_ms3d_group.name
+ ms3d_group.flags = Ms3dUi.flags_to_ms3d(blender_ms3d_group.flags)
+ if blender_ms3d_group.comment:
+ ms3d_group._comment_object = Ms3dCommentEx()
+ ms3d_group._comment_object.comment = blender_ms3d_group.comment
+ ms3d_group._comment_object.index = len(ms3d_model._groups)
+ ms3d_model._groups.append(ms3d_group)
+ blender_to_ms3d_groups[blender_ms3d_group.id] = ms3d_group
+
+ ##########################
# i have to use BMesh, because there are several custom data stored.
# BMesh doesn't support quads_convert_to_tris()
# so, i use that very ugly way:
# create a complete copy of mesh and bend object data
# to be able to apply operations to it.
- blender_mesh_backup = blender_mesh_object.data
# get a temporary mesh with applied modifiers
- blender_mesh_temp = blender_mesh_object.to_mesh(blender_scene,
- self.options.prop_apply_modifier,
- self.options.prop_apply_modifier_mode)
+ if self.options.prop_apply_modifier:
+ blender_mesh_temp = blender_mesh_object.to_mesh(blender_scene,
+ self.options.prop_apply_modifier,
+ self.options.prop_apply_modifier_mode)
+ else:
+ blender_mesh_temp = blender_mesh_object.data.copy()
+
# assign temporary mesh as new object data
blender_mesh_object.data = blender_mesh_temp
@@ -250,19 +269,26 @@
layer_uv = bm.loops.layers.uv.get(ms3d_str['OBJECT_LAYER_UV'])
if layer_uv is None:
- layer_uv = bm.loops.layers.uv.new(ms3d_str['OBJECT_LAYER_UV'])
+ if bm.loops.layers.uv:
+ layer_uv = bm.loops.layers.uv[0]
+ else:
+ layer_uv = bm.loops.layers.uv.new(ms3d_str['OBJECT_LAYER_UV'])
+ ##########################
+ # handle vertices
for bmv in bm.verts:
item = blender_to_ms3d_vertices.get(bmv)
if item is None:
index = len(ms3d_model._vertices)
ms3d_vertex = Ms3dVertex()
ms3d_vertex.__index = index
- ms3d_vertex._vertex = (self.matrix_coordination_system \
+ ms3d_vertex._vertex = (self.matrix_scaled_coordination_system \
* (bmv.co + blender_mesh_object.location))[:]
ms3d_model._vertices.append(ms3d_vertex)
blender_to_ms3d_vertices[bmv] = ms3d_vertex
+ ##########################
+ # faces
for bmf in bm.faces:
item = blender_to_ms3d_triangles.get(bmf)
if item is None:
@@ -284,16 +310,21 @@
)
ms3d_triangle._s = (
bmf.loops[0][layer_uv].uv.x,
- bmf.loops[0][layer_uv].uv.x,
- bmf.loops[0][layer_uv].uv.x,
+ bmf.loops[1][layer_uv].uv.x,
+ bmf.loops[2][layer_uv].uv.x,
)
ms3d_triangle._t = (
1.0 - bmf.loops[0][layer_uv].uv.y,
- 1.0 - bmf.loops[0][layer_uv].uv.y,
- 1.0 - bmf.loops[0][layer_uv].uv.y,
+ 1.0 - bmf.loops[1][layer_uv].uv.y,
+ 1.0 - bmf.loops[2][layer_uv].uv.y,
)
ms3d_triangle.smoothing_group = bmf[layer_smoothing_group]
ms3d_model._triangles.append(ms3d_triangle)
+
+ ms3d_group = blender_to_ms3d_groups.get(bmf[layer_group])
+ if ms3d_group is not None:
+ ms3d_triangle.group_index = ms3d_group.__index
+
blender_to_ms3d_triangles[bmf] = ms3d_triangle
if bm is not None:
@@ -303,7 +334,7 @@
##########################
# restore original object data
- blender_mesh_object.data = blender_mesh_backup
+ blender_mesh_object.data = blender_mesh
##########################
# remove the temporary data
Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py 2012-07-09 20:37:47 UTC (rev 3603)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py 2012-07-09 21:13:06 UTC (rev 3604)
@@ -426,7 +426,7 @@
= blender_material.texture_slots.add()
blender_texture_slot_diffuse.texture = blender_texture_diffuse
blender_texture_slot_diffuse.texture_coords = 'UV'
- blender_texture_slot_diffuse.uv_layer = layer_texture.name
+ blender_texture_slot_diffuse.uv_layer = layer_uv.name
blender_texture_slot_diffuse.use_map_color_diffuse = True
blender_texture_slot_diffuse.use_map_alpha = False
else:
@@ -445,7 +445,7 @@
= blender_material.texture_slots.add()
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list