# ##### BEGIN GPL LICENSE BLOCK ##### # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ##### END GPL LICENSE BLOCK ##### import json import logging import os import sys import time import bpy from . import paths, utils bk_logger = logging.getLogger(__name__) resolutions = { "resolution_0_5K": 512, "resolution_1K": 1024, "resolution_2K": 2048, "resolution_4K": 4096, "resolution_8K": 8192, } rkeys = list(resolutions.keys()) resolution_props_to_server = { "512": "resolution_0_5K", "1024": "resolution_1K", "2048": "resolution_2K", "4096": "resolution_4K", "8192": "resolution_8K", "ORIGINAL": "blend", } def get_current_resolution(): actres = 0 for i in bpy.data.images: if i.name != "Render Result": actres = max(actres, i.size[0], i.size[1]) return actres def regenerate_thumbnail_material(data): # this should re-generate material thumbnail and re-upload it. # first let's skip procedural assets base_fpath = bpy.data.filepath blend_file_name = os.path.basename(base_fpath) bpy.ops.mesh.primitive_cube_add() aob = bpy.context.active_object bpy.ops.object.material_slot_add() aob.material_slots[0].material = bpy.data.materials[0] props = aob.active_material.blenderkit props.thumbnail_generator_type = "BALL" props.thumbnail_background = False props.thumbnail_resolution = "256" # layout.prop(props, 'thumbnail_generator_type') # layout.prop(props, 'thumbnail_scale') # layout.prop(props, 'thumbnail_background') # if props.thumbnail_background: # layout.prop(props, 'thumbnail_background_lightness') # layout.prop(props, 'thumbnail_resolution') # layout.prop(props, 'thumbnail_samples') # layout.prop(props, 'thumbnail_denoising') # layout.prop(props, 'adaptive_subdivision') # preferences = bpy.context.preferences.addons['blenderkit'].preferences # layout.prop(preferences, "thumbnail_use_gpu") # TODO: here it should call start_material_thumbnailer , but with the wait property on, so it can upload afterwards. bpy.ops.object.blenderkit_generate_material_thumbnail() time.sleep(130) # save # this does the actual job return