[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3967] contrib/py/scripts/addons/ io_scene_ms3d: add: exporter - exports joints/bones

Alexander Nussbaumer alpha-beta-release at gmx.net
Wed Nov 14 21:42:54 CET 2012


Revision: 3967
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3967
Author:   beta-tester
Date:     2012-11-14 20:42:52 +0000 (Wed, 14 Nov 2012)
Log Message:
-----------
add: exporter - exports joints/bones

importer: is final
exporter: is working (without animation)

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_strings.py
    contrib/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
    contrib/py/scripts/addons/io_scene_ms3d/ms3d_utils.py

Modified: contrib/py/scripts/addons/io_scene_ms3d/__README__.txt
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__README__.txt	2012-11-14 12:18:29 UTC (rev 3966)
+++ contrib/py/scripts/addons/io_scene_ms3d/__README__.txt	2012-11-14 20:42:52 UTC (rev 3967)
@@ -81,8 +81,6 @@
             is used per mesh
     - does only export the first existing UV texture coordinates,
             if more than one UV texture is used per mesh
-    - does not export bones
-    - does not export joints
     - does not export keyframes
 
 
@@ -121,31 +119,31 @@
                     .flags: 100%
             .materials
                 Ms3dMaterial
-                    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)
+                    name: 100%
+                    ambient: 100%
+                    diffuse: 100%
+                    specular: 100%
+                    emissive: 100%
+                    shininess: 100%
+                    transparency: 100%
+                    mode: 100%
+                    texture: 100%
+                    alphamap: 100%
+                    comment: 100%
+            .comment: 100%
             .model_ex
                 Ms3dModelEx
-                    .joint_size: 100% (only ms3d-properties)
-                    .transparency_mode: 100% (only ms3d-properties)
-                    .alpha_ref: 100% (only ms3d-properties)
+                    .joint_size: 100%
+                    .transparency_mode: 100%
+                    .alpha_ref: 100%
             .joints
                 Ms3dJoint
                     .name: 100%
                     .parent_name: 100%
-                    .rotation: 0%
+                    .rotation: 100%
                     .position: 100%
-                    .rotation_keyframes: 0%
-                    .translation_keyframes: 0%
+                    .rotation_keyframes: 0% (TODO)
+                    .translation_keyframes: 0% (TODO)
                     .joint_ex
                         Ms3DJointEx
                             .color: 100%
@@ -157,8 +155,8 @@
                 Ms3dVertex
                     .vertex: 100%
                     .bone_id: 100%
-                    .reference_count: 0% (100% will be calculated on export)
-                    .flags: 0% (value only)
+                    .reference_count: 0%
+                    .flags: 0%
                     .vertex_ex
                         Ms3dVertexEx
                             .bone_ids: 100%
@@ -170,37 +168,35 @@
                     .s: 100%
                     .t: 100%
                     .group_index: 100%
-                    .smoothing_group: 100% (BUG: generation of sharp edges
-                            does not work well on isolated faces
-                            - faces, that does not share edges with neighbors)
+                    .smoothing_group: 100%
                     .flags: 0%
-                    .vertex_normals: 0% (not/never for import)
+                    .vertex_normals: 0%
             .groups
                 Ms3dGroup
-                    .name: 100% (value only)
+                    .name: 100%
                     .triangle_indices: 100%
                     .material_index: 100%
-                    .comment: 100% (value only)
-                    .flags: 100% (value only)
+                    .comment: 100%
+                    .flags: 100%
             .materials
                 Ms3dMaterial
-                    name: 100% (value only)
+                    name: 100%
                     ambient: 100%
                     diffuse: 100%
                     specular: 100%
                     emissive: 100%
                     shininess: 100%
                     transparency: 100%
-                    mode: 100% (value only)
-                    texture: 100% (value only)
-                    alphamap: 100% (value only)
-                    comment: 100% (value only)
-            .comment: 100% (value only)
+                    mode: 100%
+                    texture: 100%
+                    alphamap: 100%
+                    comment: 100%
+            .comment: 100%
             .model_ex
                 Ms3dModelEx
-                    .joint_size: 100% (value only)
-                    .transparency_mode: 100% (value only)
-                    .alpha_ref: 100% (value only)
+                    .joint_size: 100%
+                    .transparency_mode: 100%
+                    .alpha_ref: 100%
             .joints
                 Ms3dJoint
                     .name: 100%
@@ -211,6 +207,6 @@
                     .translation_keyframes: 100%
                     .joint_ex
                         Ms3DJointEx
-                            .color: 100% (value only)
+                            .color: 100%
                     .comment: 100%
 ###############################################################################

Modified: contrib/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__init__.py	2012-11-14 12:18:29 UTC (rev 3966)
+++ contrib/py/scripts/addons/io_scene_ms3d/__init__.py	2012-11-14 20:42:52 UTC (rev 3967)
@@ -23,10 +23,10 @@
         'description': "Import / Export MilkShape3D MS3D files"\
                 " (conform with v1.8.4)",
         'author': "Alexander Nussbaumer",
-        'version': (0, 4, 8, 6),
+        'version': (0, 4, 9, 0),
         'blender': (2, 6, 3, 0),
         'location': "File > Import & File > Export",
-        'warning': "[2012-11-13] exporter is working, but is incomplete",
+        #'warning': "[2012-11-14] exporter is working (without animation)",
         '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-14 12:18:29 UTC (rev 3966)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py	2012-11-14 20:42:52 UTC (rev 3967)
@@ -34,10 +34,12 @@
 import io
 from math import (
         radians,
+        pi,
         )
 from mathutils import (
         Vector,
         Euler,
+        Matrix,
         )
 from os import (
         path,
@@ -89,6 +91,8 @@
             enable_edit_mode,
             pre_setup_environment,
             post_setup_environment,
+            rotation_matrix,
+            matrix_difference,
             )
     from io_scene_ms3d.ms3d_ui import (
             Ms3dUi,
@@ -304,9 +308,10 @@
                     index = len(ms3d_model._vertices)
                     ms3d_vertex = Ms3dVertex()
                     ms3d_vertex.__index = index
-                    ms3d_vertex._vertex = (self.matrix_scaled_coordination_system \
-                            * (bmv.co + blender_mesh_object.location))[:]
 
+                    loc = (bmv.co + blender_mesh_object.location)
+                    ms3d_vertex._vertex = self.geometry_correction(loc)
+
                     if layer_deform:
                         blender_vertex_group_ids = bmv[layer_deform]
                         if blender_vertex_group_ids:
@@ -360,9 +365,9 @@
                             ms3d_vertex2.__index,
                             )
                     ms3d_triangle._vertex_normals = (
-                            (self.matrix_coordination_system * bmv0.normal)[:],
-                            (self.matrix_coordination_system * bmv1.normal)[:],
-                            (self.matrix_coordination_system * bmv2.normal)[:],
+                            self.geometry_correction(bmv0.normal),
+                            self.geometry_correction(bmv1.normal),
+                            self.geometry_correction(bmv2.normal),
                             )
                     ms3d_triangle._s = (
                             bmf.loops[0][layer_uv].uv.x,
@@ -419,10 +424,7 @@
                 blender_mesh_temp.user_clear()
                 blender_context.blend_data.meshes.remove(blender_mesh_temp)
 
-            # DEBUG:
-            #print("DEBUG: blender_mesh_object: {}".format(blender_mesh_object))
 
-
     ###########################################################################
     def create_animation(self, blender_context, ms3d_model, blender_mesh_objects, blender_to_ms3d_bones):
         ##########################
@@ -433,8 +435,8 @@
         ms3d_model.current_time = (blender_scene.frame_current - blender_scene.frame_start)\
                 / (blender_scene.render.fps * blender_scene.render.fps_base)
 
-        #return
-        ### not ready yet
+        base_bone_correction = Matrix.Rotation(pi / 2, 4, 'Z')
+
         for blender_mesh_object in blender_mesh_objects:
             blender_bones = None
             for blender_modifier in blender_mesh_object.modifiers:
@@ -442,7 +444,9 @@
                     blender_bones = blender_modifier.object.data.bones
                     break
 
-            for blender_bone_oject in blender_bones:
+            blender_bones_ordered = self.build_blender_bone_dependency_order(blender_bones)
+            for blender_bone_name in blender_bones_ordered:
+                blender_bone_oject = blender_bones[blender_bone_name]
                 ms3d_joint = Ms3dJoint()
                 ms3d_joint.__index = len(ms3d_model._joints)
 
@@ -463,19 +467,21 @@
                     ms3d_joint.name = blender_bone.name
 
                 if blender_bone.parent:
-                    if blender_ms3d_joint.name:

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list