def gather_image(blender_shader_sockets_or_texture_slots: typing.Union[ typing.Tuple[bpy.types.NodeSocket], typing.Tuple[bpy.types.Texture]], export_settings): if not __filter_image(blender_shader_sockets_or_texture_slots, export_settings): return None uri = __gather_uri(blender_shader_sockets_or_texture_slots, export_settings) buffer_view = __gather_buffer_view(blender_shader_sockets_or_texture_slots, export_settings) if not (uri is not None or buffer_view is not None): # The blender image has no data return None mime_type = __gather_mime_type(uri.filepath if uri is not None else "") image = gltf2_io.Image( buffer_view=buffer_view, extensions=__gather_extensions(blender_shader_sockets_or_texture_slots, export_settings), extras=__gather_extras(blender_shader_sockets_or_texture_slots, export_settings), mime_type=mime_type, name=__gather_name(blender_shader_sockets_or_texture_slots, export_settings), uri=uri) return image
def __make_image(buffer_view, extensions, extras, mime_type, name, uri, export_settings): return gltf2_io.Image(buffer_view=buffer_view, extensions=extensions, extras=extras, mime_type=mime_type, name=name, uri=uri)
def gather_image( blender_shader_sockets_or_texture_slots: typing.Union[typing.Tuple[bpy.types.NodeSocket], typing.Tuple[bpy.types.Texture]], export_settings): if not __filter_image(blender_shader_sockets_or_texture_slots, export_settings): return None image = gltf2_io.Image( buffer_view=__gather_buffer_view(blender_shader_sockets_or_texture_slots, export_settings), extensions=__gather_extensions(blender_shader_sockets_or_texture_slots, export_settings), extras=__gather_extras(blender_shader_sockets_or_texture_slots, export_settings), mime_type=__gather_mime_type(blender_shader_sockets_or_texture_slots, export_settings), name=__gather_name(blender_shader_sockets_or_texture_slots, export_settings), uri=__gather_uri(blender_shader_sockets_or_texture_slots, export_settings) ) return image
def __gather_extensions(blender_material, export_settings): extensions = {} if bpy.app.version < (2, 80, 0): if blender_material.use_shadeless: extensions["KHR_materials_unlit"] = Extension( "KHR_materials_unlit", {}, False) else: if gltf2_blender_get.get_socket_or_texture_slot( blender_material, "Background") is not None: extensions["KHR_materials_unlit"] = Extension( "KHR_materials_unlit", {}, False) if blender_material.get("useVideoTextureExtension", False) == "True": image_name = blender_material.get( "videoTextureExtension_DiffuseImageName") if image_name is not None: image = bpy.data.images[image_name] if image is not None and image.source == "MOVIE": data = tmp_encode_movie(image) mime_type = __gather_mimetype(image) image_base_name, _extension = path.splitext(image_name) if mime_type is not None: # Create an image, either in a buffer view or in a separate file source = gltf2_io.Image(buffer_view=__gather_buffer_view( data, export_settings), extensions=None, extras=None, mime_type=mime_type, name=image_base_name, uri=__gather_uri( data, image_base_name, mime_type, export_settings)) # Create a texture to use the previous video image texture = gltf2_io.Texture(extensions=None, extras=None, name=None, sampler=None, source=source) extension = dict(diffuse=texture) extensions["SVRF_video_texture"] = Extension( "SVRF_video_texture", extension, False) # TODO specular glossiness extension return extensions if extensions else None