From fc5daabb052da4582052da1aa44322d9cd324b2c Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Wed, 11 Sep 2002 19:03:51 +0000 Subject: [PATCH] silly little python script for dumping models --- tools/misc/mdl.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tools/misc/mdl.py diff --git a/tools/misc/mdl.py b/tools/misc/mdl.py new file mode 100644 index 000000000..f951ee61c --- /dev/null +++ b/tools/misc/mdl.py @@ -0,0 +1,67 @@ +from struct import * +from pprint import * + +model = open("flame.mdl","rb").read() +m = unpack ("4s l 3f 3f f 3f i i i i i i i i f", model[:84]) +m = m[0:2] + (m[2:5],) + (m[5:8],) + m[8:9] + (m[9:12],) + m[12:21] +model = model[84:] +pprint (m) + +skins = [] +s = m[7] * m[8] +for i in range(m[6]): + t=unpack ("l", model[:4])[0] + model = model[4:] + if t==0: + skins.append((t,model[:s])) + model = model[s:] + else: + n = unpack ("l", model[:4])[0] + model = model [4:] + k = (n, unpack (`n`+"f", model[:n*4]), []) + model = model [n*4:] + for j in range (n): + k[2].append (model[:s]) + model = model[s:] + skins.append (k) +#pprint (skins) + +stverts = [] +for i in range(m[9]): + stverts.append (unpack ("l l l", model[:12])) + model = model [12:] +#pprint (stverts) + +tris = [] +for i in range(m[10]): + tris.append (unpack ("l l l l", model[:16])) + tris[-1] = (tris[-1][0], tris[-1][1:]) + model = model [16:] +#pprint (tris) + +frames = [] +for i in range (m[11]): + t = unpack ("l", model[:4])[0] + model = model[4:] + if t==0: + f = (t, unpack ("3B B 3B B 16s", model[:24]), []) + model = model[24:] + for j in range(m[9]): + f[2].append(unpack("3B B", model[:4])) + model = model[4:] + frames.append(f) + else: + g = (t, unpack ("l 3B B 3B B", model[:12])) + model = model[12:] + n = g[1][0] + g = g + (unpack (`n`+"f", model[:n*4]), []) + model = model[n*4:] + for k in range (g[1][0]): + f = (unpack ("3B B 3B B 16s", model[:24]), []) + model = model[24:] + for j in range(m[9]): + f[1].append(unpack("3B B", model[:4])) + model = model[4:] + g[3].append(f) + frames.append(g) +pprint(frames)