- 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.
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
from unittest.mock import patch
|
|
import numpy as np
|
|
|
|
|
|
from anyimage.server.models import moge as moge2_model
|
|
|
|
|
|
def test_moge_infer_returns_geometry_frame_with_model_validity():
|
|
mask = np.asarray(((1.0, 0.2), (0.7, 0.0)), dtype=np.float32)
|
|
prediction = {
|
|
"depth": np.ones((2, 2), dtype=np.float32),
|
|
"normal": np.zeros((2, 2, 3), dtype=np.float32),
|
|
"mask": mask,
|
|
"intrinsics": np.asarray(
|
|
((1.0, 0.0, 0.5), (0.0, 1.0, 0.5), (0.0, 0.0, 1.0)),
|
|
dtype=np.float32,
|
|
),
|
|
"points": np.ones((2, 2, 3), dtype=np.float32),
|
|
}
|
|
|
|
with patch.object(moge2_model, "infer_one", return_value=prediction):
|
|
frame = moge2_model.infer(None, {}, "image", include_points=True)
|
|
|
|
assert np.array_equal(frame.validity, mask.astype(np.float32))
|
|
assert np.array_equal(frame.normal, prediction["normal"])
|
|
assert np.array_equal(frame.points, prediction["points"])
|
|
assert np.array_equal(
|
|
frame.intrinsics,
|
|
np.asarray(((2.0, 0.0, 1.0), (0.0, 2.0, 1.0), (0.0, 0.0, 1.0))),
|
|
)
|
|
|
|
|
|
def test_moge_z_depth_frame_does_not_require_points():
|
|
prediction = {
|
|
"depth": np.ones((2, 2), dtype=np.float32),
|
|
"normal": np.zeros((2, 2, 3), dtype=np.float32),
|
|
"mask": np.ones((2, 2), dtype=bool),
|
|
"intrinsics": np.eye(3, dtype=np.float32),
|
|
"points": np.ones((2, 2, 3), dtype=np.float32),
|
|
}
|
|
|
|
with patch.object(moge2_model, "infer_one", return_value=prediction):
|
|
frame = moge2_model.infer(None, {}, "image", include_points=False)
|
|
|
|
assert frame.points is None
|
|
assert frame.validity.all()
|