[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4365] trunk/py/scripts/addons: add axis conversion to wrl export.

Campbell Barton ideasman42 at gmail.com
Tue Mar 12 08:32:26 CET 2013


Revision: 4365
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4365
Author:   campbellbarton
Date:     2013-03-12 07:32:25 +0000 (Tue, 12 Mar 2013)
Log Message:
-----------
add axis conversion to wrl export.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_vrml2/__init__.py
    trunk/py/scripts/addons/io_scene_vrml2/export_vrml2.py
    trunk/py/scripts/addons/io_scene_x3d/__init__.py

Modified: trunk/py/scripts/addons/io_scene_vrml2/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_vrml2/__init__.py	2013-03-12 07:22:44 UTC (rev 4364)
+++ trunk/py/scripts/addons/io_scene_vrml2/__init__.py	2013-03-12 07:32:25 UTC (rev 4365)
@@ -40,7 +40,7 @@
 import os
 import bpy
 from bpy.props import CollectionProperty, StringProperty, BoolProperty, EnumProperty
-from bpy_extras.io_utils import ExportHelper, path_reference_mode
+from bpy_extras.io_utils import ExportHelper, path_reference_mode, axis_conversion
 
 class ExportVRML(bpy.types.Operator, ExportHelper):
     """Export mesh objects as a VRML2, """ \
@@ -80,6 +80,29 @@
             default=True,
             )
 
+    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',
+        )
+    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
 
     @classmethod
@@ -91,7 +114,17 @@
         filepath = self.filepath
         filepath = bpy.path.ensure_ext(filepath, self.filename_ext)
         from . import export_vrml2
-        keywords = self.as_keywords(ignore=("check_existing", "filter_glob"))
+
+        keywords = self.as_keywords(ignore=("axis_forward",
+                                            "axis_up",
+                                            "check_existing",
+                                            "filter_glob",
+                                            ))
+        global_matrix = axis_conversion(to_forward=self.axis_forward,
+                                        to_up=self.axis_up,
+                                        ).to_4x4()
+        keywords["global_matrix"] = global_matrix
+
         return export_vrml2.save(self, context, **keywords)
 
     def draw(self, context):
@@ -106,6 +139,8 @@
         row = layout.row()
         row.active = self.use_color
         row.prop(self, "color_type")
+        layout.prop(self, "axis_forward")
+        layout.prop(self, "axis_up")
         layout.prop(self, "path_mode")
 
 

Modified: trunk/py/scripts/addons/io_scene_vrml2/export_vrml2.py
===================================================================
--- trunk/py/scripts/addons/io_scene_vrml2/export_vrml2.py	2013-03-12 07:22:44 UTC (rev 4364)
+++ trunk/py/scripts/addons/io_scene_vrml2/export_vrml2.py	2013-03-12 07:32:25 UTC (rev 4365)
@@ -165,7 +165,8 @@
     return None
 
 
-def save_object(fw, scene, obj,
+def save_object(fw, global_matrix,
+                scene, obj,
                 use_mesh_modifiers,
                 use_color, color_type,
                 use_uv,
@@ -193,7 +194,7 @@
             bm = bmesh.new()
             bm.from_mesh(me)
 
-    bm.transform(obj.matrix_world)
+    bm.transform(global_matrix * obj.matrix_world)
     bmesh.ops.triangulate(bm, faces=bm.faces, use_beauty=True)
 
     # default empty
@@ -232,6 +233,7 @@
 def save(operator,
          context,
          filepath="",
+         global_matrix=None,
          use_selection=False,
          use_mesh_modifiers=True,
          use_color=True,
@@ -257,7 +259,8 @@
     for obj in objects:
         if obj.type == 'MESH':
             fw("\n# %r\n" % obj.name)
-            save_object(fw, scene, obj,
+            save_object(fw, global_matrix,
+                        scene, obj,
                         use_mesh_modifiers,
                         use_color, color_type,
                         use_uv,

Modified: trunk/py/scripts/addons/io_scene_x3d/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_x3d/__init__.py	2013-03-12 07:22:44 UTC (rev 4364)
+++ trunk/py/scripts/addons/io_scene_x3d/__init__.py	2013-03-12 07:32:25 UTC (rev 4365)
@@ -157,7 +157,6 @@
                ),
         default='Z',
         )
-
     axis_up = EnumProperty(
             name="Up",
             items=(('X', "X Up", ""),



More information about the Bf-extensions-cvs mailing list