Advertisement
Guest User

brsverts3.py

a guest
Mar 16th, 2012
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.66 KB | None | 0 0
  1. # You must specify the input file with the full directory
  2. # you must also specify the output directory AND filename (no extension)
  3. # also remember to change the scale
  4.  
  5. # couldn't be bothered to invert the face orientation
  6. # select all and invert within metasequoia.
  7. import struct
  8. import zlib
  9. import codecs
  10. from array import array
  11. import sys
  12.  
  13.  
  14. h1= codecs.decode('424d','hex')
  15. h2=codecs.decode('000000003600000028000000','hex')
  16. h3=codecs.decode('010018000000000000000000120B0000120B00000000000000000000','hex')
  17. h4= codecs.decode('0000','hex')
  18.  
  19. #******* Change the Scale here *********
  20. scale = 1
  21. #**************************************
  22.  
  23.  
  24. f = open("C:/noesis/brs/BCHR_YUB01/chr_m_yub01.mdl", "rb")
  25. outputname = "chr_m_yub01"
  26. outputdirectory = "C:/noesis/brs/BCHR_YUB01/"
  27.  
  28.  
  29. metafile = outputdirectory+outputname
  30. of = open(metafile+".mqo", 'w')
  31.  
  32. UVfile = outputdirectory+"UV.tmp"
  33. of2 = open(UVfile, 'w+b')
  34.  
  35. of.write("Metasequoia Document\n")
  36. of.write("Format Text Ver 1.0\n")
  37. of.write(" \n")
  38. of.write("Scene {\n")
  39. of.write("pos -30.5374 -301.0406 878.7299\n")
  40. of.write("lookat 0.0000 0.0000 0.0000\n")
  41. of.write("head -6.8400\n")
  42. of.write("pich 0.1908\n")
  43. of.write("ortho 0\n")
  44. of.write("zoom2 10.0094\n")
  45. of.write("amb 0.490 0.490 0.490\n")
  46. of.write("}\n")
  47.  
  48.  
  49.  
  50.  
  51. try:
  52. vertcounter=0
  53. polycounter = 0
  54. dump = f.read(4) #tag
  55. dump = f.read(4)
  56. dump = f.read(4) #num_of_k2
  57. num_of_k2 = struct.unpack("<I", dump)[0]
  58. dump = f.read(4) #num_of_k2
  59. num_of_k3 = struct.unpack("<I", dump)[0]
  60.  
  61. dump = f.read(4) #offset_k0
  62. offset_k0 = struct.unpack("<I", dump)[0]
  63.  
  64. dump = f.read(4) #offset_k1
  65. offset_k1 = struct.unpack("<I", dump)[0]
  66.  
  67. dump = f.read(4) #offset_k2
  68. offset_k2 = struct.unpack("<I", dump)[0]
  69.  
  70. dump = f.read(4) #offset_k3
  71. offset_k3 = struct.unpack("<I", dump)[0]
  72. #dump ptmd data
  73. dump = f.read(4)
  74. dump = f.read(4)
  75. #offset_poly
  76. dump = f.read(4)
  77. offset_poly = struct.unpack("<I", dump)[0]
  78.  
  79.  
  80.  
  81. #offset1 = offset_poly
  82. f.seek(offset_poly,0);
  83. #offset_k1_bak = offset_k1
  84. polycounter = 0
  85.  
  86. #**************************************** just for vals
  87.  
  88.  
  89. fpos1=f.tell()
  90. f.seek(offset_k1,0); #list of offsets
  91. dump = f.read(4) #sets the vertex read length
  92. dump = f.read(4)
  93. offset1 = struct.unpack("<I", dump)[0] #get 1st polyoffset
  94. f.seek(fpos1,0);
  95. vertlen = 0
  96. tags2 = f.read(4) #read tag 0x00000014
  97. dump = f.read(4) #read next tag
  98. while tags2 == b'\x00\x00\x00\x14' :
  99. fpos1=f.tell() #push file pos
  100. f.seek(offset_k1,0);
  101. dump = f.read(1) #sets the vertex read length
  102. dump = f.read(1)
  103. dump = f.read(4)
  104. offset1 = struct.unpack("<I", dump)[0]
  105. offset_k1+=8
  106. f.seek(fpos1,0); #restore file pos
  107. tmpoffset = f.tell()
  108. first4 = f.read(4)
  109. f.seek(tmpoffset,0);
  110.  
  111. while first4 != b'\x00\x00\x00\x0B' :
  112. polycounter +=1
  113. reed3 = f.read(2)
  114. dump = f.read(6)
  115. dumpk1 = f.read(1)
  116. dumpk2 = f.read(1)
  117. dumpk3 = f.read(1)
  118. num = str(b'\x00') + dumpk3+ dumpk2+ dumpk1
  119. off2 = int(num.encode('hex'), 16)
  120. dump = f.read(1) #dump last byte of 3rd long
  121. dump = f.read(1) #get number of verts in poly
  122. vnumb = struct.unpack("<B", dump)
  123. vnum = vnumb[0]
  124. dump = f.read(3) #dump last 3 bytes
  125. off1 = f.tell()
  126. off3 = offset1 + off2
  127. f.seek(off3,0);
  128. vertcounter += vnum
  129. f.seek(off1,0); #restore file pos to poly list
  130. first4 = f.read(4) # read and store next long
  131. f.seek(off1,0); #restore file pos to file pos - 4
  132. koffk = f.tell()
  133. print ('offset for 0B = ',koffk)
  134. dump = f.read(4) #read the 0000000B long
  135. tags2 = f.read(4) # read 0x00000014
  136. dump = f.read(4) # read 0x******1D
  137. koffk = f.tell()
  138. f.seek(offset1,0);
  139. kcount = 0
  140.  
  141. numvert = vertcounter
  142. facecounter = 0
  143.  
  144.  
  145.  
  146. f.seek(offset_poly,0);
  147. tags2 = f.read(4)
  148. dump = f.read(4)
  149. while tags2 == b'\x00\x00\x00\x14' :
  150. print'outer loop'
  151. tmpoffset = f.tell()
  152. first4 = f.read(4)
  153. f.seek(tmpoffset,0);
  154. while first4 != b'\x00\x00\x00\x0B' :
  155.  
  156. reed3 = f.read(2)
  157. dump = f.read(6)
  158. dump = f.read(2)
  159. off2 = struct.unpack("<H", dump)
  160. dump = f.read(2)
  161. dump = f.read(1)
  162. vnumb = struct.unpack("<B", dump)
  163. vnum = vnumb[0]
  164. dump = f.read(3)
  165.  
  166. off1 = f.tell()
  167.  
  168. if vnum == 3:
  169. facecounter+=1
  170. kcount+=3
  171. elif vnum == 4:
  172. facecounter+=2
  173. kcount+=4
  174. elif vnum == 5:
  175. facecounter+=3
  176. kcount+=5
  177. elif vnum == 6:
  178. facecounter+=4
  179. kcount+=6
  180. elif vnum == 7:
  181. facecounter+=5
  182. kcount+=7
  183. elif vnum == 8:
  184. facecounter+=6
  185. kcount+=8
  186. elif vnum == 9:
  187. facecounter+=7
  188. kcount+=9
  189. elif vnum == 10:
  190. facecounter+=8
  191. kcount+=10
  192. elif vnum == 11:
  193. facecounter+=9
  194. kcount+=11
  195. elif vnum == 12:
  196. facecounter+=10
  197. kcount+=12
  198. elif vnum == 13:
  199. facecounter+=11
  200. kcount+=13
  201.  
  202. elif vnum > 13:
  203. print 'oops',vnum
  204. f.seek(off1,0);
  205. first4 = f.read(4)
  206. f.seek(off1,0);
  207. dump = f.read(4)
  208. tags2 = f.read(4)
  209. dump = f.read(4)
  210.  
  211.  
  212. numfaces = facecounter
  213. print numvert,numfaces
  214.  
  215. #****************************************
  216.  
  217. #numvert = 0
  218. kcount = 0
  219. facecounter = 0
  220. vertcounter = 0
  221. #offset_k1 = offset_k1_bak
  222. f.seek(0,0);
  223. print (f.tell())
  224.  
  225. dump = f.read(4) #tag
  226. dump = f.read(4)
  227. dump = f.read(4) #num_of_k2
  228. num_of_k2 = struct.unpack("<I", dump)[0]
  229. dump = f.read(4) #num_of_k2
  230. num_of_k3 = struct.unpack("<I", dump)[0]
  231.  
  232. dump = f.read(4) #offset_k0
  233. offset_k0 = struct.unpack("<I", dump)[0]
  234.  
  235. dump = f.read(4) #offset_k1
  236. offset_k1 = struct.unpack("<I", dump)[0]
  237.  
  238. dump = f.read(4) #offset_k2
  239. offset_k2 = struct.unpack("<I", dump)[0]
  240.  
  241. dump = f.read(4) #offset_k3
  242. offset_k3 = struct.unpack("<I", dump)[0]
  243. #dump ptmd data
  244. dump = f.read(4)
  245. dump = f.read(4)
  246. #offset_poly
  247. dump = f.read(4)
  248. offset_poly = struct.unpack("<I", dump)[0]
  249. print offset_k1,offset_poly
  250.  
  251.  
  252. offset1 = offset_poly
  253. f.seek(offset_poly,0);
  254.  
  255.  
  256.  
  257. polycounter = 0
  258.  
  259. #dump = f.read(8) nope
  260.  
  261. kk1 = 1
  262. if kk1 > 10000: kk1=1
  263.  
  264.  
  265. for i in range(0, kk1):
  266.  
  267. name = "obj1"
  268. of.write("Object \""+name+"\" {\n")
  269. of.write(" depth 0\n")
  270. of.write(" folding 0\n")
  271. of.write(" scale 1.000000 1.000000 1.000000\n")
  272. of.write(" rotation 0.000000 0.000000 0.000000\n")
  273. of.write(" translation 0.000000 0.000000 0.000000\n")
  274. of.write(" visible 15\n")
  275. of.write(" locking 0\n")
  276. of.write(" shading 1\n")
  277. of.write(" facet 59.5\n")
  278. of.write(" color 0.000 0.000 0.000\n")
  279. of.write(" color_type 0\n")
  280. of.write(" vertex "),
  281. kk2 = 4213
  282. of.write(str(numvert)),
  283. of.write("{\n")
  284.  
  285. fpos1=f.tell()
  286. f.seek(offset_k1,0); #list of offsets
  287. dump = f.read(4)
  288. dump = f.read(4)
  289. offset1 = struct.unpack("<I", dump)[0] #get 1st polyoffset
  290. print(offset1)
  291. #f.seek(offset1,0); #set file position to first polyoffset
  292. f.seek(fpos1,0);
  293.  
  294. vertlen = 0
  295. tags2 = f.read(4) #read tag 0x00000014
  296. dump = f.read(4) #read next tag
  297. print(f.tell())
  298.  
  299.  
  300. while tags2 == b'\x00\x00\x00\x14' :
  301. print'outer loop'
  302.  
  303. #get vertex field length
  304. fpos1=f.tell() #push file pos
  305. f.seek(offset_k1,0);
  306.  
  307. dump = f.read(1)
  308. dump = f.read(1)
  309. dump = f.read(2)
  310. dump = f.read(4)
  311. offset1 = struct.unpack("<I", dump)[0]
  312. print offset1
  313. offset_k1+=8
  314. f.seek(fpos1,0); #restore file pos
  315.  
  316. tmpoffset = f.tell()
  317. first4 = f.read(4)
  318. f.seek(tmpoffset,0);
  319.  
  320.  
  321.  
  322.  
  323. while first4 != b'\x00\x00\x00\x0B' :
  324. polycounter +=1
  325.  
  326. #read offsets from poly list
  327. reed3 = f.read(2)
  328. dump = f.read(6)
  329.  
  330. # the off2 is 3 bytes long
  331. dumpk1 = f.read(1)
  332. dumpk2 = f.read(1)
  333. dumpk3 = f.read(1)
  334. num = str(b'\x00') + dumpk3+ dumpk2+ dumpk1
  335. off2 = int(num.encode('hex'), 16)
  336. dump = f.read(1) #dump last byte of 3rd long
  337.  
  338. dump = f.read(1) #get number of verts in poly
  339. vnumb = struct.unpack("<B", dump)
  340. vnum = vnumb[0]
  341. dump = f.read(3) #dump last 3 bytes
  342. off1 = f.tell()
  343.  
  344. #set file pos to vert list position
  345. off3 = offset1 + off2
  346. f.seek(off3,0);
  347. for k in range(0, vnum):
  348. koffk = f.tell()
  349. #print ()
  350. vertcounter +=1
  351. #print ('offs = ',koffk,vertcounter-26,polycounter, off2, off3,offset1)
  352. if reed3 == '\xBA\x07':
  353. vertlen = 28-12
  354. if reed3 == '\xA2\x07':
  355. vertlen = 24-12
  356. if reed3 == '\xA2\x47':
  357. vertlen = 28-12
  358. if reed3 == '\xBA\x47':
  359. vertlen = 32-12
  360. if reed3 == '\xBA\x87':
  361. vertlen = 36-12
  362. if reed3 == '\xA2\x87':
  363. vertlen = 28-12
  364.  
  365. dump = f.read(vertlen)
  366. x = f.read(4)
  367. y = f.read(4)
  368. z = f.read(4)
  369. otx = struct.unpack("<f", x)
  370. oty = struct.unpack("<f", y)
  371. otz = struct.unpack("<f", z)
  372. ox = otx[0] #* scale
  373. oy = oty[0] #* scale
  374. oz = otz[0] #* scale
  375. #str(reed3)+
  376. tmpstr = "\t"+("%.5f" % ox)+" "+("%.5f" % oy)+" "+("%.5f" % oz)
  377. of.write(tmpstr+"\n")
  378. #print (vertcounter,polycounter,off2,off3,reed3,tmpstr+"\n" )
  379.  
  380. f.seek(off1,0); #restore file pos to poly list
  381. first4 = f.read(4) # read and store next long
  382. f.seek(off1,0); #restore file pos to file pos - 4
  383.  
  384.  
  385. #gets here if next long is 0000000B
  386. #f.seek(off1,0);
  387. #print 'off1 = ', off1
  388. koffk = f.tell()
  389. print ('offset for 0B = ',koffk)
  390. dump = f.read(4) #read the 0000000B long
  391. tags2 = f.read(4) # read 0x00000014
  392. dump = f.read(4) # read 0x******1D
  393. koffk = f.tell()
  394. #print ('offset for 0B = ',koffk)
  395. #offset1 +=4
  396. #print tags2
  397.  
  398. of.write(" }\n")
  399. f.seek(offset1,0);
  400. kcount = 0
  401. tmpstr = "\t face"+" "+str(numfaces)+" {\n"
  402. of.write(tmpstr)
  403.  
  404.  
  405.  
  406. # triangle generator
  407.  
  408.  
  409.  
  410.  
  411. kcount = 0
  412. f.seek(offset_poly,0);
  413. tags2 = f.read(4)
  414. dump = f.read(4)
  415. while tags2 == b'\x00\x00\x00\x14' :
  416. print'outer loop'
  417. tmpoffset = f.tell()
  418. first4 = f.read(4)
  419. f.seek(tmpoffset,0);
  420. while first4 != b'\x00\x00\x00\x0B' :
  421.  
  422. reed3 = f.read(2)
  423. dump = f.read(6)
  424. dump = f.read(2)
  425. off2 = struct.unpack("<H", dump)
  426. dump = f.read(2)
  427. dump = f.read(1)
  428. vnumb = struct.unpack("<B", dump)
  429. vnum = vnumb[0]
  430. dump = f.read(3)
  431.  
  432.  
  433. off1 = f.tell()
  434.  
  435.  
  436. '''
  437. vn = vnum -2
  438. rm = (vnum+1) % 2
  439. print vnum,vn,rm
  440. for q in range(0, vn):
  441. kk = q*3
  442. of.write("3 V("+str(kcount+kk)+" "+str(kcount+kk+1)+" "+str(kcount+kk+2)+")\n")
  443. facecounter+=1
  444. if vn > 1 and rm == 0:
  445. of.write("3 V("+str(kcount+kk+3)+" "+str(kcount+kk+2)+" "+str(kcount+kk+1)+")\n")
  446. facecounter+=1
  447. kcount+=vnum
  448. '''
  449. if vnum == 3:
  450. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  451. facecounter+=1
  452. kcount+=3
  453. elif vnum == 4:
  454. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  455. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  456. facecounter+=2
  457. kcount+=4
  458. elif vnum == 5:
  459. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  460. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  461. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  462. facecounter+=3
  463. kcount+=5
  464. elif vnum == 6:
  465. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  466. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  467. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  468. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  469. facecounter+=4
  470. kcount+=6
  471. elif vnum == 7:
  472. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  473. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  474. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  475. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  476. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  477. facecounter+=5
  478. kcount+=7
  479. elif vnum == 8:
  480. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  481. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  482. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  483. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  484. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  485. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  486. facecounter+=6
  487. kcount+=8
  488. elif vnum == 9:
  489. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  490. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  491. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  492. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  493. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  494. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  495. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  496. facecounter+=7
  497. kcount+=9
  498. elif vnum == 10:
  499. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  500. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  501. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  502. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  503. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  504. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  505. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  506. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  507. facecounter+=8
  508. kcount+=10
  509. elif vnum == 11:
  510. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  511. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  512. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  513. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  514. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  515. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  516. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  517. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  518. of.write("3 V("+str(kcount+8)+" "+str(kcount+9)+" "+str(kcount+10)+")\n")
  519. facecounter+=9
  520. kcount+=11
  521. elif vnum == 12:
  522. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  523. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  524. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  525. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  526. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  527. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  528. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  529. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  530. of.write("3 V("+str(kcount+8)+" "+str(kcount+9)+" "+str(kcount+10)+")\n")
  531. of.write("3 V("+str(kcount+11)+" "+str(kcount+10)+" "+str(kcount+9)+")\n")
  532. facecounter+=10
  533. kcount+=12
  534. elif vnum == 13:
  535. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  536. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  537. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  538. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  539. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  540. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  541. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  542. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  543. of.write("3 V("+str(kcount+8)+" "+str(kcount+9)+" "+str(kcount+10)+")\n")
  544. of.write("3 V("+str(kcount+11)+" "+str(kcount+10)+" "+str(kcount+9)+")\n")
  545. of.write("3 V("+str(kcount+10)+" "+str(kcount+11)+" "+str(kcount+12)+")\n")
  546. facecounter+=11
  547. kcount+=13
  548. elif vnum == 14:
  549. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  550. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  551. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  552. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  553. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  554. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  555. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  556. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  557. of.write("3 V("+str(kcount+8)+" "+str(kcount+9)+" "+str(kcount+10)+")\n")
  558. of.write("3 V("+str(kcount+11)+" "+str(kcount+10)+" "+str(kcount+9)+")\n")
  559. of.write("3 V("+str(kcount+10)+" "+str(kcount+11)+" "+str(kcount+12)+")\n")
  560. of.write("3 V("+str(kcount+13)+" "+str(kcount+12)+" "+str(kcount+11)+")\n")
  561. facecounter+=12
  562. kcount+=14
  563. elif vnum == 15:
  564. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  565. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  566. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  567. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  568. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  569. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  570. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  571. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  572. of.write("3 V("+str(kcount+8)+" "+str(kcount+9)+" "+str(kcount+10)+")\n")
  573. of.write("3 V("+str(kcount+11)+" "+str(kcount+10)+" "+str(kcount+9)+")\n")
  574. of.write("3 V("+str(kcount+10)+" "+str(kcount+11)+" "+str(kcount+12)+")\n")
  575. of.write("3 V("+str(kcount+13)+" "+str(kcount+12)+" "+str(kcount+11)+")\n")
  576. of.write("3 V("+str(kcount+12)+" "+str(kcount+13)+" "+str(kcount+14)+")\n")
  577. facecounter+=13
  578. kcount+=15
  579. elif vnum == 16:
  580. of.write("3 V("+str(kcount)+" "+str(kcount+1)+" "+str(kcount+2)+")\n")
  581. of.write("3 V("+str(kcount+3)+" "+str(kcount+2)+" "+str(kcount+1)+")\n")
  582. of.write("3 V("+str(kcount+2)+" "+str(kcount+3)+" "+str(kcount+4)+")\n")
  583. of.write("3 V("+str(kcount+5)+" "+str(kcount+4)+" "+str(kcount+3)+")\n")
  584. of.write("3 V("+str(kcount+4)+" "+str(kcount+5)+" "+str(kcount+6)+")\n")
  585. of.write("3 V("+str(kcount+7)+" "+str(kcount+6)+" "+str(kcount+5)+")\n")
  586. of.write("3 V("+str(kcount+6)+" "+str(kcount+7)+" "+str(kcount+8)+")\n")
  587. of.write("3 V("+str(kcount+9)+" "+str(kcount+8)+" "+str(kcount+7)+")\n")
  588. of.write("3 V("+str(kcount+8)+" "+str(kcount+9)+" "+str(kcount+10)+")\n")
  589. of.write("3 V("+str(kcount+11)+" "+str(kcount+10)+" "+str(kcount+9)+")\n")
  590. of.write("3 V("+str(kcount+10)+" "+str(kcount+11)+" "+str(kcount+12)+")\n")
  591. of.write("3 V("+str(kcount+13)+" "+str(kcount+12)+" "+str(kcount+11)+")\n")
  592. of.write("3 V("+str(kcount+12)+" "+str(kcount+13)+" "+str(kcount+14)+")\n")
  593. of.write("3 V("+str(kcount+15)+" "+str(kcount+14)+" "+str(kcount+13)+")\n")
  594. facecounter+=16
  595. kcount+=16
  596.  
  597.  
  598.  
  599.  
  600.  
  601. elif vnum > 17:
  602. print 'oops',vnum
  603.  
  604.  
  605. f.seek(off1,0);
  606. first4 = f.read(4)
  607. f.seek(off1,0);
  608. dump = f.read(4)
  609. tags2 = f.read(4)
  610. dump = f.read(4)
  611. of.write(" }\n")
  612. numfaces = numvert
  613. of.write("}\n")
  614. of.write("}\n")
  615. of.write("Eof\n")
  616. #of.write("vertcounter "+str(vertcounter))
  617. #of.write("facecounter "+str(facecounter))
  618. of.close()
  619. of2.close()
  620.  
  621.  
  622.  
  623.  
  624. except EOFError:
  625. print "oooops"
  626.  
  627. finally:
  628. f.close()
  629.  
  630. print "finished"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement