2026-02-16
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
bl_info = {
|
||||
"name": "BlenderKit Online Asset Library",
|
||||
"author": "Vilem Duha, Petr Dlouhy, A. Gajdosik",
|
||||
"version": (3, 18, 0, 251121), # X.Y.Z.yymmdd
|
||||
"version": (3, 18, 1, 251219), # X.Y.Z.yymmdd
|
||||
"blender": (3, 0, 0),
|
||||
"location": "View3D > Properties > BlenderKit",
|
||||
"description": "Boost your workflow with drag&drop assets from the community driven library.",
|
||||
@@ -28,7 +28,7 @@ bl_info = {
|
||||
"tracker_url": "https://github.com/BlenderKit/blenderkit/issues",
|
||||
"category": "3D View",
|
||||
}
|
||||
VERSION = (3, 18, 0, 251121)
|
||||
VERSION = (3, 18, 1, 251219)
|
||||
|
||||
import logging
|
||||
import random
|
||||
@@ -242,7 +242,7 @@ engines = (
|
||||
("CYCLES", "Cycles", "Blender Cycles"),
|
||||
("EEVEE", "Eevee", "Blender eevee renderer"),
|
||||
("EEEVE_NEXT", "Eevee Next", "Blender eevee renderer (new)"),
|
||||
("OCTANE", "Octane", "Octane render enginge"),
|
||||
("OCTANE", "Octane", "Octane render engine"),
|
||||
("ARNOLD", "Arnold", "Arnold render engine"),
|
||||
("V-RAY", "V-Ray", "V-Ray renderer"),
|
||||
("UNREAL", "Unreal", "Unreal engine"),
|
||||
@@ -267,6 +267,12 @@ mesh_poly_types = (
|
||||
)
|
||||
|
||||
|
||||
EXTRA_PATH_OPTIONS = {}
|
||||
|
||||
if bpy.app.version >= (4, 5, 0):
|
||||
EXTRA_PATH_OPTIONS = {"options": {"PATH_SUPPORTS_BLEND_RELATIVE"}}
|
||||
|
||||
|
||||
def udate_down_up(self, context):
|
||||
"""Perform a search if results are empty."""
|
||||
props = bpy.context.window_manager.blenderkitUI
|
||||
@@ -461,12 +467,12 @@ class BlenderKitUIProps(PropertyGroup):
|
||||
search_blender_version: BoolProperty(
|
||||
name="Asset Blender Version",
|
||||
description="Limit the assets by version of Blender (minimum, maximum) in which they were created. "
|
||||
+ "Use maximum version limit to exclude incompatible assets from newer Blender versions than yours. Or set the minumum version to exclude assets created in quite old Blender versions",
|
||||
+ "Use maximum version limit to exclude incompatible assets from newer Blender versions than yours. Or set the minimum version to exclude assets created in quite old Blender versions",
|
||||
)
|
||||
search_blender_version_min: StringProperty(
|
||||
name="Minimal version (including, higher than or equal)",
|
||||
default="0.0",
|
||||
description="Limit the assets by minimum version of Blender in which they were created, including also the specified version and exluding all older versions from the search results. "
|
||||
description="Limit the assets by minimum version of Blender in which they were created, including also the specified version and excluding all older versions from the search results. "
|
||||
+ "Only assets created in HIGHER THAN OR EQUAL (>= min) minimum version will be shown. Use semantic versioning format: X.Y.Z.\n\n"
|
||||
+ "E.g.: exclude all Blender 2 assets by specifying 3, 3.0, or 3.0.0. Assets created in 3.0 or higher will be shown",
|
||||
update=search.search_update,
|
||||
@@ -474,7 +480,7 @@ class BlenderKitUIProps(PropertyGroup):
|
||||
search_blender_version_max: StringProperty(
|
||||
name="Maximum version (excluding, lower than)",
|
||||
default="5.99",
|
||||
description="Limit the assets by maximum version of Blender in which they were created, exluding the specified version and all newer versions from the search results. "
|
||||
description="Limit the assets by maximum version of Blender in which they were created, excluding the specified version and all newer versions from the search results. "
|
||||
+ "Only assets created in LOWER THAN (< max) maximum version will be shown. Use semantic versioning format: X.Y.Z.\n\n"
|
||||
+ "E.g.: exclude all Blender 4 assets by specifying 4, 4.0, or 4.0.0. Assets created in 3.6 and lower will be shown",
|
||||
update=search.search_update,
|
||||
@@ -580,7 +586,7 @@ class BlenderKitUIProps(PropertyGroup):
|
||||
|
||||
rating_ui_width: IntProperty(name="Rating UI Width", default=rating_ui_scale * 600)
|
||||
rating_ui_height: IntProperty(
|
||||
name="Rating UI Heightt", default=rating_ui_scale * 256
|
||||
name="Rating UI Height", default=rating_ui_scale * 256
|
||||
)
|
||||
|
||||
quality_stars_x: IntProperty(name="Rating UI Stars X", default=rating_ui_scale * 90)
|
||||
@@ -1130,6 +1136,7 @@ class BlenderKitMaterialUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
subtype="FILE_PATH",
|
||||
default="",
|
||||
update=autothumb.update_upload_material_preview,
|
||||
**EXTRA_PATH_OPTIONS,
|
||||
)
|
||||
|
||||
is_generating_thumbnail: BoolProperty(
|
||||
@@ -1213,13 +1220,14 @@ class BlenderKitBrushUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
)
|
||||
|
||||
|
||||
class BlenderKitNodeGroulUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
class BlenderKitNodeGroupUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
thumbnail: StringProperty(
|
||||
name="Thumbnail",
|
||||
description="Thumbnail path - minimum 1024x1024 square .jpg\n"
|
||||
"And make it beautiful!",
|
||||
subtype="FILE_PATH",
|
||||
default="",
|
||||
**EXTRA_PATH_OPTIONS,
|
||||
# update=autothumb.update_upload_model_preview,
|
||||
)
|
||||
# mode: EnumProperty(
|
||||
@@ -1326,6 +1334,7 @@ class BlenderKitModelUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
subtype="FILE_PATH",
|
||||
default="",
|
||||
update=autothumb.update_upload_model_preview,
|
||||
**EXTRA_PATH_OPTIONS,
|
||||
)
|
||||
|
||||
thumbnail_background_lightness: FloatProperty(
|
||||
@@ -1529,6 +1538,7 @@ class BlenderKitModelUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
description="Photo of the 3D printed object (JPG or PNG, preferred size is 1024x1024 or higher)",
|
||||
subtype="FILE_PATH",
|
||||
default="",
|
||||
**EXTRA_PATH_OPTIONS,
|
||||
)
|
||||
photo_thumbnail_will_upload_on_website: BoolProperty(
|
||||
name="I will upload photo on website",
|
||||
@@ -1603,6 +1613,7 @@ class BlenderKitSceneUploadProps(PropertyGroup, BlenderKitCommonUploadProps):
|
||||
subtype="FILE_PATH",
|
||||
default="",
|
||||
update=autothumb.update_upload_scene_preview,
|
||||
**EXTRA_PATH_OPTIONS,
|
||||
)
|
||||
|
||||
use_design_year: BoolProperty(
|
||||
@@ -1766,7 +1777,7 @@ class BlenderKitModelSearchProps(PropertyGroup, BlenderKitCommonSearchProps):
|
||||
update=search.search_update,
|
||||
)
|
||||
search_design_year: BoolProperty(
|
||||
name="Sesigned in Year",
|
||||
name="Designed in Year",
|
||||
description="When the object was approximately designed. \n"
|
||||
"Useful for search of historical or future objects",
|
||||
default=False,
|
||||
@@ -1966,7 +1977,7 @@ def fix_subdir(self, context):
|
||||
|
||||
ui_panels.ui_message(
|
||||
title="Fixed to relative path",
|
||||
message="This path should be always realative.\n"
|
||||
message="This path should be always relative.\n"
|
||||
" It's a directory BlenderKit creates where your .blend is \n "
|
||||
"and uses it for storing assets.",
|
||||
)
|
||||
@@ -1992,7 +2003,7 @@ class BlenderKitAddonPreferences(AddonPreferences):
|
||||
|
||||
preferences_lock: BoolProperty(
|
||||
name="Preferences Locked",
|
||||
description="When this is on, preferences will not be saved. Used for programatical changes of preferences",
|
||||
description="When this is on, preferences will not be saved. Used for programmatic changes of preferences",
|
||||
default=False,
|
||||
)
|
||||
|
||||
@@ -2120,6 +2131,14 @@ class BlenderKitAddonPreferences(AddonPreferences):
|
||||
update=utils.save_prefs,
|
||||
)
|
||||
|
||||
# USE OF CLIPBOARD SCAN
|
||||
use_clipboard_scan: BoolProperty(
|
||||
name="Use Clipboard Scan",
|
||||
description="Use the info from BlenderKit website clipboard for visual search",
|
||||
default=True,
|
||||
update=utils.save_prefs,
|
||||
)
|
||||
|
||||
unpack_files: BoolProperty(
|
||||
name="Unpack Files",
|
||||
description="Unpack assets after download \n "
|
||||
@@ -2233,8 +2252,8 @@ class BlenderKitAddonPreferences(AddonPreferences):
|
||||
|
||||
proxy_address: StringProperty(
|
||||
name="Custom proxy address",
|
||||
description="""Set custom HTTP proxy for HTTPS requests of add-on. This setting preceeds any system wide proxy settings. If left empty custom proxy will not be set.
|
||||
|
||||
description="""Set custom HTTP proxy for HTTPS requests of add-on. This setting precedes any system wide proxy settings. If left empty custom proxy will not be set.
|
||||
|
||||
If you use simple HTTP proxy, set in format http://ip:port, or http://username:password@ip:port if your HTTP proxy requires authentication (make sure to escape special characters like #$%:^&*() etc. in username and password). You have to specify the address with http:// prefix.
|
||||
|
||||
HTTPS proxies are not supported! We wait for support in Python 3.11 and in aiohttp module. You can specify the HTTPS proxy with https:// prefix for hacking around and development purposes, but functionality cannot be guaranteed.
|
||||
@@ -2430,12 +2449,21 @@ In this case you should also set path to your system CA bundle containing proxy'
|
||||
default="[]",
|
||||
)
|
||||
|
||||
# EXPERIMENTAL AND DEBUG FEATURES CAN GO BELOW
|
||||
ignore_env_for_thumbnails: BoolProperty(
|
||||
name="Ignore ENVIRONMENT variables for thumbnails",
|
||||
description="If enabled, we will not modify the system environment variables for background thumbnail rendering.",
|
||||
default=False,
|
||||
# do not save prefs here, it's experimental
|
||||
options={"SKIP_SAVE"},
|
||||
)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
if self.api_key.strip() == "":
|
||||
ui_panels.draw_login_buttons(layout)
|
||||
layout.label(
|
||||
text="Sign up to bookmark your favourite assets. Get 200 MiB of private storage in Free Plan."
|
||||
text="Sign up to bookmark your favorite assets. Get 200 MiB of private storage in Free Plan."
|
||||
)
|
||||
else:
|
||||
layout.operator("wm.blenderkit_logout", text="Logout", icon="URL")
|
||||
@@ -2470,8 +2498,9 @@ In this case you should also set path to your system CA bundle containing proxy'
|
||||
gui_settings.prop(self, "show_VIEW3D_MT_blenderkit_model_properties")
|
||||
gui_settings.prop(self, "tips_on_start")
|
||||
gui_settings.prop(self, "announcements_on_start")
|
||||
gui_settings.prop(self, "use_clipboard_scan")
|
||||
|
||||
# NETWORKING SETINGS
|
||||
# NETWORKING SETTINGS
|
||||
network_settings = layout.box()
|
||||
network_settings.alignment = "EXPAND"
|
||||
network_settings.label(text="Networking settings")
|
||||
@@ -2487,6 +2516,14 @@ In this case you should also set path to your system CA bundle containing proxy'
|
||||
# UPDATER SETTINGS
|
||||
addon_updater_ops.update_settings_ui(self, context)
|
||||
|
||||
# EXPERIMENTAL SETTINGS
|
||||
# only if experimental features enabled
|
||||
if self.experimental_features:
|
||||
experimental_settings = layout.box()
|
||||
experimental_settings.alignment = "EXPAND"
|
||||
experimental_settings.label(text="Experimental settings")
|
||||
experimental_settings.prop(self, "ignore_env_for_thumbnails")
|
||||
|
||||
# RUNTIME INFO
|
||||
globdir_op = layout.operator(
|
||||
"wm.blenderkit_open_global_directory",
|
||||
@@ -2535,7 +2572,7 @@ classes = (
|
||||
BlenderKitBrushSearchProps,
|
||||
BlenderKitBrushUploadProps,
|
||||
BlenderKitGeoToolSearchProps,
|
||||
BlenderKitNodeGroulUploadProps,
|
||||
BlenderKitNodeGroupUploadProps,
|
||||
BlenderKitAddonSearchProps,
|
||||
)
|
||||
|
||||
@@ -2598,10 +2635,10 @@ def register():
|
||||
type=BlenderKitGeoToolSearchProps
|
||||
)
|
||||
bpy.types.NodeGroup.blenderkit = PointerProperty( # for uploads, not now...
|
||||
type=BlenderKitNodeGroulUploadProps
|
||||
type=BlenderKitNodeGroupUploadProps
|
||||
)
|
||||
bpy.types.NodeTree.blenderkit = PointerProperty( # for uploads, not now...
|
||||
type=BlenderKitNodeGroulUploadProps
|
||||
type=BlenderKitNodeGroupUploadProps
|
||||
)
|
||||
bpy.types.WindowManager.blenderkit_addon = PointerProperty(
|
||||
type=BlenderKitAddonSearchProps
|
||||
|
||||
Reference in New Issue
Block a user