Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'io_scene_gltf2/blender/imp/gltf2_blender_gltf.py')
-rwxr-xr-xio_scene_gltf2/blender/imp/gltf2_blender_gltf.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py b/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
index f2556465..33713b97 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
@@ -4,6 +4,8 @@
import bpy
from mathutils import Vector, Quaternion, Matrix
from .gltf2_blender_scene import BlenderScene
+from ..com.gltf2_blender_ui import gltf2_KHR_materials_variants_variant, gltf2_KHR_materials_variants_primitive, gltf2_KHR_materials_variants_default_material
+from .gltf2_blender_material import BlenderMaterial
class BlenderGlTF():
@@ -180,6 +182,10 @@ class BlenderGlTF():
mesh.shapekey_names.append(shapekey_name)
+ # Manage KHR_materials_variants
+ BlenderGlTF.manage_material_variants(gltf)
+
+
@staticmethod
def find_unused_name(haystack, desired_name):
"""Finds a name not in haystack and <= 63 UTF-8 bytes.
@@ -201,3 +207,25 @@ class BlenderGlTF():
suffix = '.%03d' % cntr
cntr += 1
+
+
+ @staticmethod
+ def manage_material_variants(gltf):
+ if not (gltf.data.extensions is not None and 'KHR_materials_variants' in gltf.data.extensions.keys()):
+ gltf.KHR_materials_variants = False
+ return
+
+ gltf.KHR_materials_variants = True
+ # If there is no KHR_materials_variants data in scene, create it
+ if bpy.context.preferences.addons['io_scene_gltf2'].preferences.KHR_materials_variants_ui is False:
+ bpy.context.preferences.addons['io_scene_gltf2'].preferences.KHR_materials_variants_ui = True
+ # Setting preferences as dirty, to be sure that option is saved
+ bpy.context.preferences.is_dirty = True
+
+ if len(bpy.data.scenes[0].gltf2_KHR_materials_variants_variants) > 0:
+ bpy.data.scenes[0].gltf2_KHR_materials_variants_variants.clear()
+
+ for idx_variant, variant in enumerate(gltf.data.extensions['KHR_materials_variants']['variants']):
+ var = bpy.data.scenes[0].gltf2_KHR_materials_variants_variants.add()
+ var.name = variant['name']
+ var.variant_idx = idx_variant