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:
2026-09-12 19:20:06 +08:00
parent e8268504c2
commit 938d95db0f
175 changed files with 3812 additions and 6864 deletions

View File

@@ -104,19 +104,19 @@ class ExtensionPackagingTest(unittest.TestCase):
"operators/convert_to_panorama/__init__.py",
"operators/convert_to_panorama/operators.py",
"operators/convert_to_panorama/object.py",
"operators/frame_tool.py",
"operators/frame_tool/__init__.py",
"operators/frame_tool/operators.py",
"operators/frame_tool/projection.py",
"operators/frame_tool/compositing.py",
"operators/mask_tool.py",
"operators/rectify_tool.py",
"operators/rectify_tool/__init__.py",
"operators/rectify_tool/operators.py",
"operators/rectify_tool/geometry.py",
"operators/rectify_tool/preview.py",
"operators/ai_setup.py",
"operators/remove_background.py",
):
self.assertIn(path, names)
self.assertNotIn("operators/convert_to_plane/nodes.py", names)
self.assertNotIn("operators/cutout/__init__.py", names)
self.assertNotIn("operators/image_mesh/__init__.py", names)
self.assertNotIn("operators/mesh/__init__.py", names)
self.assertNotIn("operators/image_edit/__init__.py", names)
self.assertNotIn("operators/background.py", names)
self.assertIn(
"assets/O_AnyImage.blend",
names,
@@ -132,26 +132,12 @@ class ExtensionPackagingTest(unittest.TestCase):
self.assertIn("server/geometry/depth_texture.py", names)
self.assertIn("server/geometry/prediction_artifacts.py", names)
self.assertIn("server/geometry/normal_texture.py", names)
self.assertNotIn(
"server/geometry/generate_geometry_and_normal.py", names
)
self.assertNotIn("common/image_selection.py", names)
self.assertNotIn("server/selection/cutout_images.py", names)
self.assertNotIn("server/selection/polygon_mask.py", names)
self.assertNotIn("server/jobs/prepare_geometry_data.py", names)
self.assertNotIn("server/geometry/cutout.py", names)
self.assertIn("server/models/background.py", names)
self.assertNotIn("server/models/da3.py", names)
self.assertIn("server/models/moge.py", names)
self.assertNotIn("server/jobs/debug_predictions.py", names)
self.assertNotIn("operators/debug.py", names)
self.assertFalse(any(name.startswith("server/outputs/") for name in names))
self.assertIn("server/model_catalog.py", names)
self.assertIn("server/model_download.py", names)
self.assertIn("server/models/onnx_ben2.py", names)
self.assertIn("server/models/onnx_birefnet.py", names)
self.assertNotIn("server/models/onnx_pisa_sr.py", names)
self.assertNotIn("server/models/onnx_da3.py", names)
self.assertIn("server/models/onnx_moge2.py", names)
self.assertIn("server/models/onnx_moge3.py", names)
self.assertIn("server/models/onnx_upscale.py", names)
@@ -163,10 +149,7 @@ class ExtensionPackagingTest(unittest.TestCase):
"wheels/blendjob-0.1.17-py3-none-any.whl",
names,
)
self.assertFalse(any(name.startswith("blendjob/") for name in names))
self.assertNotIn("anyimage/__init__.py", names)
self.assertFalse(any(name.startswith("sources/") for name in names))
self.assertFalse(any(name.startswith("vendor/") for name in names))
self.assertIn(f'platforms = ["{platform}"]', manifest)
self.assertNotIn(
"windows-x64" if platform != "windows-x64" else "macos-arm64",