feat: Enhance AI integration for Cutout, Image Box, and Image Lasso tools with unified settings and improved shape selection
This commit is contained in:
@@ -4,11 +4,19 @@ from ...preferences import (
|
||||
MAX_CUTOUT_MESH_RESOLUTION,
|
||||
MIN_CUTOUT_MESH_RESOLUTION,
|
||||
)
|
||||
from ...properties import ai_ready
|
||||
from ...common.image_data import image_rgba
|
||||
from ...common.image_region import rasterize_region_path
|
||||
from .geometry import CUTOUT_ALPHA_THRESHOLD
|
||||
from .shape import CUTOUT_SHAPE_LABELS
|
||||
|
||||
CUTOUT_SHAPE_BUTTONS = (
|
||||
("SURFACE", "MESH_GRID"),
|
||||
("BALLOON", "MESH_UVSPHERE"),
|
||||
("DEPTH_BALLOON", "META_BALL"),
|
||||
("DEPTH_SURFACE", "SURFACE_NCURVE"),
|
||||
)
|
||||
|
||||
|
||||
def validate_cutout_region(
|
||||
source_object,
|
||||
@@ -69,55 +77,28 @@ def open_shape_pie(
|
||||
region_path_json = region_path.to_json()
|
||||
settings = context.scene.anyimage_settings
|
||||
point_spacing = settings.cutout_point_spacing
|
||||
generate_normal = bool(getattr(settings, "cutout_generate_normal", False))
|
||||
ready = ai_ready()
|
||||
refine_region = ready and refine_region
|
||||
generate_normal = ready and bool(
|
||||
getattr(settings, "cutout_generate_normal", False)
|
||||
)
|
||||
mesh_resolution = cutout_mesh_resolution(source_object.data.size, point_spacing)
|
||||
|
||||
def draw(menu, _context):
|
||||
pie = menu.layout.menu_pie()
|
||||
_pie_button(
|
||||
pie,
|
||||
"SURFACE",
|
||||
CUTOUT_SHAPE_LABELS["SURFACE"],
|
||||
"MESH_GRID",
|
||||
source_name,
|
||||
region_path_json,
|
||||
refine_region,
|
||||
generate_normal,
|
||||
mesh_resolution,
|
||||
)
|
||||
_pie_button(
|
||||
pie,
|
||||
"BALLOON",
|
||||
CUTOUT_SHAPE_LABELS["BALLOON"],
|
||||
"MESH_UVSPHERE",
|
||||
source_name,
|
||||
region_path_json,
|
||||
refine_region,
|
||||
generate_normal,
|
||||
mesh_resolution,
|
||||
)
|
||||
_pie_button(
|
||||
pie,
|
||||
"DEPTH_BALLOON",
|
||||
CUTOUT_SHAPE_LABELS["DEPTH_BALLOON"],
|
||||
"META_BALL",
|
||||
source_name,
|
||||
region_path_json,
|
||||
refine_region,
|
||||
generate_normal,
|
||||
mesh_resolution,
|
||||
)
|
||||
_pie_button(
|
||||
pie,
|
||||
"DEPTH_SURFACE",
|
||||
CUTOUT_SHAPE_LABELS["DEPTH_SURFACE"],
|
||||
"SURFACE_NCURVE",
|
||||
source_name,
|
||||
region_path_json,
|
||||
refine_region,
|
||||
generate_normal,
|
||||
mesh_resolution,
|
||||
)
|
||||
buttons = CUTOUT_SHAPE_BUTTONS if ready else CUTOUT_SHAPE_BUTTONS[:2]
|
||||
for shape, icon in buttons:
|
||||
_pie_button(
|
||||
pie,
|
||||
shape,
|
||||
CUTOUT_SHAPE_LABELS[shape],
|
||||
icon,
|
||||
source_name,
|
||||
region_path_json,
|
||||
refine_region,
|
||||
generate_normal,
|
||||
mesh_resolution,
|
||||
)
|
||||
|
||||
context.window_manager.popup_menu_pie(
|
||||
event,
|
||||
|
||||
Reference in New Issue
Block a user