File: //proc/self/root/tmp/bboxchk.py
import struct, json, glob, os
def bbox(path):
with open(path,"rb") as f:
f.read(12); clen,ct=struct.unpack("<II",f.read(8)); js=json.loads(f.read(clen))
mins=[1e9]*3; maxs=[-1e9]*3; accs=js.get("accessors",[])
for m in js.get("meshes",[]):
for pr in m.get("primitives",[]):
pi=pr.get("attributes",{}).get("POSITION")
if pi is None: continue
a=accs[pi]
if "min" in a and "max" in a:
for k in range(3):
mins[k]=min(mins[k],a["min"][k]); maxs[k]=max(maxs[k],a["max"][k])
return mins, maxs
for p in sorted(glob.glob("/home/panomity.de/vr.panomity.com/media/objects3d/ph_*.glb")):
mn,mx = bbox(p)
name = os.path.basename(p)
base = "JA" if abs(mn[1]) < 0.02 else "NEIN"
print("%-22s Ymin=%+.3f Ymax=%+.3f Basis-bei-0: %s" % (name, mn[1], mx[1], base))