"""Compare saved browser Main geometry with the desktop remesh operator.""" import json import pathlib import sys import bpy def summary(): bpy.context.view_layer.update() def vector(values): return [round(float(value), 6) for value in values] return {"objects": [{ "name": obj.name, "type": obj.type, "matrix": [vector(row) for row in obj.matrix_world], "vertices": [vector(v.co) for v in obj.data.vertices] if obj.type == "MESH" else [], "faces": [list(p.vertices) for p in obj.data.polygons] if obj.type == "MESH" else [], "voxelSize": round(obj.data.remesh_voxel_size, 6) if obj.type == "MESH" else None, } for obj in sorted(bpy.data.objects, key=lambda obj: obj.name)]} directory = pathlib.Path(sys.argv[sys.argv.index("--") + 1]) states = {} for blend in sorted(directory.glob("*.blend")): bpy.ops.wm.open_mainfile(filepath=str(blend), load_ui=False) states[blend.stem] = summary() bpy.ops.wm.open_mainfile(filepath=str(directory / "before.blend"), load_ui=False) bpy.context.active_object.data.remesh_voxel_size = 0.3 assert bpy.ops.object.voxel_remesh() == {"FINISHED"} states["expected"] = summary() (directory / "native.json").write_text(json.dumps(states, sort_keys=True, indent=2) + "\n")