diff options
author | Peter Kim <pk15950@gmail.com> | 2022-04-04 10:36:19 +0300 |
---|---|---|
committer | Peter Kim <pk15950@gmail.com> | 2022-04-04 10:36:19 +0300 |
commit | 0d3a8981f7e6bb3d9bd2e6483607421c663463c4 (patch) | |
tree | 625127c66e989b3cd4aa66448f2db4344489ee91 | |
parent | e9ef610716dd0958e88cb5e73ed78d24e175f19b (diff) | |
parent | 22c1eb5c3d505d85e953c3921317856af103a2eb (diff) |
Merge branch 'master' into xr-dev
-rwxr-xr-x | io_scene_gltf2/__init__.py | 4 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_extract.py | 3 | ||||
-rw-r--r-- | io_scene_gltf2/blender/exp/gltf2_blender_gather_tree.py | 6 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/imp/gltf2_blender_scene.py | 12 |
4 files changed, 17 insertions, 8 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index c844838b..dc80a1e1 100755 --- a/io_scene_gltf2/__init__.py +++ b/io_scene_gltf2/__init__.py @@ -4,7 +4,7 @@ bl_info = { 'name': 'glTF 2.0 format', 'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors', - "version": (3, 2, 22), + "version": (3, 2, 26), 'blender': (3, 1, 0), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', @@ -378,7 +378,7 @@ class ExportGLTF2_Base: "Reduce exported file-size by removing duplicate keyframes" "(can cause problems with stepped animation)" ), - default=True + default=False ) export_current_frame: BoolProperty( diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py index 98e2ac19..cbb98cc0 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py @@ -544,6 +544,7 @@ def __get_colors(blender_mesh, color_i): def __get_bone_data(blender_mesh, skin, blender_vertex_groups): need_neutral_bone = False + min_influence = 0.0001 joint_name_to_index = {joint.name: index for index, joint in enumerate(skin.joints)} group_to_joint = [joint_name_to_index.get(g.name) for g in blender_vertex_groups] @@ -557,7 +558,7 @@ def __get_bone_data(blender_mesh, skin, blender_vertex_groups): if vertex.groups: for group_element in vertex.groups: weight = group_element.weight - if weight <= 0.0: + if weight <= min_influence: continue try: joint = group_to_joint[group_element.group] diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_tree.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_tree.py index cf4983e1..e629a963 100644 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_tree.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_tree.py @@ -170,8 +170,10 @@ class VExportTree: node.matrix_world @= correction.to_matrix().to_4x4() elif node.blender_type == VExportNode.BONE: node.matrix_world = self.nodes[node.armature].matrix_world @ blender_bone.matrix - axis_basis_change = Matrix( - ((1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0), (0.0, -1.0, 0.0, 0.0), (0.0, 0.0, 0.0, 1.0))) + axis_basis_change = Matrix.Identity(4) + if self.export_settings[gltf2_blender_export_keys.YUP]: + axis_basis_change = Matrix( + ((1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0), (0.0, -1.0, 0.0, 0.0), (0.0, 0.0, 0.0, 1.0))) node.matrix_world = node.matrix_world @ axis_basis_change # Force empty ? diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_scene.py b/io_scene_gltf2/blender/imp/gltf2_blender_scene.py index 2092a6be..672b68c8 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_scene.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_scene.py @@ -36,12 +36,18 @@ class BlenderScene(): BlenderNode.create_vnode(gltf, 'root') # User extensions before scene creation - import_user_extensions('gather_import_scene_after_nodes_hook', gltf, gltf.data.scenes[gltf.data.scene], scene) + gltf_scene = None + if gltf.data.scene is not None: + gltf_scene = gltf.data.scenes[gltf.data.scene] + import_user_extensions('gather_import_scene_after_nodes_hook', gltf, gltf_scene, scene) - # User extensions after scene creation BlenderScene.create_animations(gltf) - import_user_extensions('gather_import_scene_after_animation_hook', gltf, gltf.data.scenes[gltf.data.scene], scene) + # User extensions after scene creation + gltf_scene = None + if gltf.data.scene is not None: + gltf_scene = gltf.data.scenes[gltf.data.scene] + import_user_extensions('gather_import_scene_after_animation_hook', gltf, gltf_scene, scene) if bpy.context.mode != 'OBJECT': bpy.ops.object.mode_set(mode='OBJECT') |