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:
@@ -7,7 +7,8 @@ from mathutils import Matrix
|
||||
from anyimage.common import image as image_data
|
||||
from anyimage.common.selection import SelectionMask
|
||||
from anyimage.operators import mask_tool as edit_mask
|
||||
from anyimage.operators import frame_tool as edit_frame
|
||||
from anyimage.operators.frame_tool import operators as edit_frame
|
||||
from anyimage.operators.frame_tool.compositing import composite_frame_pixels
|
||||
|
||||
|
||||
def test_image_edit_result_uses_complete_shared_source_name():
|
||||
@@ -58,7 +59,7 @@ def test_image_edit_result_recovers_unshared_source_name():
|
||||
assert bpy.data.images.get("Poster.png") == result_image
|
||||
|
||||
|
||||
def test_mask_frame_mask_add_preserves_packed_hidden_rgb():
|
||||
def test_mask_frame_mask_extend_preserves_packed_hidden_rgb():
|
||||
from io import BytesIO
|
||||
from PIL import Image
|
||||
|
||||
@@ -87,7 +88,7 @@ def test_mask_frame_mask_add_preserves_packed_hidden_rgb():
|
||||
)
|
||||
np.testing.assert_allclose(descriptor["rgba"][..., :3], expected[..., :3])
|
||||
np.testing.assert_array_equal(descriptor["pixels"], 0)
|
||||
framed = edit_frame.composite_frame_pixels(
|
||||
framed = composite_frame_pixels(
|
||||
(descriptor,), ((0, 4), (4, 4), (4, 0), (0, 0)), (4, 4)
|
||||
)
|
||||
result = image_data.create_image_edit_result(source.data, framed, (4, 4))
|
||||
@@ -100,7 +101,7 @@ def test_mask_frame_mask_add_preserves_packed_hidden_rgb():
|
||||
np.testing.assert_array_equal(packed[..., 3], 0)
|
||||
result.reload()
|
||||
assert result.alpha_mode == "STRAIGHT"
|
||||
operator.mode = "ADD"
|
||||
operator.mode = "EXTEND"
|
||||
assert edit_mask.EditImageAlpha._apply_mask(
|
||||
operator, SimpleNamespace(), source, selection
|
||||
) == {"FINISHED"}
|
||||
@@ -140,7 +141,7 @@ def test_frame_restored_alpha_keeps_foreground_blended_into_white():
|
||||
source_alpha = front["rgba"][..., 3:4]
|
||||
expected = front["rgba"][..., :3] * source_alpha + 1 - source_alpha
|
||||
# The image aspect makes its orthographic screen projection two thirds of a pixel high.
|
||||
pixels = edit_frame.composite_frame_pixels(
|
||||
pixels = composite_frame_pixels(
|
||||
sources, ((0, 4 / 3), (6, 4 / 3), (6, 2 / 3), (0, 2 / 3)), (6, 2)
|
||||
)
|
||||
result = image_data.create_image_edit_result(front["object"].data, pixels, (6, 2))
|
||||
@@ -149,7 +150,7 @@ def test_frame_restored_alpha_keeps_foreground_blended_into_white():
|
||||
np.testing.assert_allclose(encoded[..., :3], expected, atol=1 / 255)
|
||||
np.testing.assert_allclose(encoded[..., 3:4], source_alpha, atol=1 / 255)
|
||||
selection = SelectionMask(np.ones((2, 6), dtype=np.float32), (0, 0, 6, 2))
|
||||
operator = SimpleNamespace(mode="ADD", report=lambda *_args: None)
|
||||
operator = SimpleNamespace(mode="EXTEND", report=lambda *_args: None)
|
||||
assert edit_mask.EditImageAlpha._apply_mask(
|
||||
operator, SimpleNamespace(), front["object"], selection
|
||||
) == {"FINISHED"}
|
||||
|
||||
Reference in New Issue
Block a user