-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathobjCleaner.py
66 lines (45 loc) · 1.23 KB
/
objCleaner.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import sys
import re
import os
srcFile = sys.argv[1]
destFile = sys.argv[1] + '.temp'
srcFile = open(srcFile, "r")
destFile = open(destFile, "w")
for line in srcFile:
pattern = re.compile("[(vn .*?\n)(vt .*?\n)(v .*?\n)(f .*?\n)]")
if pattern.match(line):
destFile.write(line)
else:
destFile.write("\n")
srcFile.close()
destFile.close()
# generate triangluar faces from the polygon face
# normalize coordinate in the range 0 to 1
srcFile = sys.argv[1] + '.temp'
finalFile = sys.argv[1] + '.clean'
srcFile = open(srcFile, "r")
finalFile = open(finalFile, "w")
toDivide = None
def digits(num):
n = str(int(float(num)))
return len(n)
for line in srcFile:
strs = line.strip().split()
if (len(strs) > 4 and strs[0] == "f"):
for i in range(3,len(strs)):
finalFile.write('f ' + strs[1] + " " + strs[i-1] + " " + strs[i] + "\n")
elif len(strs) > 1 and strs[0] == "f":
finalFile.write(line)
else:
# normalize coordinate to [0 to 1]
if (len(strs) >= 3):
if (toDivide == None):
toDivide = 10**digits(strs[1])
for i in range(1, len(strs)):
strs[i] = str(float(strs[i])/toDivide)
for i in strs:
finalFile.write(i + " ")
finalFile.write("\n")
srcFile.close()
finalFile.close()
os.remove(sys.argv[1] + '.temp')