Add comprehensive tests for cutout and mesh functionalities
- Introduced `test_cutout.py` to validate cutout pie menu behavior, image lasso options, and mesh detail calculations. - Added `test_mesh.py` to ensure correct tangent normal rasterization, plane source topology, and depth surface evaluations. - Created `test_mesh_blender.py` to verify material node groups, tangent baking, and local cutout building from Blender images. - Implemented tests for handling alpha regions and ensuring geometry nodes maintain expected behavior.
This commit is contained in:
@@ -25,7 +25,7 @@ class ModelSessionCache:
|
||||
key = (str(Path(model_dir).resolve()), requested_device, "onnx")
|
||||
if self.ben2_model is not None and self.ben2_key == key:
|
||||
return self.ben2_model, 0.0
|
||||
self.close()
|
||||
self.release_ben2()
|
||||
return self._load_ben2(model_dir, requested_device, key)
|
||||
|
||||
def _load_ben2(self, model_dir, requested_device, key):
|
||||
@@ -43,7 +43,7 @@ class ModelSessionCache:
|
||||
key = (str(Path(model_dir).resolve()), requested_device, "onnx")
|
||||
if self.da3_model is not None and self.da3_key == key:
|
||||
return self.da3_model
|
||||
self.close()
|
||||
self.release_geometry()
|
||||
return self._load_da3(model_dir, requested_device, key)
|
||||
|
||||
def _load_da3(self, model_dir, requested_device, key):
|
||||
@@ -60,7 +60,7 @@ class ModelSessionCache:
|
||||
key = (str(Path(model_dir).resolve()), requested_device, "onnx")
|
||||
if self.moge_model is not None and self.moge_key == key:
|
||||
return self.moge_model
|
||||
self.close()
|
||||
self.release_geometry()
|
||||
model = create_session(model_dir, requested_device)
|
||||
self.moge_model = model
|
||||
self.moge_key = key
|
||||
@@ -72,7 +72,7 @@ class ModelSessionCache:
|
||||
key = (str(Path(model_dir).resolve()), requested_device, "onnx")
|
||||
if self.upscale_model is not None and self.upscale_key == key:
|
||||
return self.upscale_model
|
||||
self.close()
|
||||
self.release_upscale()
|
||||
model = create_session(model_dir, requested_device)
|
||||
self.upscale_model = model
|
||||
self.upscale_key = key
|
||||
@@ -83,12 +83,9 @@ class ModelSessionCache:
|
||||
self.ben2_key = None
|
||||
self._release_runtime_cache()
|
||||
|
||||
def release_da3(self):
|
||||
def release_geometry(self):
|
||||
self.da3_model = None
|
||||
self.da3_key = None
|
||||
self._release_runtime_cache()
|
||||
|
||||
def release_moge(self):
|
||||
self.moge_model = None
|
||||
self.moge_key = None
|
||||
self._release_runtime_cache()
|
||||
@@ -110,15 +107,11 @@ class ModelSessionCache:
|
||||
self._release_runtime_cache()
|
||||
|
||||
def snapshot(self):
|
||||
geometry_key = self.da3_key or self.moge_key
|
||||
return {
|
||||
"ben2": Path(self.ben2_key[0]).name if self.ben2_key else "",
|
||||
"da3": Path(self.da3_key[0]).name if self.da3_key else "",
|
||||
"moge2": Path(self.moge_key[0]).name if self.moge_key else "",
|
||||
"upscale": (
|
||||
Path(self.upscale_key[0]).name
|
||||
if self.upscale_key
|
||||
else ""
|
||||
),
|
||||
"geometry": Path(geometry_key[0]).name if geometry_key else "",
|
||||
"upscale": (Path(self.upscale_key[0]).name if self.upscale_key else ""),
|
||||
}
|
||||
|
||||
def _release_runtime_cache(self):
|
||||
@@ -176,6 +169,7 @@ class ModelManager:
|
||||
|
||||
total = len(missing)
|
||||
for index, model_key in enumerate(missing):
|
||||
|
||||
def report(value, message, *, offset=index):
|
||||
context.progress((offset + value) / total, message)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user