import bpy,json,numpy as np
from pathlib import Path
P=Path('/opt/creature-lib-20261017/realistic/horse');bpy.ops.wm.read_factory_settings(use_empty=True);bpy.ops.import_scene.gltf(filepath=str(P/'bound-v4.glb'))
o=next(o for o in bpy.context.scene.objects if o.type=='MESH' and any(m.type=='ARMATURE' for m in o.modifiers));mat=o.data.materials[0];bs=mat.node_tree.nodes.get('Principled BSDF');im=bs.inputs['Base Color'].links[0].from_node.image;a=np.array(im.pixels[:]).reshape(im.size[1],im.size[0],4);uv=o.data.uv_layers.active.data
points=[]
for poly in o.data.polygons:
 for li in poly.loop_indices:
  t=uv[li].uv;p=a[min(im.size[1]-1,int(t.y*im.size[1])),min(im.size[0]-1,int(t.x*im.size[0])),:3]
  if min(p)>.7 and max(p)-min(p)<.2:points.append(list(o.matrix_world@o.data.vertices[o.data.loops[li].vertex_index].co))
points=np.array(points);print('WHITE',len(points),'bounds',points.min(axis=0),points.max(axis=0),'quantiles',np.percentile(points,[0,10,50,90,100],axis=0));im.save_render(str(P/'albedo-before.png'))
