"""Align Studio's centred/normalised mesh to its exact source high, retaining UVs.""" import bpy,sys,json,hashlib import numpy as np from pathlib import Path from mathutils import Matrix,Vector folder=Path(sys.argv[sys.argv.index('--')+1]).resolve() bpy.ops.wm.read_factory_settings(use_empty=True) def load(path): before=set(bpy.data.objects);bpy.ops.import_scene.gltf(filepath=str(path),merge_vertices=False);objects=[o for o in bpy.data.objects if o not in before and o.type=='MESH'];assert len(objects)==1;return objects[0] def bounds(obj): points=[obj.matrix_world@v.co for v in obj.data.vertices];lo=Vector([min(p[i] for p in points) for i in range(3)]);hi=Vector([max(p[i] for p in points) for i in range(3)]);return lo,hi def uvhash(obj):return hashlib.sha256(np.array([tuple(v.uv) for v in obj.data.uv_layers.active.data],dtype='