Sfoglia il codice sorgente

Merged with sole's branch: took new Python build script, made it work with my ancient Python 2.6.

alteredq 14 anni fa
parent
commit
b14f09be61
3 ha cambiato i file con 141 aggiunte e 118 eliminazioni
  1. 2 0
      utils/build.bat
  2. 137 116
      utils/build.py
  3. 2 2
      utils/exporters/convert_obj_threejs.py

+ 2 - 0
utils/build.bat

@@ -0,0 +1,2 @@
+python build.py --full
+python build.py --debug

+ 137 - 116
utils/build.py

@@ -1,200 +1,221 @@
 #!/usr/bin/env python
 
-import argparse
+try:
+    import argparse
+    ap = 1
+except ImportError:
+    import optparse
+    ap = 0
+    
 import os
 import tempfile
 
 
 FILES = {
-	'core': ['Three.js', 'core/Color.js', 'core/Vector2.js', 'core/Vector3.js', 'core/Vector4.js', 'core/Ray.js', 'core/Rectangle.js', 'core/Matrix3.js', 'core/Matrix4.js', 'core/Vertex.js', 'core/Face3.js', 'core/Face4.js', 'core/UV.js', 'core/Geometry.js'],
-	'cameras': ['cameras/Camera.js'],
-	'io': ['io/Loader.js'],
-	'lights': ['lights/Light.js', 'lights/AmbientLight.js', 'lights/DirectionalLight.js', 'lights/PointLight.js'],
-	'objects': ['objects/Object3D.js', 'objects/Particle.js', 'objects/Line.js', 'objects/Mesh.js'],
-	'materials': ['materials/LineColorMaterial.js', 'materials/MeshPhongMaterial.js', 'materials/MeshBitmapMaterial.js', 'materials/MeshColorFillMaterial.js', 'materials/MeshColorStrokeMaterial.js', 'materials/MeshFaceMaterial.js', 'materials/ParticleBitmapMaterial.js', 'materials/ParticleCircleMaterial.js', 'materials/ParticleDOMMaterial.js'],
-	'scenes': ['scenes/Scene.js'],
-	'projector': ['renderers/Projector.js'],
-	'renderers': ['renderers/DOMRenderer.js', 'renderers/CanvasRenderer.js', 'renderers/SVGRenderer.js', 'renderers/WebGLRenderer.js'],
-	'renderables': ['renderers/renderables/RenderableFace3.js', 'renderers/renderables/RenderableFace4.js', 'renderers/renderables/RenderableParticle.js', 'renderers/renderables/RenderableLine.js']
+    'core': ['Three.js', 'core/Color.js', 'core/Vector2.js', 'core/Vector3.js', 'core/Vector4.js', 'core/Ray.js', 'core/Rectangle.js', 'core/Matrix3.js', 'core/Matrix4.js', 'core/Vertex.js', 'core/Face3.js', 'core/Face4.js', 'core/UV.js', 'core/Geometry.js'],
+    'cameras': ['cameras/Camera.js'],
+    'io': ['io/Loader.js'],
+    'lights': ['lights/Light.js', 'lights/AmbientLight.js', 'lights/DirectionalLight.js', 'lights/PointLight.js'],
+    'objects': ['objects/Object3D.js', 'objects/Particle.js', 'objects/Line.js', 'objects/Mesh.js'],
+    'materials': ['materials/LineColorMaterial.js', 'materials/MeshPhongMaterial.js', 'materials/MeshBitmapMaterial.js', 'materials/MeshColorFillMaterial.js', 'materials/MeshColorStrokeMaterial.js', 'materials/MeshFaceMaterial.js', 'materials/ParticleBitmapMaterial.js', 'materials/ParticleCircleMaterial.js', 'materials/ParticleDOMMaterial.js'],
+    'scenes': ['scenes/Scene.js'],
+    'projector': ['renderers/Projector.js'],
+    'renderers': ['renderers/DOMRenderer.js', 'renderers/CanvasRenderer.js', 'renderers/SVGRenderer.js', 'renderers/WebGLRenderer.js'],
+    'renderables': ['renderers/renderables/RenderableFace3.js', 'renderers/renderables/RenderableFace4.js', 'renderers/renderables/RenderableParticle.js', 'renderers/renderables/RenderableLine.js']
 }
 
 
 def merge(files):
-	text = ""
+    text = ""
 
-	for filename in files:
-		with open(os.path.join('..', 'src', filename), 'r') as f:
-			text = text + f.read()
+    for filename in files:
+        with open(os.path.join('..', 'src', filename), 'r') as f:
+            text = text + f.read()
 
-	return text
+    return text
 
 
 def output(text, filename):
-	with open(os.path.join('..', 'build', filename), 'w') as f:
-		f.write(text)
+    with open(os.path.join('..', 'build', filename), 'w') as f:
+        f.write(text)
 
 
 def compress(text):
-	
-	in_tuple = tempfile.mkstemp()
-	with os.fdopen(in_tuple[0], 'w') as handle:
-		handle.write(text)
+    
+    in_tuple = tempfile.mkstemp()
+    with os.fdopen(in_tuple[0], 'w') as handle:
+        handle.write(text)
 
-	out_tuple = tempfile.mkstemp()
-	os.system("java -jar yuicompressor-2.4.2.jar %s --type js -o %s --charset utf-8 -v" % (in_tuple[1], out_tuple[1]))
+    out_tuple = tempfile.mkstemp()
+    os.system("java -jar yuicompressor-2.4.2.jar %s --type js -o %s --charset utf-8 -v" % (in_tuple[1], out_tuple[1]))
 
-	with os.fdopen(out_tuple[0], 'r') as handle:
-		compressed = handle.read()
-	
-	os.unlink(in_tuple[1])
-	os.unlink(out_tuple[1])
+    with os.fdopen(out_tuple[0], 'r') as handle:
+        compressed = handle.read()
+    
+    os.unlink(in_tuple[1])
+    os.unlink(out_tuple[1])
 
-	return compressed
+    return compressed
 
 
 def addHeader(text, endFilename):
-	with open(os.path.join('.', 'REVISION'), 'r') as handle:
-		revision = handle.read().rstrip()
-	
-	return ("// %s r%s - http://github.com/mrdoob/three.js\n" % (endFilename, revision)) + text
+    with open(os.path.join('.', 'REVISION'), 'r') as handle:
+        revision = handle.read().rstrip()
+    
+    return ("// %s r%s - http://github.com/mrdoob/three.js\n" % (endFilename, revision)) + text
 
 
 def getAllFiles():
-	files = []
-	for k in ['core', 'cameras', 'io', 'lights', 'objects', 'materials', 'scenes', 'projector', 'renderers', 'renderables']:
-		files.extend(FILES[k])
-	return files
+    files = []
+    for k in ['core', 'cameras', 'io', 'lights', 'objects', 'materials', 'scenes', 'projector', 'renderers', 'renderables']:
+        files.extend(FILES[k])
+    return files
 
 
 def build(files, outputFilename):
-	print "=" * 40
-	print "Compiling", outputFilename
-	print "=" * 40
+    print "=" * 40
+    print "Compiling", outputFilename
+    print "=" * 40
 
-	output(addHeader(compress(merge(files)), outputFilename), outputFilename)
+    output(addHeader(compress(merge(files)), outputFilename), outputFilename)
 
 
 def buildFull():
-	build(getAllFiles(), 'Three.js')
+    build(getAllFiles(), 'Three.js')
 
 
 def buildCanvas():
 
-	files = getAllFiles()
+    files = getAllFiles()
 
-	files.remove('materials/ParticleDOMMaterial.js')
-	files.remove('renderers/DOMRenderer.js')
-	files.remove('renderers/SVGRenderer.js')
-	files.remove('renderers/WebGLRenderer.js')
+    files.remove('materials/ParticleDOMMaterial.js')
+    files.remove('renderers/DOMRenderer.js')
+    files.remove('renderers/SVGRenderer.js')
+    files.remove('renderers/WebGLRenderer.js')
 
-	build(files, 'ThreeCanvas.js')
+    build(files, 'ThreeCanvas.js')
 
 
 def buildWebGL():
 
-	files = getAllFiles()
+    files = getAllFiles()
 
-	files.remove('materials/ParticleDOMMaterial.js')
-	files.remove('renderers/Projector.js')
-	files.remove('renderers/DOMRenderer.js')
-	files.remove('renderers/CanvasRenderer.js')
-	files.remove('renderers/SVGRenderer.js')
-	
-	for f in FILES['renderables']:
-		files.remove(f)
+    files.remove('materials/ParticleDOMMaterial.js')
+    files.remove('renderers/Projector.js')
+    files.remove('renderers/DOMRenderer.js')
+    files.remove('renderers/CanvasRenderer.js')
+    files.remove('renderers/SVGRenderer.js')
+    
+    for f in FILES['renderables']:
+        files.remove(f)
 
-	build(files, 'ThreeWebGL.js')
+    build(files, 'ThreeWebGL.js')
 
 
 def buildSVG():
 
-	files = getAllFiles()
+    files = getAllFiles()
 
-	files.remove('materials/MeshPhongMaterial.js')
-	files.remove('materials/ParticleDOMMaterial.js')
-	files.remove('renderers/DOMRenderer.js')
-	files.remove('renderers/CanvasRenderer.js')
-	files.remove('renderers/WebGLRenderer.js')
+    files.remove('materials/MeshPhongMaterial.js')
+    files.remove('materials/ParticleDOMMaterial.js')
+    files.remove('renderers/DOMRenderer.js')
+    files.remove('renderers/CanvasRenderer.js')
+    files.remove('renderers/WebGLRenderer.js')
 
-	build(files, 'ThreeSVG.js')
+    build(files, 'ThreeSVG.js')
 
 
 def buildDOM():
 
-	files = []
-	for k in ['core', 'cameras', 'io', 'objects', 'scenes', 'projector']:
-		files.extend(FILES[k])
-	
-	files.remove('core/Geometry.js')
-	files.remove('objects/Line.js')
-	files.remove('objects/Mesh.js')
-	files.append('materials/ParticleDOMMaterial.js')
-	files.append('renderers/DOMRenderer.js')
-	files.append('renderers/renderables/RenderableParticle.js')
+    files = []
+    for k in ['core', 'cameras', 'io', 'objects', 'scenes', 'projector']:
+        files.extend(FILES[k])
+    
+    files.remove('core/Geometry.js')
+    files.remove('objects/Line.js')
+    files.remove('objects/Mesh.js')
+    files.append('materials/ParticleDOMMaterial.js')
+    files.append('renderers/DOMRenderer.js')
+    files.append('renderers/renderables/RenderableParticle.js')
 
-	build(files, 'ThreeDOM.js')
+    build(files, 'ThreeDOM.js')
 
 
 def buildDebug():
 
-	outputFilename = 'ThreeDebug.js'
+    outputFilename = 'ThreeDebug.js'
 
-	print "=" * 40
-	print "Compiling", outputFilename
-	print "=" * 40
+    print "=" * 40
+    print "Compiling", outputFilename
+    print "=" * 40
 
-	files = getAllFiles()
-	text = merge(files)
+    files = getAllFiles()
+    text = merge(files)
 
-	position = 0
-	while True:
-		position = text.find("/* DEBUG", position)
-		if position == -1:
-			break
-		text = text[0:position] + text[position+8:]
-		position = text.find("*/", position)
-		text = text[0:position] + text[position+2:]
+    position = 0
+    while True:
+        position = text.find("/* DEBUG", position)
+        if position == -1:
+            break
+        text = text[0:position] + text[position+8:]
+        position = text.find("*/", position)
+        text = text[0:position] + text[position+2:]
 
-	output(addHeader(compress(text), outputFilename), outputFilename)
+    output(addHeader(compress(text), outputFilename), outputFilename)
 
 
 def parse_args():
 
-	parser = argparse.ArgumentParser(description='Build and compress Three.js')
-	parser.add_argument('--full', help='Build Three.js', action='store_const', const=True, default=True)
-	parser.add_argument('--canvas', help='Build ThreeCanvas.js', action='store_true')
-	parser.add_argument('--webgl', help='Build ThreeWebGL.js', action='store_true')
-	parser.add_argument('--svg', help='Build ThreeSVG.js', action='store_true')
-	parser.add_argument('--dom', help='Build ThreeDOM.js', action='store_true')
-	parser.add_argument('--debug', help='Build ThreeDebug.js', action='store_true')
-	parser.add_argument('--all', help='Build all Three.js versions', action='store_true')
-
-	return parser.parse_args()
+    if ap:
+        parser = argparse.ArgumentParser(description='Build and compress Three.js')
+        parser.add_argument('--full', help='Build Three.js', action='store_const', const=True, default=True)
+        parser.add_argument('--canvas', help='Build ThreeCanvas.js', action='store_true')
+        parser.add_argument('--webgl', help='Build ThreeWebGL.js', action='store_true')
+        parser.add_argument('--svg', help='Build ThreeSVG.js', action='store_true')
+        parser.add_argument('--dom', help='Build ThreeDOM.js', action='store_true')
+        parser.add_argument('--debug', help='Build ThreeDebug.js', action='store_true')
+        parser.add_argument('--all', help='Build all Three.js versions', action='store_true')
+        
+        args = parser.parse_args()
+        
+    else:
+        parser = optparse.OptionParser(description='Build and compress Three.js')
+        parser.add_option('--full', dest='full', help='Build Three.js', action='store_const', const=True, default=True)
+        parser.add_option('--canvas', dest='canvas', help='Build ThreeCanvas.js', action='store_true')
+        parser.add_option('--webgl', dest='webgl', help='Build ThreeWebGL.js', action='store_true')
+        parser.add_option('--svg', dest='svg', help='Build ThreeSVG.js', action='store_true')
+        parser.add_option('--dom', dest='dom', help='Build ThreeDOM.js', action='store_true')
+        parser.add_option('--debug', dest='debug', help='Build ThreeDebug.js', action='store_true')
+        parser.add_option('--all', dest='all', help='Build all Three.js versions', action='store_true')
+
+        args, remainder = parser.parse_args()
+    
+    return args
 
 
 def main(argv=None):
 
-	args = parse_args()
+    args = parse_args()
 
-	if args.full or args.all:
-		buildFull()
+    if args.full or args.all:
+        buildFull()
 
-	if args.canvas or args.all:
-		buildCanvas()
+    if args.canvas or args.all:
+        buildCanvas()
 
-	if args.webgl or args.all:
-		buildWebGL()
+    if args.webgl or args.all:
+        buildWebGL()
 
-	if args.svg or args.all:
-		buildSVG()
+    if args.svg or args.all:
+        buildSVG()
 
-	if args.dom or args.all:
-		buildDOM()
+    if args.dom or args.all:
+        buildDOM()
 
-	if args.debug or args.all:
-		buildDebug()
+    if args.debug or args.all:
+        buildDebug()
 
 
 if __name__ == "__main__":
-	main()
+    main()
 

+ 2 - 2
utils/exporters/convert_obj_threejs.py

@@ -96,7 +96,7 @@ How to get proper OBJ + MTL files with Blender
 ------           
 Author 
 ------
-AlteredQualia http://alteredqualia.com            
+AlteredQualia http://alteredqualia.com
 
 """
 
@@ -806,7 +806,7 @@ def convert(infile, outfile):
 # #############################################################################
 def usage():
     print "Usage: %s -i filename.obj -o filename.js [-a center|top|bottom] [-s flat|smooth]" % os.path.basename(sys.argv[0])
-        
+
 # #####################################################
 # Main
 # #####################################################