Advertisement
Guest User

Untitled

a guest
Jul 29th, 2020
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.02 KB | None | 0 0
  1. import sys
  2. import os
  3. import struct
  4.  
  5. f = open(sys.argv[1], 'r')
  6. SR = 0
  7. GR = 0
  8. LR = 0
  9.  
  10. VOBJ = [[],[]]
  11. TOBJ = [[],[],[]]
  12.  
  13. LGT = []
  14. VTX = []
  15. TRI = []
  16. triOff = 0
  17. curLGT = []
  18. curV = 0
  19. curT = 0
  20. for x in f:
  21.     if(GR):
  22.         if(x.find("gsSPLight(")>=0):
  23.             if(len(LGT)):
  24.                 curLGT = LGT[int(x[x.find("[")+1:x.find("]")])]
  25.         elif(x.find("gsSPVertex(")>=0):
  26.             triOff = int(x[x.find("[")+1:x.find("]")])
  27.             if(curT==0):
  28.                 name = x[x.find('&')+1:x.find('[')]
  29.                 for i,vtxN in enumerate(VOBJ[0]):
  30.                     blklist = ['=','{','}','[',']']
  31.                     vtxN = ''.join([c for c in vtxN if c not in blklist])
  32.                     vtxN = vtxN.strip()
  33.                     if(vtxN == name):
  34.                         curV = i
  35.                         TOBJ[2].append(curV)
  36.                         curT = 1
  37.         elif(x.find("gsSP1Triangle(")>=0):
  38.             tr = x.replace("\tgsSP1Triangle(","").replace("),\n","").split(',')
  39.             tr.pop()
  40.             tf = []
  41.             for t in tr:
  42.                 t = int(t) + triOff
  43.                 if(len(curLGT)>0):
  44.                     for a in range(3):
  45.                         VOBJ[1][curV][t][6+a] = curLGT[a]
  46.                 tf.append(t)
  47.             TRI.append(tf)
  48.         #else: print(x)
  49.     if(SR):
  50.         #print x
  51.         vtmp = x[x.find('{')+1:x.find('}')].replace(' ','').split(',')
  52.         VTX.append(vtmp)
  53.     if(LR):
  54.         #print x[x.find('(')+1:x.find(')')].split(',')
  55.         LGT.append(x[x.find('(')+1:x.find(')')].split(','))
  56.     if(x.find('Gfx') >= 0 ):
  57.         GR = 1
  58.         TOBJ[0].append(x[x.find("Gfx ")+4:x.find("[")])
  59.         print("GFX", x[x.find("Gfx ")+4:x.find("[")])
  60.     if(x.find('Lights1') >= 0 ):
  61.         print ('Lights1', x)
  62.         LR = 1
  63.     if(x.find('static Vtx') >= 0):
  64.         SR = 1
  65.         VOBJ[0].append(x.replace("static Vtx ","").replace("[]={\n",""))
  66.     if(x.find('};') == 0):
  67.         if(SR):
  68.                 VTX.pop()
  69.                 VOBJ[1].append(VTX)
  70.                 VTX = []
  71.         if(GR):
  72.                 TOBJ[1].append(TRI)
  73.                 TRI = []
  74.         SR = 0
  75.         curT = 0
  76.         GR = 0
  77.         LR = 0
  78.         #print "end"
  79.        
  80. #VTX.pop()
  81. for e in range(len(TOBJ[2])):
  82.     print(TOBJ[2][e])
  83.     VTX = VOBJ[1][TOBJ[2][e]]
  84.     TRI = TOBJ[1][e]
  85.     o = open(TOBJ[0][e] + ".ply", 'w')
  86.     o.write("ply\nformat ascii 1.0\n")
  87.     o.write("element vertex %i\n"% len(VTX) )
  88.     for a in ["x","y","z","s","t"]:
  89.         o.write("property float %s\n" % a)
  90.     for a in ["red","green","blue","alpha"]:
  91.         o.write("property uchar %s\n" % a)
  92.     o.write("element face %i\n"% len(TRI) )
  93.     o.write("property list uchar uint vertex_indices\nend_header\n")
  94.     curv=0
  95.     print("element vertex %i\n"% len(VTX) )
  96.     for v in VTX:
  97.         curv+=1
  98.         i = []
  99.         for vl in v:
  100.             i.append(int(vl))
  101.             vl = vl.replace("\t","")
  102.         o.write("%s %s %s %s %s %s %s %s %s\n" % (i[0],i[1],i[2],i[4],i[5],i[6],i[7],i[8],i[9]))
  103.     for p in TRI:
  104.             o.write("3 %i %i %i\n" % (p[0],p[1],p[2]))
  105.     VTX = VOBJ[1][TOBJ[2][e]]
  106.     TRI = TOBJ[1][e]
  107.     #print e
  108.     o = open(TOBJ[0][e] + ".ply", 'w')
  109.     o.write("ply\nformat ascii 1.0\n")
  110.     o.write("element vertex %i\n"% len(VTX) )
  111.     for a in ["x","y","z","s","t"]:
  112.         o.write("property float %s\n" % a)
  113.     for a in ["red","green","blue","alpha"]:
  114.         o.write("property uchar %s\n" % a)
  115.     o.write("element face %i\n"% len(TRI) )
  116.     o.write("property list uchar uint vertex_indices\nend_header\n")
  117.     curv=0
  118.     print("element vertex %i\n"% len(VTX) )
  119.     for v in VTX:
  120.             curv+=1
  121.             print(curv)
  122.             i = []
  123.             for vl in v:
  124.                     i.append(int(vl))
  125.                     vl = vl.replace("\t","")
  126.             o.write("%s %s %s %s %s %s %s %s %s\n" % (i[0],i[1],i[2],i[4],i[5],i[6],i[7],i[8],i[9]))
  127.     for p in TRI:
  128.             o.write("3 %i %i %i\n" % (p[0],p[1],p[2]))
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement