[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3917] contrib/py/scripts/addons/ io_scene_ms3d: fix: exporter - is now able to export active mesh object
Alexander Nussbaumer
alpha-beta-release at gmx.net
Sat Nov 3 11:10:48 CET 2012
Revision: 3917
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3917
Author: beta-tester
Date: 2012-11-03 10:10:43 +0000 (Sat, 03 Nov 2012)
Log Message:
-----------
fix: exporter - is now able to export active mesh object
the exporter takes only ms3d-properties and ignores the blender-properties until i found a proper way to convert blender-props to ms3d-props automatically.
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-11-02 13:29:59 UTC (rev 3916)
+++ contrib/py/scripts/addons/io_scene_ms3d/__README__.txt 2012-11-03 10:10:43 UTC (rev 3917)
@@ -73,9 +73,10 @@
known issues:
importer issues:
- - does not import keyframes
+ -/-
exporter issues:
+ - does only export active mesh object
- does only export the first existing material, if more than one material
is used per mesh
- does only export the first existing UV texture coordinates,
@@ -83,13 +84,10 @@
- does not export bones
- does not export joints
- does not export keyframes
- - does not export comments (will never be supported - blender doesn't
- have similar stuff)
todo:
-- add support for bones and joints in exporter
-- add support for keyframes
+- add support for bones and joints and keyframes in exporter
###############################################################################
exporter:
@@ -110,7 +108,7 @@
.vertex_indices: 100%
.s: 100%
.t: 100%
- .group_index: 20% (not tested yet: TODO: auto generate groups from blender data, by materials)
+ .group_index: 100%
.smoothing_group: 100%
.flags: 0%
.vertex_normals: 80% (not tested yet)
@@ -118,28 +116,28 @@
Ms3dGroup
.name: 100%
.triangle_indices: 100%
- .material_index: 0% (TODO: auto generate groups from blender data, by materials)
+ .material_index: 100%
.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%
+ name: 100% (only ms3d-properties)
+ ambient: 100% (only ms3d-properties)
+ diffuse: 100% (only ms3d-properties)
+ specular: 100% (only ms3d-properties)
+ emissive: 100% (only ms3d-properties)
+ shininess: 100% (only ms3d-properties)
+ transparency: 100% (only ms3d-properties)
+ mode: 100% (only ms3d-properties)
+ texture: 100% (only ms3d-properties)
+ alphamap: 100% (only ms3d-properties)
+ comment: 100% (only ms3d-properties)
+ .comment: 100% (only ms3d-properties)
.model_ex
Ms3dModelEx
- .joint_size: 0%
- .transparency_mode: 0%
- .alpha_ref: 0%
+ .joint_size: 100% (only ms3d-properties)
+ .transparency_mode: 100% (only ms3d-properties)
+ .alpha_ref: 100% (only ms3d-properties)
.joints
Ms3dJoint
.name: 0%
Modified: contrib/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__init__.py 2012-11-02 13:29:59 UTC (rev 3916)
+++ contrib/py/scripts/addons/io_scene_ms3d/__init__.py 2012-11-03 10:10:43 UTC (rev 3917)
@@ -23,10 +23,10 @@
'description': "Import / Export MilkShape3D MS3D files"\
" (conform with v1.8.4)",
'author': "Alexander Nussbaumer",
- 'version': (0, 4, 0, 6),
+ 'version': (0, 4, 0, 7),
'blender': (2, 6, 3, 0),
'location': "File > Import & File > Export",
- 'warning': "[2012-11-01] exporter is only partial implemented",
+ 'warning': "[2012-11-03] exporter is incomplete",
'wiki_url': "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
"Scripts/Import-Export/MilkShape3D_MS3D",
'tracker_url': "http://projects.blender.org/tracker/index.php"\
Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py 2012-11-02 13:29:59 UTC (rev 3916)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py 2012-11-03 10:10:43 UTC (rev 3917)
@@ -191,15 +191,20 @@
blender_mesh_objects = self.create_geometry(blender_context, ms3d_model)
self.create_animation(blender_context, ms3d_model, blender_mesh_objects)
-
+
###########################################################################
def create_geometry(self, blender_context, ms3d_model):
blender_mesh_objects = []
- if self.options.prop_selected:
- source = blender_context.selected_objects
- else:
- source = blender_context.blend_data.objects
+ ##EXPORT_ACTIVE_ONLY:
+ ##if self.options.prop_selected:
+ ## source = blender_context.selected_objects
+ ##else:
+ ## source = blender_context.blend_data.objects
+ ##
+ ## temporary, handle only the active object, for easy handling
+ source = (blender_context.active_object, )
+ ##
for blender_object in source:
if blender_object and blender_object.type == 'MESH' \
@@ -212,13 +217,17 @@
blender_to_ms3d_triangles = {}
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
+ # works only for exporting active object
+ ##EXPORT_ACTIVE_ONLY:
for ms3d_local_group_index, blender_ms3d_group in enumerate(blender_mesh.ms3d.groups):
ms3d_group = Ms3dGroup()
+ ms3d_group.__index = len(ms3d_model._groups)
ms3d_group.name = blender_ms3d_group.name
ms3d_group.flags = Ms3dUi.flags_to_ms3d(blender_ms3d_group.flags)
if blender_ms3d_group.comment:
@@ -226,7 +235,6 @@
ms3d_group._comment_object.comment = blender_ms3d_group.comment
ms3d_group._comment_object.index = len(ms3d_model._groups)
ms3d_group.material_index = None # to mark as not setted
- ms3d_group.__index = len(ms3d_model._groups)
ms3d_model._groups.append(ms3d_group)
blender_to_ms3d_groups[blender_ms3d_group.id] = ms3d_group
@@ -333,22 +341,33 @@
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_material = self.get_ms3d_material_add_if(blender_mesh, ms3d_model, blender_to_ms3d_materials, bmf.material_index)
ms3d_group = blender_to_ms3d_groups.get(bmf[layer_group])
+
+ ##EXPORT_ACTIVE_ONLY:
if ms3d_group is not None:
- ms3d_triangle.group_index = ms3d_group.__index
- ms3d_group._triangle_indices.append(ms3d_triangle.__index)
if ms3d_group.material_index is None:
- ms3d_material = self.get_ms3d_material_add_if(blender_mesh, ms3d_model, blender_to_ms3d_materials, bmf.material_index)
if ms3d_material is None:
ms3d_group.material_index = Ms3dSpec.DEFAULT_GROUP_MATERIAL_INDEX
else:
ms3d_group.material_index = ms3d_material.__index
+ else:
+ if ms3d_material.__index != ms3d_group.material_index:
+ ms3d_group = self.get_ms3d_group_by_material_add_if(ms3d_model, ms3d_material)
+ else:
+ if ms3d_material is not None:
+ ms3d_group = self.get_ms3d_group_by_material_add_if(ms3d_model, ms3d_material)
+ else:
+ ms3d_group = self.get_ms3d_group_no_material_add_if(ms3d_model)
- #if ms3d_group.material_index !=
+ if ms3d_group is not None:
+ ms3d_group._triangle_indices.append(ms3d_triangle.__index)
+ ms3d_triangle.group_index = ms3d_group.__index
+
blender_to_ms3d_triangles[bmf] = ms3d_triangle
if bm is not None:
@@ -367,7 +386,7 @@
blender_context.blend_data.meshes.remove(blender_mesh_temp)
# DEBUG:
- print("DEBUG: blender_mesh_object: {}".format(blender_mesh_object))
+ #print("DEBUG: blender_mesh_object: {}".format(blender_mesh_object))
return blender_mesh_objects
@@ -385,38 +404,68 @@
###########################################################################
- def get_ms3d_group_add_if(self, blender_ms3d_group, ms3d_model, blender_to_ms3d_groups):
+ def get_ms3d_group_no_material_add_if(self, ms3d_model):
+ markerName = "No.Mat.Group."
+ markerComment = "no material group"
+
+ for ms3d_group in ms3d_model._groups:
+ if ms3d_group.material_index == Ms3dSpec.DEFAULT_GROUP_MATERIAL_INDEX \
+ and ms3d_group.name == markerName \
+ and ms3d_group._comment_object \
+ and ms3d_group._comment_object.comment == markerComment:
+ return ms3d_group
+
ms3d_group = Ms3dGroup()
ms3d_group.__index = len(ms3d_model._groups)
-
- ms3d_group.name = blender_ms3d_group.name
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list