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

@@ -9,8 +9,8 @@ class ModifierInputsTest(unittest.TestCase):
def test_runtime_modifier_enum_input_uses_string_identifier(self):
enum_items = (
SimpleNamespace(identifier="SURFACE"),
SimpleNamespace(identifier="BALLOON"),
SimpleNamespace(identifier="Balloon"),
SimpleNamespace(identifier="Shell"),
)
value_property = SimpleNamespace(type="ENUM", enum_items=enum_items)
input_slot = SimpleNamespace(
@@ -19,13 +19,13 @@ class ModifierInputsTest(unittest.TestCase):
)
modifier = SimpleNamespace(
properties=SimpleNamespace(
inputs=SimpleNamespace(Shape=input_slot),
inputs=SimpleNamespace(Mode=input_slot),
)
)
self.modules.object.set_modifier_input(modifier, "Shape", 1)
self.modules.object.set_modifier_input(modifier, "Mode", 1)
self.assertEqual(input_slot.value, "BALLOON")
self.assertEqual(input_slot.value, "Shell")
def test_modifier_inputs_support_rna_and_dictionary_values(self):
@@ -44,9 +44,9 @@ class ModifierInputsTest(unittest.TestCase):
self.assertEqual(input_slot.value, 2.0)
class LegacyModifier(dict):
class DictionaryModifier(dict):
properties = None
legacy_modifier = LegacyModifier()
self.modules.object.set_modifier_input(legacy_modifier, "Shape", 1)
self.assertEqual(legacy_modifier["Shape"], 1)
dictionary_modifier = DictionaryModifier()
self.modules.object.set_modifier_input(dictionary_modifier, "Mode", 1)
self.assertEqual(dictionary_modifier["Mode"], 1)