[Bf-extensions-cvs] [62af5c68] master: glTF exporter: various fixes / enhancements

Julien Duroure noreply at git.blender.org
Thu Feb 21 14:19:16 CET 2019


Commit: 62af5c68867f187a2c05463890d90eae415c99ba
Author: Julien Duroure
Date:   Thu Feb 21 14:17:11 2019 +0100
Branches: master
https://developer.blender.org/rBA62af5c68867f187a2c05463890d90eae415c99ba

glTF exporter: various fixes / enhancements

* export double-sided mesh flag
* add export time logging
* Enhacement of export at current frame / frame 0 management

===================================================================

M	io_scene_gltf2/__init__.py
M	io_scene_gltf2/blender/exp/gltf2_blender_export.py
M	io_scene_gltf2/blender/exp/gltf2_blender_export_keys.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py

===================================================================

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 4872b228..9e41cf03 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -179,12 +179,6 @@ class ExportGLTF2_Base:
         max=120
     )
 
-    export_move_keyframes: BoolProperty(
-        name='Keyframes Start at 0',
-        description='Keyframes start at 0, instead of 1',
-        default=True
-    )
-
     export_force_sampling: BoolProperty(
         name='Always Sample Animations',
         description='Apply sampling to all animations',
@@ -194,7 +188,7 @@ class ExportGLTF2_Base:
     export_current_frame: BoolProperty(
         name='Use Current Frame',
         description='Export the scene in the current animation frame',
-        default=True
+        default=False
     )
 
     export_skins: BoolProperty(
@@ -313,14 +307,12 @@ class ExportGLTF2_Base:
         export_settings['gltf_extras'] = self.export_extras
         export_settings['gltf_yup'] = self.export_yup
         export_settings['gltf_apply'] = self.export_apply
+        export_settings['gltf_current_frame'] = self.export_current_frame
         export_settings['gltf_animations'] = self.export_animations
         if self.export_animations:
-            export_settings['gltf_current_frame'] = False
             export_settings['gltf_frame_range'] = self.export_frame_range
-            export_settings['gltf_move_keyframes'] = self.export_move_keyframes
             export_settings['gltf_force_sampling'] = self.export_force_sampling
         else:
-            export_settings['gltf_current_frame'] = self.export_current_frame
             export_settings['gltf_frame_range'] = False
             export_settings['gltf_move_keyframes'] = False
             export_settings['gltf_force_sampling'] = False
@@ -389,14 +381,13 @@ class ExportGLTF2_Base:
 
     def draw_animation_settings(self):
         col = self.layout.box().column()
+        col.prop(self, 'export_current_frame')
         col.prop(self, 'export_animations')
         if self.export_animations:
             col.prop(self, 'export_frame_range')
             col.prop(self, 'export_frame_step')
             col.prop(self, 'export_move_keyframes')
             col.prop(self, 'export_force_sampling')
-        else:
-            col.prop(self, 'export_current_frame')
         col.prop(self, 'export_skins')
         if self.export_skins:
             col.prop(self, 'export_bake_skins')
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_export.py b/io_scene_gltf2/blender/exp/gltf2_blender_export.py
index cb0a6eef..f3e4a469 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_export.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_export.py
@@ -11,6 +11,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+import time
 
 import bpy
 import sys
@@ -29,10 +30,20 @@ def save(context, export_settings):
     if bpy.context.active_object is not None:
         bpy.ops.object.mode_set(mode='OBJECT')
 
+    original_frame = bpy.context.scene.frame_current
+    if not export_settings['gltf_current_frame']:
+        bpy.context.scene.frame_set(0)
+
     __notify_start(context)
+    start_time = time.time()
     json, buffer = __export(export_settings)
     __write_file(json, buffer, export_settings)
-    __notify_end(context)
+
+    end_time = time.time()
+    __notify_end(context, end_time - start_time)
+
+    if not export_settings['gltf_current_frame']:
+        bpy.context.scene.frame_set(original_frame)
     return {'FINISHED'}
 
 
@@ -123,8 +134,8 @@ def __notify_start(context):
     context.window_manager.progress_update(0)
 
 
-def __notify_end(context):
-    print_console('INFO', 'Finished glTF 2.0 export')
+def __notify_end(context, elapsed):
+    print_console('INFO', 'Finished glTF 2.0 export in {} s'.format(elapsed))
     context.window_manager.progress_end()
     print_newline()
 
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_export_keys.py b/io_scene_gltf2/blender/exp/gltf2_blender_export_keys.py
index 8562e09d..16edf955 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_export_keys.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_export_keys.py
@@ -46,7 +46,6 @@ NORMALS = 'gltf_normals'
 TANGENTS = 'gltf_tangents'
 MORPH_TANGENT = 'gltf_morph_tangent'
 MORPH_NORMAL = 'gltf_morph_normal'
-MOVE_KEYFRAMES = 'gltf_move_keyframes'
 MATERIALS = 'gltf_materials'
 EXTRAS = 'gltf_extras'
 CAMERAS = 'gltf_cameras'
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
index 74375145..41bb7649 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
@@ -27,7 +27,7 @@ from io_scene_gltf2.blender.exp import gltf2_blender_get
 
 
 @cached
-def gather_material(blender_material, export_settings):
+def gather_material(blender_material, mesh_double_sided, export_settings):
     """
     Gather the material used by the blender primitive.
 
@@ -41,7 +41,7 @@ def gather_material(blender_material, export_settings):
     material = gltf2_io.Material(
         alpha_cutoff=__gather_alpha_cutoff(blender_material, export_settings),
         alpha_mode=__gather_alpha_mode(blender_material, export_settings),
-        double_sided=__gather_double_sided(blender_material, export_settings),
+        double_sided=__gather_double_sided(blender_material, mesh_double_sided, export_settings),
         emissive_factor=__gather_emissive_factor(blender_material, export_settings),
         emissive_texture=__gather_emissive_texture(blender_material, export_settings),
         extensions=__gather_extensions(blender_material, export_settings),
@@ -87,7 +87,10 @@ def __gather_alpha_mode(blender_material, export_settings):
     return None
 
 
-def __gather_double_sided(blender_material, export_settings):
+def __gather_double_sided(blender_material, mesh_double_sided, export_settings):
+    if mesh_double_sided:
+        return True
+
     old_double_sided_socket = gltf2_blender_get.get_socket_or_texture_slot_old(blender_material, "DoubleSided")
     if old_double_sided_socket is not None and\
             not old_double_sided_socket.is_linked and\
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
index bf81e808..5b2d8ae2 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
@@ -63,10 +63,11 @@ def gather_primitives(
 
 def __gather_materials(blender_primitive, blender_mesh, modifiers, export_settings):
     if not blender_primitive['material']:
-        # TODO: fix 'extract_promitives' so that the value of 'material' is None and not empty string
+        # TODO: fix 'extract_primitives' so that the value of 'material' is None and not empty string
         return None
+    mesh_double_sided = blender_mesh.show_double_sided
     material = bpy.data.materials[blender_primitive['material']]
-    return gltf2_blender_gather_materials.gather_material(material, export_settings)
+    return gltf2_blender_gather_materials.gather_material(material, mesh_double_sided, export_settings)
 
 
 def __gather_indices(blender_primitive, blender_mesh, modifiers, export_settings):



More information about the Bf-extensions-cvs mailing list