Add new functionality for image rectification and depth metadata handling
- Implemented a preview tool for rectifying images with interactive aspect controls in `preview.py`. - Added tests for depth metadata loading to ensure consistent schema usage in `test_depth_metadata.py`. - Developed comprehensive tests for cutout calibration processes in `test_cutout_calibration.py`, including stability checks and depth calibration. - Created tests for frame compositing operations in `test_frame_compositing.py`, ensuring correct handling of depth and transparency. - Introduced material slot inheritance functionality in `material_slots.py` to manage geometry material assignments. - Built shared shader nodes for material processing in `shader.py`, including roughness and bump mapping setups.
This commit is contained in:
@@ -140,6 +140,18 @@ def upscale_model_label(model_key):
|
||||
return model.label if model is not None else model_key
|
||||
|
||||
|
||||
def cutout_gesture_property():
|
||||
return bpy.props.EnumProperty(
|
||||
name="Gesture",
|
||||
description="Shape used to select the Cutout area",
|
||||
items=(
|
||||
("LASSO", "Lasso", "Draw a closed freehand area"),
|
||||
("POLYLINE", "Polyline", "Click points to define a closed area"),
|
||||
),
|
||||
default="LASSO",
|
||||
)
|
||||
|
||||
|
||||
def mask_gesture_property():
|
||||
return bpy.props.EnumProperty(
|
||||
name="Gesture",
|
||||
@@ -156,19 +168,31 @@ def mask_gesture_property():
|
||||
def mask_mode_property():
|
||||
return bpy.props.EnumProperty(
|
||||
name="Mode",
|
||||
description="How the gesture changes image Alpha",
|
||||
description="Choose how the selected or painted area changes image visibility.",
|
||||
items=(
|
||||
("SET", "Set", "Keep current Alpha inside the gesture", "SELECT_SET", 0),
|
||||
("ADD", "Add", "Extend Alpha with the gesture", "SELECT_EXTEND", 1),
|
||||
(
|
||||
"SET",
|
||||
"Set",
|
||||
"Keep visible content inside the selected or painted area and hide everything outside.",
|
||||
"SELECT_SET",
|
||||
0,
|
||||
),
|
||||
(
|
||||
"EXTEND",
|
||||
"Extend",
|
||||
"Reveal the selected or painted area while keeping other areas unchanged.",
|
||||
"SELECT_EXTEND",
|
||||
1,
|
||||
),
|
||||
(
|
||||
"SUBTRACT",
|
||||
"Subtract",
|
||||
"Remove Alpha inside the gesture",
|
||||
"Hide the selected or painted area while keeping other areas unchanged.",
|
||||
"SELECT_SUBTRACT",
|
||||
2,
|
||||
),
|
||||
),
|
||||
default="SUBTRACT",
|
||||
default="SET",
|
||||
)
|
||||
|
||||
|
||||
@@ -183,24 +207,12 @@ def mask_radius_property():
|
||||
)
|
||||
|
||||
|
||||
def cutout_inward_axis_property():
|
||||
return bpy.props.EnumProperty(
|
||||
name="Inward Axis",
|
||||
description="Local axis pointing inward from the image sheet",
|
||||
items=(
|
||||
("NEGATIVE_Z", "-Z", "Match the source Image Empty local axes"),
|
||||
("POSITIVE_X", "+X", "Use the original Cutout local axes"),
|
||||
),
|
||||
default="NEGATIVE_Z",
|
||||
)
|
||||
|
||||
|
||||
def cutout_generate_normal_property():
|
||||
return bpy.props.BoolProperty(
|
||||
name="Normal Map",
|
||||
description=(
|
||||
"Generate a normal map for Flat and Solid; "
|
||||
"Depth Solid and Depth Balloon always generate normal maps"
|
||||
"Generate a normal map to add surface detail under lighting for Flat and Solid shapes. "
|
||||
"Depth Solid and Depth Balloon always generate normal maps."
|
||||
),
|
||||
default=False,
|
||||
)
|
||||
@@ -209,7 +221,10 @@ def cutout_generate_normal_property():
|
||||
def cutout_alpha_threshold_property():
|
||||
return bpy.props.FloatProperty(
|
||||
name="Alpha Threshold",
|
||||
description="Minimum Alpha kept in the Cutout outline",
|
||||
description=(
|
||||
"Exclude areas below this opacity from the Cutout outline. "
|
||||
"Higher values exclude more semi-transparent edges."
|
||||
),
|
||||
default=0.9,
|
||||
min=0.0,
|
||||
max=1.0,
|
||||
@@ -230,7 +245,7 @@ def cutout_fine_outline_property():
|
||||
def cutout_mesh_detail_property():
|
||||
return bpy.props.EnumProperty(
|
||||
name="Mesh Detail",
|
||||
description="Mesh sampling density",
|
||||
description="Control mesh density. Higher levels use more vertices to represent finer shapes.",
|
||||
items=(
|
||||
("LOW", "Low", "32 source image pixels between neighboring mesh points"),
|
||||
("MEDIUM", "Medium", "16 source image pixels between neighboring mesh points"),
|
||||
@@ -242,18 +257,11 @@ def cutout_mesh_detail_property():
|
||||
|
||||
|
||||
class AnyImageSettings(bpy.types.PropertyGroup):
|
||||
cutout_gesture: cutout_gesture_property()
|
||||
cutout_alpha_threshold: cutout_alpha_threshold_property()
|
||||
cutout_mesh_detail: cutout_mesh_detail_property()
|
||||
cutout_fine_outline: cutout_fine_outline_property()
|
||||
cutout_generate_normal: cutout_generate_normal_property()
|
||||
cutout_inward_axis: cutout_inward_axis_property()
|
||||
mask_gesture: mask_gesture_property()
|
||||
mask_mode: mask_mode_property()
|
||||
mask_radius: mask_radius_property()
|
||||
video_frames: bpy.props.IntProperty(
|
||||
name="Extract Frames",
|
||||
description="Maximum number of consecutive frames extracted from the start of a video or frame sequence",
|
||||
default=16,
|
||||
min=1,
|
||||
soft_max=64,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user