-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathColladaExport.py
More file actions
75 lines (60 loc) · 2.04 KB
/
ColladaExport.py
File metadata and controls
75 lines (60 loc) · 2.04 KB
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
67
68
69
70
71
72
73
74
75
import xml.dom.minidom
import sys
sys.path.append('py')
import ColladaScene
import ColladaAnim
import os
import shutil
import re
#matchThis = '.'
matchThis = 'space-station'
outFolder = './json/'
#if os.path.exists(outFolder[:-1]):
# shutil.rmtree(outFolder[:-1])
#os.makedirs(outFolder[:-1])
fileHandle = open(outFolder + 'index.json', 'w')
fileHandle.write('{\n "scenes" : [\n')
numWritten = 0
dirList = os.listdir('./dae');
for dae in dirList:
if dae[0] == '.' or re.search(matchThis, dae) == None:
continue
print('Reading file ' + dae)
doc = xml.dom.minidom.parse('./dae/' + dae)
scenes = doc.getElementsByTagName('scene');
if len(scenes) != 1:
print('Multiple scenes, skipping.')
continue
sceneInstances = scenes[0].getElementsByTagName('instance_visual_scene');
if len(sceneInstances) != 1:
print('Multiple scene instances, skipping.')
continue
visualSceneURL = sceneInstances[0].getAttribute('url')
if visualSceneURL[0] != '#':
print('Scene URL pointing outside of this document, skipping.')
continue
visualScene = None
for vs in doc.getElementsByTagName('visual_scene'):
if vs.getAttribute('id') == visualSceneURL[1:]:
visualScene = vs
break
if visualScene == None:
print("Couldn't find visual scene with id '" + visualSceneURL + "', skipping.")
continue
outFileName = dae.split('.')[0]
outFilePath = outFolder + outFileName + '.json'
cScene = ColladaScene.Scene(doc, visualScene, outFolder)
cScene.Write(outFolder, outFileName);
numWritten = numWritten + 1
animList = ''
for libAnims in doc.getElementsByTagName('library_animations'):
anim = ColladaAnim.Anim(libAnims)
anim.Write(outFolder + outFileName + '_anim.json')
if len(animList):
animList = animList + ', '
animList = animList + '"' + outFolder + outFileName + '_anim.json"'
if numWritten != 1:
fileHandle.write(',\n')
fileHandle.write(' { "name" : "' + outFilePath + '", "anims" : [' + animList + '] }')
fileHandle.write('\n ]\n}\n')
fileHandle.close()