[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1964] trunk/py/scripts/addons: axis conversion for X3D and OBJ operators
Campbell Barton
ideasman42 at gmail.com
Wed May 25 00:20:55 CEST 2011
Revision: 1964
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1964
Author: campbellbarton
Date: 2011-05-24 22:20:54 +0000 (Tue, 24 May 2011)
Log Message:
-----------
axis conversion for X3D and OBJ operators
Modified Paths:
--------------
trunk/py/scripts/addons/io_scene_fbx/__init__.py
trunk/py/scripts/addons/io_scene_obj/__init__.py
trunk/py/scripts/addons/io_scene_obj/export_obj.py
trunk/py/scripts/addons/io_scene_obj/import_obj.py
trunk/py/scripts/addons/io_scene_x3d/__init__.py
trunk/py/scripts/addons/io_scene_x3d/export_x3d.py
trunk/py/scripts/addons/io_scene_x3d/import_x3d.py
Modified: trunk/py/scripts/addons/io_scene_fbx/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/__init__.py 2011-05-24 16:46:55 UTC (rev 1963)
+++ trunk/py/scripts/addons/io_scene_fbx/__init__.py 2011-05-24 22:20:54 UTC (rev 1964)
@@ -144,7 +144,7 @@
keywords = self.as_keywords(ignore=("global_axis_forward", "global_axis_up", "global_scale", "check_existing", "filter_glob"))
keywords["GLOBAL_MATRIX"] = GLOBAL_MATRIX
- print(GLOBAL_MATRIX)
+
from . import export_fbx
return export_fbx.save(self, context, **keywords)
Modified: trunk/py/scripts/addons/io_scene_obj/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_obj/__init__.py 2011-05-24 16:46:55 UTC (rev 1963)
+++ trunk/py/scripts/addons/io_scene_obj/__init__.py 2011-05-24 22:20:54 UTC (rev 1964)
@@ -43,7 +43,7 @@
import bpy
from bpy.props import BoolProperty, FloatProperty, StringProperty, EnumProperty
-from bpy_extras.io_utils import ExportHelper, ImportHelper, path_reference_mode
+from bpy_extras.io_utils import ExportHelper, ImportHelper, path_reference_mode, axis_conversion
class ImportOBJ(bpy.types.Operator, ImportHelper):
@@ -64,8 +64,6 @@
use_groups_as_vgroups = BoolProperty(name="Poly Groups", description="Import OBJ groups as vertex groups.", default=False)
- use_rotate_x90 = BoolProperty(name="-X90", description="Rotate X 90.", default=True)
- global_clamp_size = FloatProperty(name="Clamp Scale", description="Clamp the size to this maximum (Zero to Disable)", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=0.0)
use_image_search = BoolProperty(name="Image Search", description="Search subdirs for any assosiated images (Warning, may be slow)", default=True)
split_mode = EnumProperty(
@@ -75,12 +73,38 @@
),
)
+ global_clamp_size = FloatProperty(name="Clamp Scale", description="Clamp the size to this maximum (Zero to Disable)", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=0.0)
+ global_axis_forward = EnumProperty(
+ name="Forward",
+ items=(('X', "X Forward", ""),
+ ('Y', "Y Forward", ""),
+ ('Z', "Z Forward", ""),
+ ('-X', "-X Forward", ""),
+ ('-Y', "-Y Forward", ""),
+ ('-Z', "-Z Forward", ""),
+ ),
+ default='-Z',
+ )
+
+ global_axis_up = EnumProperty(
+ name="Up",
+ items=(('X', "X Up", ""),
+ ('Y', "Y Up", ""),
+ ('Z', "Z Up", ""),
+ ('-X', "-X Up", ""),
+ ('-Y', "-Y Up", ""),
+ ('-Z', "-Z Up", ""),
+ ),
+ default='Y',
+ )
+
# fake prop, only disables split.
# keep_vertex_order = BoolProperty(name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True)
def execute(self, context):
# print("Selected: " + context.active_object.name)
from . import import_obj
+ from mathutils import Matrix
if self.split_mode == 'OFF':
self.use_split_objects = False
@@ -88,8 +112,13 @@
else:
self.use_groups_as_vgroups = False
- return import_obj.load(self, context, **self.as_keywords(ignore=("filter_glob", "split_mode")))
+ keywords = self.as_keywords(ignore=("global_axis_forward", "global_axis_up", "filter_glob", "split_mode"))
+ global_matrix = axis_conversion(from_forward=self.global_axis_forward, from_up=self.global_axis_up).to_4x4()
+ keywords["global_matrix"] = global_matrix
+
+ return import_obj.load(self, context, **keywords)
+
def draw(self, context):
layout = self.layout
@@ -113,7 +142,8 @@
row = layout.split(percentage=0.67)
row.prop(self, "global_clamp_size")
- row.prop(self, "use_rotate_x90")
+ layout.prop(self, "global_axis_forward")
+ layout.prop(self, "global_axis_up")
layout.prop(self, "use_image_search")
@@ -138,7 +168,6 @@
# object group
use_apply_modifiers = BoolProperty(name="Apply Modifiers", description="Apply modifiers (preview resolution)", default=True)
- use_rotate_x90 = BoolProperty(name="Rotate X90", description="", default=True)
# extra data group
use_edges = BoolProperty(name="Edges", description="", default=True)
@@ -157,13 +186,47 @@
group_by_material = BoolProperty(name="Material Groups", description="", default=False)
keep_vertex_order = BoolProperty(name="Keep Vertex Order", description="", default=False)
+ global_scale = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0)
+
+ global_axis_forward = EnumProperty(
+ name="Forward",
+ items=(('X', "X Forward", ""),
+ ('Y', "Y Forward", ""),
+ ('Z', "Z Forward", ""),
+ ('-X', "-X Forward", ""),
+ ('-Y', "-Y Forward", ""),
+ ('-Z', "-Z Forward", ""),
+ ),
+ default='-Z',
+ )
+
+ global_axis_up = EnumProperty(
+ name="Up",
+ items=(('X', "X Up", ""),
+ ('Y', "Y Up", ""),
+ ('Z', "Z Up", ""),
+ ('-X', "-X Up", ""),
+ ('-Y', "-Y Up", ""),
+ ('-Z', "-Z Up", ""),
+ ),
+ default='Y',
+ )
+
path_mode = path_reference_mode
def execute(self, context):
from . import export_obj
- return export_obj.save(self, context, **self.as_keywords(ignore=("check_existing", "filter_glob")))
+ from mathutils import Matrix
+ keywords = self.as_keywords(ignore=("global_axis_forward", "global_axis_up", "global_scale", "check_existing", "filter_glob"))
+ global_matrix = Matrix()
+ global_matrix[0][0] = global_matrix[1][1] = global_matrix[2][2] = self.global_scale
+ global_matrix = global_matrix * axis_conversion(to_forward=self.global_axis_forward, to_up=self.global_axis_up).to_4x4()
+ keywords["global_matrix"] = global_matrix
+ return export_obj.save(self, context, **keywords)
+
+
def menu_func_import(self, context):
self.layout.operator(ImportOBJ.bl_idname, text="Wavefront (.obj)")
Modified: trunk/py/scripts/addons/io_scene_obj/export_obj.py
===================================================================
--- trunk/py/scripts/addons/io_scene_obj/export_obj.py 2011-05-24 16:46:55 UTC (rev 1963)
+++ trunk/py/scripts/addons/io_scene_obj/export_obj.py 2011-05-24 22:20:54 UTC (rev 1964)
@@ -236,13 +236,13 @@
EXPORT_UV=True,
EXPORT_MTL=True,
EXPORT_APPLY_MODIFIERS=True,
- EXPORT_ROTX90=True,
EXPORT_BLEN_OBS=True,
EXPORT_GROUP_BY_OB=False,
EXPORT_GROUP_BY_MAT=False,
EXPORT_KEEP_VERT_ORDER=False,
EXPORT_POLYGROUPS=False,
EXPORT_CURVE_AS_NURBS=True,
+ EXPORT_GLOBAL_MATRIX=None,
EXPORT_PATH_MODE='AUTO',
):
'''
@@ -252,6 +252,9 @@
write( 'c:\\test\\foobar.obj', Blender.Object.GetSelected() ) # Using default options.
'''
+ if EXPORT_GLOBAL_MATRIX is None:
+ EXPORT_GLOBAL_MATRIX = mathutils.Matrix()
+
# XXX
import math
@@ -303,9 +306,6 @@
mtlfilepath = os.path.splitext(filepath)[0] + ".mtl"
file.write('mtllib %s\n' % repr(os.path.basename(mtlfilepath))[1:-1]) # filepath can contain non utf8 chars, use repr
- if EXPORT_ROTX90:
- mat_xrot90 = mathutils.Matrix.Rotation(-math.pi / 2.0, 4, 'X')
-
# Initialize totals, these are updated each object
totverts = totuvco = totno = 1
@@ -345,8 +345,7 @@
# Nurbs curve support
if EXPORT_CURVE_AS_NURBS and test_nurbs_compat(ob):
- if EXPORT_ROTX90:
- ob_mat = ob_mat * mat_xrot90
+ ob_mat = ob_mat * EXPORT_GLOBAL_MATRIX
totverts += write_nurb(file, ob, ob_mat)
continue
# END NURBS
@@ -355,12 +354,8 @@
continue
me = ob.to_mesh(scene, EXPORT_APPLY_MODIFIERS, 'PREVIEW')
+ me.transform(ob_mat * EXPORT_GLOBAL_MATRIX)
- if EXPORT_ROTX90:
- me.transform(mat_xrot90 * ob_mat)
- else:
- me.transform(ob_mat)
-
# # Will work for non meshes now! :)
# me= BPyMesh.getMeshFromObject(ob, containerMesh, EXPORT_APPLY_MODIFIERS, EXPORT_POLYGROUPS, scn)
# if not me:
@@ -670,7 +665,6 @@
EXPORT_UV, # ok
EXPORT_MTL,
EXPORT_APPLY_MODIFIERS, # ok
- EXPORT_ROTX90, # wrong
EXPORT_BLEN_OBS,
EXPORT_GROUP_BY_OB,
EXPORT_GROUP_BY_MAT,
@@ -680,6 +674,7 @@
EXPORT_SEL_ONLY, # ok
EXPORT_ALL_SCENES, # XXX not working atm
EXPORT_ANIMATION,
+ EXPORT_GLOBAL_MATRIX,
EXPORT_PATH_MODE,
): # Not used
@@ -739,13 +734,13 @@
EXPORT_UV,
EXPORT_MTL,
EXPORT_APPLY_MODIFIERS,
- EXPORT_ROTX90,
EXPORT_BLEN_OBS,
EXPORT_GROUP_BY_OB,
EXPORT_GROUP_BY_MAT,
EXPORT_KEEP_VERT_ORDER,
EXPORT_POLYGROUPS,
EXPORT_CURVE_AS_NURBS,
+ EXPORT_GLOBAL_MATRIX,
EXPORT_PATH_MODE,
)
@@ -771,7 +766,6 @@
use_uvs=True,
use_materials=True,
use_apply_modifiers=True,
- use_rotate_x90=True,
use_blen_objects=True,
group_by_object=False,
group_by_material=False,
@@ -781,6 +775,7 @@
use_selection=True,
use_all_scenes=False,
use_animation=False,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list