def gather_material_pbr_metallic_roughness(blender_material, orm_texture, export_settings): if not __filter_pbr_material(blender_material, export_settings): return None, None base_color_texture, use_active_uvmap_base_color_texture = __gather_base_color_texture(blender_material, export_settings) metallic_roughness_texture, use_active_uvmap_metallic_roughness_texture = __gather_metallic_roughness_texture(blender_material, orm_texture, export_settings) material = gltf2_io.MaterialPBRMetallicRoughness( base_color_factor=__gather_base_color_factor(blender_material, export_settings), base_color_texture=base_color_texture, extensions=__gather_extensions(blender_material, export_settings), extras=__gather_extras(blender_material, export_settings), metallic_factor=__gather_metallic_factor(blender_material, export_settings), metallic_roughness_texture=metallic_roughness_texture, roughness_factor=__gather_roughness_factor(blender_material, export_settings) ) # merge all use_active_uvmap infos uvmap_actives = [] if use_active_uvmap_base_color_texture is True: uvmap_actives.append("baseColorTexture") if use_active_uvmap_metallic_roughness_texture is True: uvmap_actives.append("metallicRoughnessTexture") export_user_extensions('gather_material_pbr_metallic_roughness_hook', export_settings, material, blender_material, orm_texture) return material, uvmap_actives
def __gather_material_unlit(blender_material, export_settings): gltf2_unlit = gltf2_blender_gather_materials_unlit info = gltf2_unlit.detect_shadeless_material(blender_material, export_settings) if info is None: return None 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), extensions={"KHR_materials_unlit": Extension("KHR_materials_unlit", {}, required=False)}, extras=__gather_extras(blender_material, export_settings), name=__gather_name(blender_material, export_settings), emissive_factor=None, emissive_texture=None, normal_texture=None, occlusion_texture=None, pbr_metallic_roughness=gltf2_io.MaterialPBRMetallicRoughness( base_color_factor=gltf2_unlit.gather_base_color_factor(info, export_settings), base_color_texture=gltf2_unlit.gather_base_color_texture(info, export_settings), metallic_factor=0.0, roughness_factor=0.9, metallic_roughness_texture=None, extensions=None, extras=None, ) ) export_user_extensions('gather_material_unlit_hook', export_settings, material, blender_material) return material
def get_default_pbr_for_emissive_node(): return gltf2_io.MaterialPBRMetallicRoughness( base_color_factor=[0.0, 0.0, 0.0, 1.0], base_color_texture=None, extensions=None, extras=None, metallic_factor=None, metallic_roughness_texture=None, roughness_factor=None)
def __gather_material_unlit(blender_material, active_uvmap_index, export_settings): gltf2_unlit = gltf2_blender_gather_materials_unlit info = gltf2_unlit.detect_shadeless_material(blender_material, export_settings) if info is None: return None base_color_texture, use_active_uvmap = gltf2_unlit.gather_base_color_texture( info, export_settings) base_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), extensions={ "KHR_materials_unlit": Extension("KHR_materials_unlit", {}, required=False) }, extras=__gather_extras(blender_material, export_settings), name=__gather_name(blender_material, export_settings), emissive_factor=None, emissive_texture=None, normal_texture=None, occlusion_texture=None, pbr_metallic_roughness=gltf2_io.MaterialPBRMetallicRoughness( base_color_factor=gltf2_unlit.gather_base_color_factor( info, export_settings), base_color_texture=base_color_texture, metallic_factor=0.0, roughness_factor=0.9, metallic_roughness_texture=None, extensions=None, extras=None, )) if use_active_uvmap is not None: # Because some part of material are shared (eg pbr_metallic_roughness), we must copy the material # Texture must be shared, but not TextureInfo material = deepcopy(base_material) __get_new_material_texture_shared(base_material, material) material.pbr_metallic_roughness.base_color_texture.tex_coord = active_uvmap_index elif use_active_uvmap is None and active_uvmap_index != -1: # If material is not using active UVMap, we need to return the same material, # Even if multiples meshes are using different active UVMap material = gather_material(blender_material, -1, export_settings) else: material = base_material export_user_extensions('gather_material_unlit_hook', export_settings, material, blender_material) return material
def gather_material_pbr_metallic_roughness(blender_material, orm_texture, export_settings): if not __filter_pbr_material(blender_material, export_settings): return None material = gltf2_io.MaterialPBRMetallicRoughness( base_color_factor=__gather_base_color_factor(blender_material, export_settings), base_color_texture=__gather_base_color_texture(blender_material, export_settings), extensions=__gather_extensions(blender_material, export_settings), extras=__gather_extras(blender_material, export_settings), metallic_factor=__gather_metallic_factor(blender_material, export_settings), metallic_roughness_texture=__gather_metallic_roughness_texture(blender_material, orm_texture, export_settings), roughness_factor=__gather_roughness_factor(blender_material, export_settings) ) return material