[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