Browse Source

Add support for Blend importing of material placeholders.

Couldn't get the 'NONE' option to work.
K. S. Ernest (iFire) Lee 3 years ago
parent
commit
d8b3d14d82

+ 12 - 0
modules/gltf/editor/editor_scene_importer_blend.cpp

@@ -80,6 +80,16 @@ Node *EditorSceneFormatImporterBlend::import_scene(const String &p_path, uint32_
 	} else {
 		parameters_arg += "export_skins=False,";
 	}
+	if (p_options.has(SNAME("blender/materials/export_materials")) && p_options[SNAME("blender/materials/export_materials")]) {
+		int32_t exports = p_options["blender/materials/export_materials"];
+		if (exports == BLEND_MATERIAL_EXPORT_PLACEHOLDER) {
+			parameters_arg += "export_materials='PLACEHOLDER',";
+		} else if (exports == BLEND_MATERIAL_EXPORT_EXPORT) {
+			parameters_arg += "export_materials='EXPORT',";
+		}
+	} else {
+		parameters_arg += "export_materials='PLACEHOLDER',";
+	}
 	if (p_options.has(SNAME("blender/nodes/cameras")) && p_options[SNAME("blender/nodes/cameras")]) {
 		parameters_arg += "export_cameras=True,";
 	} else {
@@ -107,6 +117,7 @@ Node *EditorSceneFormatImporterBlend::import_scene(const String &p_path, uint32_
 	} else {
 		parameters_arg += "use_visible=False,use_renderable=False,";
 	}
+
 	if (p_options.has(SNAME("blender/meshes/uvs")) && p_options[SNAME("blender/meshes/uvs")]) {
 		parameters_arg += "export_texcoords=True,";
 	} else {
@@ -244,6 +255,7 @@ void EditorSceneFormatImporterBlend::get_import_options(const String &p_path, Li
 	ADD_OPTION_ENUM("blender/meshes/skins", "None,4 Influences (Compatible),All Influences", BLEND_BONE_INFLUENCES_ALL);
 	ADD_OPTION_BOOL("blender/meshes/export_bones_deforming_mesh_only", false);
 	ADD_OPTION_BOOL("blender/materials/unpack_enabled", true);
+	ADD_OPTION_ENUM("blender/materials/export_materials", "Placeholder,Export", BLEND_MATERIAL_EXPORT_EXPORT);
 	ADD_OPTION_BOOL("blender/animation/limit_playback", true);
 	ADD_OPTION_BOOL("blender/animation/always_sample", true);
 	ADD_OPTION_BOOL("blender/animation/group_tracks", true);

+ 4 - 0
modules/gltf/editor/editor_scene_importer_blend.h

@@ -52,6 +52,10 @@ public:
 		BLEND_BONE_INFLUENCES_COMPATIBLE,
 		BLEND_BONE_INFLUENCES_ALL
 	};
+	enum {
+		BLEND_MATERIAL_EXPORT_PLACEHOLDER,
+		BLEND_MATERIAL_EXPORT_EXPORT
+	};
 	enum {
 		BLEND_MODIFIERS_NONE,
 		BLEND_MODIFIERS_ALL