diff --git a/metahub_save_3d_node.py b/metahub_save_3d_node.py index 720bfaa..cd7cce3 100644 --- a/metahub_save_3d_node.py +++ b/metahub_save_3d_node.py @@ -313,6 +313,7 @@ def _build_metadata( loras = extracted.get("lora_list") or utils.extract_loras_from_workflow(workflow_json) model_name = extracted.get("model_name") or "" steps = int(extracted.get("steps") or 0) + denoise = extracted.get("denoise") elapsed = time.time() - generation_time_override if generation_time_override and generation_time_override > 0 else 0.0 generation_time_ms = int(elapsed * 1000) if elapsed > 0 else None gpu = utils.collect_gpu_metrics() @@ -330,7 +331,7 @@ def _build_metadata( "model_name": model_name, "model_hash": utils.calculate_model_hash(model_name, model_type="checkpoint") if model_name else "", "vae_name": extracted.get("vae_name") or "", - "denoise": float(extracted.get("denoise") or 1.0), + "denoise": float(denoise) if denoise is not None else 1.0, "width": 0, "height": 0, "lora_list": loras, diff --git a/tests/test_metahub_save_3d_node.py b/tests/test_metahub_save_3d_node.py index 88c4bf6..e499980 100644 --- a/tests/test_metahub_save_3d_node.py +++ b/tests/test_metahub_save_3d_node.py @@ -92,6 +92,31 @@ def test_texture_without_usable_uvs_is_not_reported_as_embedded(tmp_path): assert "textures" not in gltf +def test_build_metadata_preserves_zero_denoise(monkeypatch): + class FakeExtractor: + def __init__(self, _prompt): + pass + + def extract(self, save_node_id): + assert save_node_id == "3" + return {"denoise": 0.0, "lora_list": []}, set() + + monkeypatch.setattr(node3d, "WorkflowExtractor", FakeExtractor) + monkeypatch.setattr(node3d.utils, "get_workflow_json", lambda _info: {}) + monkeypatch.setattr(node3d.utils, "ensure_prompt_in_workflow", lambda workflow, _prompt: workflow) + monkeypatch.setattr(node3d.utils, "ensure_metahub_save_node", lambda *args, **kwargs: None) + monkeypatch.setattr(node3d.utils, "extract_loras_from_workflow", lambda _workflow: []) + monkeypatch.setattr(node3d.utils, "collect_gpu_metrics", lambda: {}) + monkeypatch.setattr(node3d.utils, "collect_version_info", lambda: {}) + monkeypatch.setattr(node3d.utils, "build_metadata_sources", lambda *args: {}) + monkeypatch.setattr(node3d.utils, "extract_workflow_attribution", lambda *args: {}) + monkeypatch.setattr(node3d.utils, "build_imh_metadata", lambda params, _workflow: params) + + metadata = node3d._build_metadata({}, {}, "3", "", "", "", None) + + assert metadata["denoise"] == 0.0 + + def test_textured_unlit_mesh_preserves_unlit_and_transparency(tmp_path): mesh = _mesh() mesh.unlit = True