#!/usr/bin/python # transform ascii pgm to ddxml model import sys if (len(sys.argv) < 3) or (len(sys.argv) > 4): print 'Usage: ' + sys.argv[0] + ' inputfile.pgm outputfile.ddxml [texturefilename]' sys.exit() f1 = open(sys.argv[1]) l1 = f1.readlines() f1.close() f2 = open(sys.argv[2], 'w') texmap = '' if (len(sys.argv) >= 4): texmap = sys.argv[3] if l1[0][:-1] != 'P2': print 'No ascii PGM!' sys.exit() if l1[1][0] != '#': print 'Save with gimp and do not modify it!' sys.exit() # w/h wh = l1[2].split() w = int(wh[0]) h = int(wh[1]) print 'width=',w,'height=',h # build output l2 = ['\n'] if (texmap != ''): l2.append('\t\n') l2.append('\t\t\n') l2.append('\t\t\n') l2.append('\t\t\n') l2.append('\t\t') l2.append('\t\n') meshstr = '\t' strt = '\t\t' ptr = 4 heightmult = 1.0 for y in range(0, h): for x in range(0, w): ih = (int(l1[ptr][:-1]) - 128) * heightmult strv += str(x-w*0.5) + ' ' + str(y-h*0.5) + ' ' + str(ih) + ' ' strt += str(float(x)/(w-1)) + ' ' + str(float(y)/(h-1)) + ' ' ptr += 1 strv += '\n' strt += '\n' stri = '\t\t' stri2 = '\t\t' + str(w) + ' 0 ' left_to_right = True for y in range(0, h-1): for x in range(0, w-1): b = y*w+x stri += str(b) + ' ' + str(b+1) + ' ' + str(b+w) + ' ' + str(b+w) + ' ' + str(b+1) + ' ' + str(b+w+1) + ' ' if left_to_right: for x in range(1, w): stri2 += str(x + (y+1)*w) + ' ' + str(x + y*w) + ' ' # append degenerated if y + 1 < h: stri2 += str(w-1 + (y+1)*w) + ' ' + str(w-1 + (y+1)*w) + ' ' + str(w-1 + (y+1)*w) + ' ' + str(w-1 + (y+2)*w) + ' ' else: for x in range(1, w): stri2 += str(w-1-x + y*w) + ' ' + str(w-1-x + (y+1)*w) + ' ' # append degenerated if y + 1 < h: stri2 += str((y+1)*w) + ' ' + str((y+1)*w) + ' ' + str((y+2)*w) + ' ' + str((y+1)*w) + ' ' left_to_right = not left_to_right stri += '\n' stri2 += '\n' l2.append(strv) #l2.append(stri) l2.append(stri2) l2.append(strt) l2.append('\t\t1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 \n') l2.append('\t\n') l2.append('\n') f2.writelines(l2) f2.close() print 'done!'