"""Check if a hair mesh is symmetric across the X axis.""" import sys import bpy if __name__ == "__main__": argv = sys.argv if "--" not in argv: sys.exit(1) path = argv[argv.index("--") + 1] bpy.ops.wm.read_factory_settings(use_empty=True) bpy.ops.import_scene.gltf(filepath=path) for obj in bpy.context.scene.objects: if obj.type != 'MESH' or 'Hair' not in obj.name: continue verts = obj.data.vertices xs = [v.co.x for v in verts] zs = [v.co.z for v in verts] print(f"{obj.name}: {len(verts)} verts") print(f" X range: {min(xs):.4f} to {max(xs):.4f}") print(f" Z range: {min(zs):.4f} to {max(zs):.4f}") left = sum(1 for x in xs if x > 0.01) right = sum(1 for x in xs if x < -0.01) center = sum(1 for x in xs if abs(x) <= 0.01) print(f" left(+X): {left}, right(-X): {right}, center: {center}") # Check normals for consistency normals = [v.normal for v in verts] outward = sum(1 for n in normals if n.length() > 0.5) print(f" verts with normals: {outward}/{len(verts)}")