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:
@@ -1,38 +1,29 @@
|
||||
"""Evaluate complete-image projection and rectangular surface topology."""
|
||||
from tests.support.paths import PROJECT_ROOT
|
||||
|
||||
import bpy
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
ROOT = PROJECT_ROOT
|
||||
from tools.nodes.groups.image_plane import build_image_plane_group
|
||||
from tools.nodes.groups.image_depth_plane import build_image_depth_plane_group
|
||||
from tools.nodes.groups.image_relief_plane import build_image_relief_plane_group
|
||||
|
||||
|
||||
@pytest.fixture(params=("definition", "asset"))
|
||||
def surface(request):
|
||||
return create_surface(request.param, "DEPTH")
|
||||
@pytest.fixture
|
||||
def surface():
|
||||
return create_surface("DEPTH")
|
||||
|
||||
|
||||
@pytest.fixture(params=("definition", "asset"))
|
||||
def relief(request):
|
||||
return create_surface(request.param, "RELIEF")
|
||||
@pytest.fixture
|
||||
def relief():
|
||||
return create_surface("RELIEF")
|
||||
|
||||
|
||||
def create_surface(source, plane_type):
|
||||
def create_surface(plane_type):
|
||||
bpy.ops.wm.read_factory_settings(use_empty=True)
|
||||
group_name = f"O Image {plane_type.title()} Plane"
|
||||
if source == "asset":
|
||||
with bpy.data.libraries.load(str(ROOT / "src/anyimage/assets/O_AnyImage.blend")) as (library, target):
|
||||
target.node_groups = [group_name]
|
||||
group = target.node_groups[0]
|
||||
plane = group.nodes["Group"].node_tree
|
||||
else:
|
||||
plane = build_image_plane_group()
|
||||
builder = build_image_depth_plane_group if plane_type == "DEPTH" else build_image_relief_plane_group
|
||||
group = builder(plane)
|
||||
plane = build_image_plane_group()
|
||||
builder = build_image_depth_plane_group if plane_type == "DEPTH" else build_image_relief_plane_group
|
||||
group = builder(plane)
|
||||
mesh = bpy.data.meshes.new("Rectangle")
|
||||
mesh.from_pydata([(-2, -1, 0), (2, -1, 0), (2, 1, 0), (-2, 1, 0)], [], [(0, 1, 2, 3)])
|
||||
material = bpy.data.materials.new("Image")
|
||||
@@ -65,8 +56,8 @@ def create_surface(source, plane_type):
|
||||
set_value(name, value)
|
||||
if "Boundary Smooth" in inputs:
|
||||
set_value("Boundary Smooth", 0)
|
||||
if "Split Threshold" in inputs:
|
||||
set_value("Split Threshold", 0.0)
|
||||
if "Depth Split" in inputs:
|
||||
set_value("Depth Split", 0.0)
|
||||
return obj, set_value, plane, inputs, image
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user