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:
authorJulien Duroure <julien.duroure@gmail.com>2020-09-17 22:46:22 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-09-17 22:46:22 +0300
commit654169969408144f472dd752beec233d1368af8f (patch)
tree6d27e20cf87b09442d64e5e7b9db9748ea8c4807
parent9db2451888a5f5a67d3d3d0fc2a967c208a3a801 (diff)
glTF exporter: option to export placeholder of materials
* export all materials used by object exported * not export materials at all (mesh will be exported as a single primitive) * export placeholder: materials are not exported, but slots are still used to separate mesh into primitives
-rwxr-xr-xio_scene_gltf2/__init__.py16
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_extract.py2
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py20
3 files changed, 23 insertions, 15 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 8eaf5e8d..3e09c58f 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,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": (1, 4, 29),
+ "version": (1, 4, 30),
'blender': (2, 90, 0),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',
@@ -214,10 +214,16 @@ class ExportGLTF2_Base:
default=False
)
- export_materials: BoolProperty(
+ export_materials: EnumProperty(
name='Materials',
- description='Export materials',
- default=True
+ items=(('EXPORT', 'Export',
+ 'Export all materials used by included objects'),
+ ('PLACEHOLDER', 'Placeholder',
+ 'Do not export materials, but write multiple primitive groups per mesh, keeping material slot information'),
+ ('NONE', 'No export',
+ 'Do not export materials, and combine mesh primitive groups, losing material slot information')),
+ description='Export materials ',
+ default='EXPORT'
)
export_colors: BoolProperty(
@@ -672,7 +678,7 @@ class GLTF_PT_export_geometry(bpy.types.Panel):
layout.prop(operator, 'export_colors')
layout.prop(operator, 'export_materials')
col = layout.column()
- col.active = operator.export_materials
+ col.active = operator.export_materials == "EXPORT"
col.prop(operator, 'export_image_format')
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
index 5b9e68f5..c0311b98 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
@@ -179,7 +179,7 @@ def extract_primitives(glTF, blender_mesh, library, blender_object, blender_vert
prim_indices = {} # maps material index to TRIANGLES-style indices into dots
- if not use_materials:
+ if use_materials == "NONE": # Only for None. For placeholder and export, keep primitives
# Put all vertices into one primitive
prim_indices[-1] = loop_indices
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 4fe498e1..fd325d48 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
@@ -54,15 +54,17 @@ def gather_primitives(
material_idx = internal_primitive['material']
double_sided = False
material = None
- try:
- blender_material = bpy.data.materials[material_names[material_idx]]
- double_sided = not blender_material.use_backface_culling
- material = gltf2_blender_gather_materials.gather_material(blender_material,
- double_sided,
- export_settings)
- except IndexError:
- # no material at that index
- pass
+
+ if export_settings['gltf_materials'] == "EXPORT":
+ try:
+ blender_material = bpy.data.materials[material_names[material_idx]]
+ double_sided = not blender_material.use_backface_culling
+ material = gltf2_blender_gather_materials.gather_material(blender_material,
+ double_sided,
+ export_settings)
+ except IndexError:
+ # no material at that index
+ pass
primitive = gltf2_io.MeshPrimitive(