瀏覽代碼

Merge remote branch 'alteredq/experimental' into experimental

Mr.doob 14 年之前
父節點
當前提交
3a732f7c89

文件差異過大導致無法顯示
+ 176 - 176
build/Three.js


文件差異過大導致無法顯示
+ 0 - 0
examples/obj/female02/Female02_slim.js


文件差異過大導致無法顯示
+ 1 - 1
examples/obj/lucy/Lucy100k_slim.js


文件差異過大導致無法顯示
+ 0 - 0
examples/obj/male02/Male02_slim.js


文件差異過大導致無法顯示
+ 0 - 0
examples/obj/torus/Torus_slim.js


文件差異過大導致無法顯示
+ 0 - 0
examples/obj/walt/WaltHead_slim.js


+ 6 - 90
examples/webgl_geometry_large_mesh.html

@@ -44,91 +44,7 @@
 
 		<pre id="log"></pre>
 
-<!--
 		<script type="text/javascript" src="../build/Three.js"></script>
--->
-		<script type="text/javascript" src="../src/Three.js"></script>
-		<script type="text/javascript" src="../src/core/Color.js"></script>
-		<script type="text/javascript" src="../src/core/Vector2.js"></script>
-		<script type="text/javascript" src="../src/core/Vector3.js"></script>
-		<script type="text/javascript" src="../src/core/Vector4.js"></script>
-		<script type="text/javascript" src="../src/core/Ray.js"></script>
-		<script type="text/javascript" src="../src/core/Rectangle.js"></script>
-		<script type="text/javascript" src="../src/core/Matrix3.js"></script>
-		<script type="text/javascript" src="../src/core/Matrix4.js"></script>
-		<script type="text/javascript" src="../src/core/Object3D.js"></script>
-		<script type="text/javascript" src="../src/core/Quaternion.js"></script>
-		<script type="text/javascript" src="../src/core/Vertex.js"></script>
-		<script type="text/javascript" src="../src/core/Face3.js"></script>
-		<script type="text/javascript" src="../src/core/Face4.js"></script>
-		<script type="text/javascript" src="../src/core/UV.js"></script>
-		<script type="text/javascript" src="../src/core/Geometry.js"></script>
-		<script type="text/javascript" src="../src/core/Spline.js"></script>
-		<script type="text/javascript" src="../src/animation/AnimationHandler.js"></script>
-		<script type="text/javascript" src="../src/animation/Animation.js"></script>
-		<script type="text/javascript" src="../src/cameras/Camera.js"></script>
-		<script type="text/javascript" src="../src/lights/Light.js"></script>
-		<script type="text/javascript" src="../src/lights/AmbientLight.js"></script>
-		<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
-		<script type="text/javascript" src="../src/lights/PointLight.js"></script>
-		<script type="text/javascript" src="../src/materials/Material.js"></script>
-		<script type="text/javascript" src="../src/materials/Mappings.js"></script>
-		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshLambertMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshPhongMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshDepthMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshNormalMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshShaderMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/Texture.js"></script>
-		<script type="text/javascript" src="../src/materials/RenderTarget.js"></script>
-		<script type="text/javascript" src="../src/materials/Uniforms.js"></script>
-		<script type="text/javascript" src="../src/objects/Particle.js"></script>
-		<script type="text/javascript" src="../src/objects/ParticleSystem.js"></script>
-		<script type="text/javascript" src="../src/objects/Line.js"></script>
-		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
-		<script type="text/javascript" src="../src/objects/Bone.js"></script>
-		<script type="text/javascript" src="../src/objects/SkinnedMesh.js"></script>
-		<script type="text/javascript" src="../src/objects/Ribbon.js"></script>
-		<script type="text/javascript" src="../src/objects/Sound.js"></script>
-		<script type="text/javascript" src="../src/objects/LOD.js"></script>
-		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
-		<script type="text/javascript" src="../src/scenes/Fog.js"></script>
-		<script type="text/javascript" src="../src/scenes/FogExp2.js"></script>
-		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
-		<script type="text/javascript" src="../src/renderers/DOMRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/WebGLShaders.js"></script>
-		<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/SoundRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableVertex.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableFace3.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableObject.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableParticle.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableLine.js"></script>
-		<script type="text/javascript" src="../src/extras/GeometryUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/ImageUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/SceneUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/ShaderUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/cameras/QuakeCamera.js"></script>
-		<script type="text/javascript" src="../src/extras/cameras/PathCamera.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Cube.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Cylinder.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Icosahedron.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Lathe.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Plane.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Sphere.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Torus.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/TorusKnot.js"></script>
-		<script type="text/javascript" src="../src/extras/io/Loader.js"></script>
-		<script type="text/javascript" src="../src/extras/io/JSONLoader.js"></script>
-		<script type="text/javascript" src="../src/extras/io/BinaryLoader.js"></script>
-		<script type="text/javascript" src="../src/extras/objects/MarchingCubes.js"></script>
 		
 		<script type="text/javascript" src="js/RequestAnimationFrame.js"></script>
 		<script type="text/javascript" src="js/Stats.js"></script>
@@ -256,23 +172,23 @@
 				bcanvas.addEventListener( "click", toggleCanvas, false );
 				bwebgl.addEventListener( "click", toggleWebGL, false );
 
-				//loader = new THREE.BinaryLoader( true );
-				loader = new THREE.JSONLoader( true );
+				loader = new THREE.BinaryLoader( true );
+				//loader = new THREE.JSONLoader( true );
 				document.body.appendChild( loader.statusDomElement );
 
 				var s = (new Date).getTime(),
 					callback = function( geometry ) { createScene( geometry, s ) };
 
-				loader.load( { model: 'obj/lucy/Lucy100k_slim.js', callback: callback } );
-				//loader.load( { model: 'obj/lucy/Lucy100k_bin.js', callback: callback } );
+				//loader.load( { model: 'obj/lucy/Lucy100k_slim.js', callback: callback } );
+				loader.load( { model: 'obj/lucy/Lucy100k_bin.js', callback: callback } );
 
 			}
 
 
 			function createScene( geometry, start ) {
 
-				addMesh( geometry, 0.75, 900, 0, 0, 0,0,0, new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x030303, specular: 0x990000, shininess: 30 } ) );
-				addMesh( geometry, 0.75, 300, 0, 0, 0,0,0, new THREE.MeshFaceMaterial( ) );
+				addMesh( geometry, 0.75, 900, 0, 0,  0,0,0, new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x030303, specular: 0x990000, shininess: 30 } ) );
+				addMesh( geometry, 0.75, 300, 0, 0,  0,0,0, new THREE.MeshFaceMaterial( ) );
 				addMesh( geometry, 0.75, -300, 0, 0, 0,0,0, new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x111111, specular: 0xffaa00, shininess: 10 } ) );
 				addMesh( geometry, 0.75, -900, 0, 0, 0,0,0, new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x555555, specular: 0x666666, shininess: 10 } ) );
 

+ 85 - 2
examples/webgl_geometry_minecraft.html

@@ -39,9 +39,92 @@
 
 		<div id="container"><br /><br /><br /><br /><br />Generating world...</div>
 		<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - <a href="http://www.minecraft.net/" target="_blank">minecraft</a> demo. featuring <a href="http://painterlypack.net/" target="_blank">painterly pack</a><br />(left click: forward, right click: backward)</div>
-
+<!--
 		<script type="text/javascript" src="../build/Three.js"></script>
-
+-->
+		<script type="text/javascript" src="../src/Three.js"></script>
+		<script type="text/javascript" src="../src/core/Color.js"></script>
+		<script type="text/javascript" src="../src/core/Vector2.js"></script>
+		<script type="text/javascript" src="../src/core/Vector3.js"></script>
+		<script type="text/javascript" src="../src/core/Vector4.js"></script>
+		<script type="text/javascript" src="../src/core/Ray.js"></script>
+		<script type="text/javascript" src="../src/core/Rectangle.js"></script>
+		<script type="text/javascript" src="../src/core/Matrix3.js"></script>
+		<script type="text/javascript" src="../src/core/Matrix4.js"></script>
+		<script type="text/javascript" src="../src/core/Object3D.js"></script>
+		<script type="text/javascript" src="../src/core/Quaternion.js"></script>
+		<script type="text/javascript" src="../src/core/Vertex.js"></script>
+		<script type="text/javascript" src="../src/core/Face3.js"></script>
+		<script type="text/javascript" src="../src/core/Face4.js"></script>
+		<script type="text/javascript" src="../src/core/UV.js"></script>
+		<script type="text/javascript" src="../src/core/Geometry.js"></script>
+		<script type="text/javascript" src="../src/core/Spline.js"></script>
+		<script type="text/javascript" src="../src/animation/AnimationHandler.js"></script>
+		<script type="text/javascript" src="../src/animation/Animation.js"></script>
+		<script type="text/javascript" src="../src/cameras/Camera.js"></script>
+		<script type="text/javascript" src="../src/lights/Light.js"></script>
+		<script type="text/javascript" src="../src/lights/AmbientLight.js"></script>
+		<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
+		<script type="text/javascript" src="../src/lights/PointLight.js"></script>
+		<script type="text/javascript" src="../src/materials/Material.js"></script>
+		<script type="text/javascript" src="../src/materials/Mappings.js"></script>
+		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshLambertMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshPhongMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshDepthMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshNormalMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshShaderMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleCanvasMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/Texture.js"></script>
+		<script type="text/javascript" src="../src/materials/RenderTarget.js"></script>
+		<script type="text/javascript" src="../src/materials/Uniforms.js"></script>
+		<script type="text/javascript" src="../src/objects/Particle.js"></script>
+		<script type="text/javascript" src="../src/objects/ParticleSystem.js"></script>
+		<script type="text/javascript" src="../src/objects/Line.js"></script>
+		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
+		<script type="text/javascript" src="../src/objects/Bone.js"></script>
+		<script type="text/javascript" src="../src/objects/SkinnedMesh.js"></script>
+		<script type="text/javascript" src="../src/objects/Ribbon.js"></script>
+		<script type="text/javascript" src="../src/objects/Sound.js"></script>
+		<script type="text/javascript" src="../src/objects/LOD.js"></script>
+		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
+		<script type="text/javascript" src="../src/scenes/Fog.js"></script>
+		<script type="text/javascript" src="../src/scenes/FogExp2.js"></script>
+		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
+		<script type="text/javascript" src="../src/renderers/DOMRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/WebGLShaders.js"></script>
+		<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/SoundRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableVertex.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableFace3.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableObject.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableParticle.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableLine.js"></script>
+		<script type="text/javascript" src="../src/extras/GeometryUtils.js"></script>
+		<script type="text/javascript" src="../src/extras/ImageUtils.js"></script>
+		<script type="text/javascript" src="../src/extras/SceneUtils.js"></script>
+		<script type="text/javascript" src="../src/extras/ShaderUtils.js"></script>
+		<script type="text/javascript" src="../src/extras/cameras/QuakeCamera.js"></script>
+		<script type="text/javascript" src="../src/extras/cameras/PathCamera.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Cube.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Cylinder.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Icosahedron.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Lathe.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Plane.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Sphere.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/Torus.js"></script>
+		<script type="text/javascript" src="../src/extras/geometries/TorusKnot.js"></script>
+		<script type="text/javascript" src="../src/extras/io/Loader.js"></script>
+		<script type="text/javascript" src="../src/extras/io/JSONLoader.js"></script>
+		<script type="text/javascript" src="../src/extras/io/BinaryLoader.js"></script>
+		<script type="text/javascript" src="../src/extras/objects/MarchingCubes.js"></script>
+		
 		<script type="text/javascript" src="js/ImprovedNoise.js"></script>
 
 		<script type="text/javascript" src="js/Detector.js"></script>

+ 3 - 3
examples/webgl_geometry_minecraft_ao.html

@@ -291,7 +291,7 @@
 
 				function setUVTile( face, s, t ) {
 
-					var j, uv = cube.uvs[ face ];
+					var j, uv = cube.faceVertexUvs[ 0 ][ face ];
 					for ( j = 0; j < uv.length; j++ ) {
 
 						uv[ j ].u += s * (unit+2*padding);
@@ -372,9 +372,9 @@
 
 						// set UV tiles
 
-						for ( i = 0; i < cube.uvs.length; i++ ) {
+						for ( i = 0; i < cube.faceVertexUvs[ 0 ].length; i++ ) {
 
-							uv = cube.uvs[ i ];
+							uv = cube.faceVertexUvs[ 0 ][ i ];
 
 							for ( j = 0; j < uv.length; j++ ) {
 

+ 3 - 86
examples/webgl_objconvert_test.html

@@ -42,91 +42,8 @@
 
 		<pre id="log"></pre>
 
-<!--
 		<script type="text/javascript" src="../build/Three.js"></script>
--->
-		<script type="text/javascript" src="../src/Three.js"></script>
-		<script type="text/javascript" src="../src/core/Color.js"></script>
-		<script type="text/javascript" src="../src/core/Vector2.js"></script>
-		<script type="text/javascript" src="../src/core/Vector3.js"></script>
-		<script type="text/javascript" src="../src/core/Vector4.js"></script>
-		<script type="text/javascript" src="../src/core/Ray.js"></script>
-		<script type="text/javascript" src="../src/core/Rectangle.js"></script>
-		<script type="text/javascript" src="../src/core/Matrix3.js"></script>
-		<script type="text/javascript" src="../src/core/Matrix4.js"></script>
-		<script type="text/javascript" src="../src/core/Object3D.js"></script>
-		<script type="text/javascript" src="../src/core/Quaternion.js"></script>
-		<script type="text/javascript" src="../src/core/Vertex.js"></script>
-		<script type="text/javascript" src="../src/core/Face3.js"></script>
-		<script type="text/javascript" src="../src/core/Face4.js"></script>
-		<script type="text/javascript" src="../src/core/UV.js"></script>
-		<script type="text/javascript" src="../src/core/Geometry.js"></script>
-		<script type="text/javascript" src="../src/core/Spline.js"></script>
-		<script type="text/javascript" src="../src/animation/AnimationHandler.js"></script>
-		<script type="text/javascript" src="../src/animation/Animation.js"></script>
-		<script type="text/javascript" src="../src/cameras/Camera.js"></script>
-		<script type="text/javascript" src="../src/lights/Light.js"></script>
-		<script type="text/javascript" src="../src/lights/AmbientLight.js"></script>
-		<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
-		<script type="text/javascript" src="../src/lights/PointLight.js"></script>
-		<script type="text/javascript" src="../src/materials/Material.js"></script>
-		<script type="text/javascript" src="../src/materials/Mappings.js"></script>
-		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshLambertMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshPhongMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshDepthMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshNormalMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshShaderMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/Texture.js"></script>
-		<script type="text/javascript" src="../src/materials/RenderTarget.js"></script>
-		<script type="text/javascript" src="../src/materials/Uniforms.js"></script>
-		<script type="text/javascript" src="../src/objects/Particle.js"></script>
-		<script type="text/javascript" src="../src/objects/ParticleSystem.js"></script>
-		<script type="text/javascript" src="../src/objects/Line.js"></script>
-		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
-		<script type="text/javascript" src="../src/objects/Bone.js"></script>
-		<script type="text/javascript" src="../src/objects/SkinnedMesh.js"></script>
-		<script type="text/javascript" src="../src/objects/Ribbon.js"></script>
-		<script type="text/javascript" src="../src/objects/Sound.js"></script>
-		<script type="text/javascript" src="../src/objects/LOD.js"></script>
-		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
-		<script type="text/javascript" src="../src/scenes/Fog.js"></script>
-		<script type="text/javascript" src="../src/scenes/FogExp2.js"></script>
-		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
-		<script type="text/javascript" src="../src/renderers/DOMRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/WebGLShaders.js"></script>
-		<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/SoundRenderer.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableObject.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableFace3.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableParticle.js"></script>
-		<script type="text/javascript" src="../src/renderers/renderables/RenderableLine.js"></script>
-		<script type="text/javascript" src="../src/extras/GeometryUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/ImageUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/SceneUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/ShaderUtils.js"></script>
-		<script type="text/javascript" src="../src/extras/cameras/QuakeCamera.js"></script>
-		<script type="text/javascript" src="../src/extras/cameras/PathCamera.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Cube.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Cylinder.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Icosahedron.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Lathe.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Plane.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Sphere.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/Torus.js"></script>
-		<script type="text/javascript" src="../src/extras/geometries/TorusKnot.js"></script>
-		<script type="text/javascript" src="../src/extras/io/Loader.js"></script>
-		<script type="text/javascript" src="../src/extras/io/JSONLoader.js"></script>
-		<script type="text/javascript" src="../src/extras/io/BinaryLoader.js"></script>
-		<script type="text/javascript" src="../src/extras/objects/MarchingCubes.js"></script>
-		
+
 		<script type="text/javascript" src="js/Detector.js"></script>
 		<script type="text/javascript" src="js/RequestAnimationFrame.js"></script>
 		<script type="text/javascript" src="js/Stats.js"></script>
@@ -279,8 +196,8 @@
 					callbackMale   = function( geometry ) { createScene( geometry,  90, 50, FLOOR, 105 ) },
 					callbackFemale = function( geometry ) { createScene( geometry, -80, 50, FLOOR, 0 ) };
 
-				//loader.load( { model: "obj/male02/Male02_slim.js", callback: callbackMale } );
-				//loader.load( { model: "obj/female02/Female02_slim.js", callback: callbackFemale } );
+				loader.load( { model: "obj/male02/Male02_slim.js", callback: callbackMale } );
+				loader.load( { model: "obj/female02/Female02_slim.js", callback: callbackFemale } );
 
 				//loader.loadBinary( { model: "obj/male02/Male02_bin.js", callback: callbackMale } );
 				//loader.loadBinary( { model: "obj/female02/Female02_bin.js", callback: callbackFemale } );

+ 2 - 2
src/core/Geometry.js

@@ -14,8 +14,8 @@ THREE.Geometry = function () {
 
 	this.faces = [];
 
-	this.faceUvs = [];
-	this.faceVertexUvs = [];
+	this.faceUvs = [[]];
+	this.faceVertexUvs = [[]];
 
 	this.morphTargets = [];
 

+ 3 - 3
src/extras/GeometryUtils.js

@@ -5,14 +5,14 @@ var GeometryUtils = {
 		var isMesh = object2 instanceof THREE.Mesh,
 		vertexPosition = geometry1.vertices.length,
 		facePosition = geometry1.faces.length,
-		uvPosition = geometry1.uvs.length,
+		uvPosition = geometry1.faceVertexUvs[ 0 ].length,
 		geometry2 = isMesh ? object2.geometry : object2,
 		vertices1 = geometry1.vertices,
 		vertices2 = geometry2.vertices,
 		faces1 = geometry1.faces,
 		faces2 = geometry2.faces,
-		uvs1 = geometry1.uvs,
-		uvs2 = geometry2.uvs;
+		uvs1 = geometry1.faceVertexUvs[ 0 ],
+		uvs2 = geometry2.faceVertexUvs[ 0 ];
 
 		isMesh && object2.matrixAutoUpdate && object2.updateMatrix();
 

+ 1 - 3
src/extras/geometries/Cube.js

@@ -6,7 +6,7 @@
 var Cube = function ( width, height, depth, segmentsWidth, segmentsHeight, segmentsDepth, materials, flipped, sides ) {
 
 	THREE.Geometry.call( this );
-
+	
 	var scope = this,
 	width_half = width / 2,
 	height_half = height / 2,
@@ -106,8 +106,6 @@ var Cube = function ( width, height, depth, segmentsWidth, segmentsHeight, segme
 			}
 
 		}
-
-		scope.faceVertexUvs[ 0 ] = [];
 		
 		for( iy = 0; iy < gridY; iy++ ) {
 

+ 2 - 2
src/extras/geometries/Lathe.js

@@ -5,7 +5,7 @@
 function Lathe( points, steps, angle ) {
 
 	THREE.Geometry.call( this );
-
+	
 	this.steps = steps || 12;
 	this.angle = angle || 2 * Math.PI;
 
@@ -47,7 +47,7 @@ function Lathe( points, steps, angle ) {
 		for ( var j = 0; j < oldInds.length - 1; j ++ ) {
 
 			this.faces.push( new THREE.Face4( newInds[ j ], newInds[ j + 1 ], oldInds[ j + 1 ], oldInds[ j ] ) );
-			this.uvs.push( [
+			this.faceVertexUvs[ 0 ].push( [
 
 				new THREE.UV( r / angle, j / points.length ),
 				new THREE.UV( r / angle, ( j + 1 ) / points.length ),

+ 0 - 2
src/extras/geometries/Plane.js

@@ -30,8 +30,6 @@ var Plane = function ( width, height, segmentsWidth, segmentsHeight ) {
 		}
 
 	}
-
-	this.faceVertexUvs[ 0 ] = [];
 	
 	for( iy = 0; iy < gridY; iy++ ) {
 

+ 0 - 2
src/extras/geometries/Sphere.js

@@ -45,8 +45,6 @@ var Sphere = function ( radius, segmentsWidth, segmentsHeight ) {
 
 	var n1, n2, n3, iVerNum = aVtc.length;
 
-	this.faceVertexUvs[ 0 ] = [];
-
 	for ( j = 0; j < iVerNum; j++ ) {
 
 		var iHorNum = aVtc[ j ].length;

+ 23 - 12
src/extras/geometries/Torus.js

@@ -13,55 +13,66 @@ var Torus = function ( radius, tube, segmentsR, segmentsT ) {
 	this.segmentsT = segmentsT || 6;
 
 	var temp_uv = [];
+	
+	THREE.Geometry.call( this );
 
-	THREE.Geometry.call(this);
+	for ( var j = 0; j <= this.segmentsR; ++j ) {
+
+		for ( var i = 0; i <= this.segmentsT; ++i ) {
 
-	for (var j = 0; j <= this.segmentsR; ++j) {
-		for (var i = 0; i <= this.segmentsT; ++i) {
 			var u = i / this.segmentsT * 2 * Math.PI;
 			var v = j / this.segmentsR * 2 * Math.PI;
 			var x = (this.radius + this.tube*Math.cos(v))*Math.cos(u);
 			var y = (this.radius + this.tube*Math.cos(v))*Math.sin(u);
 			var z = this.tube*Math.sin(v);
 
-			vert(x, y, z);
+			vert( x, y, z );
+
+			temp_uv.push( [i/this.segmentsT, 1 - j/this.segmentsR] );
 
-			temp_uv.push([i/this.segmentsT, 1 - j/this.segmentsR]);
 		}
 	}
 
 
-	for (var j = 1; j <= this.segmentsR; ++j) {
-		for (var i = 1; i <= this.segmentsT; ++i) {
+	for ( var j = 1; j <= this.segmentsR; ++j ) {
+
+		for ( var i = 1; i <= this.segmentsT; ++i ) {
+
 			var a = (this.segmentsT + 1)*j + i;
 			var b = (this.segmentsT + 1)*j + i - 1;
 			var c = (this.segmentsT + 1)*(j - 1) + i - 1;
 			var d = (this.segmentsT + 1)*(j - 1) + i;
 
-			f4(a,b,c,d);
+			f4( a, b, c,d );
 
-			this.uvs.push( [new THREE.UV( temp_uv[a][0], temp_uv[a][1] ),
+			this.faceVertexUvs[ 0 ].push( [new THREE.UV( temp_uv[a][0], temp_uv[a][1] ),
 							new THREE.UV( temp_uv[b][0], temp_uv[b][1] ),
 							new THREE.UV( temp_uv[c][0], temp_uv[c][1] ),
 							new THREE.UV( temp_uv[d][0], temp_uv[d][1] )
 							] );
 		}
+
 	}
 
 	delete temp_uv;
+
 	this.computeCentroids();
 	this.computeFaceNormals();
 	this.computeVertexNormals();
 
 	function vert( x, y, z ) {
+
 		scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
-	}
+
+	};
 
 	function f4( a, b, c, d ) {
+
 		scope.faces.push( new THREE.Face4( a, b, c, d ) );
-	}
 
-}
+	};
+
+};
 
 Torus.prototype = new THREE.Geometry();
 Torus.prototype.constructor = Torus;

+ 9 - 6
src/extras/geometries/TorusKnot.js

@@ -7,7 +7,7 @@ var TorusKnot = function ( radius, tube, segmentsR, segmentsT, p, q, heightScale
 
 	var scope = this;
 	THREE.Geometry.call( this );
-
+	
 	this.radius = radius || 200;
 	this.tube = tube || 40;
 	this.segmentsR = segmentsR || 64;
@@ -26,6 +26,7 @@ var TorusKnot = function ( radius, tube, segmentsR, segmentsT, p, q, heightScale
 		this.grid[ i ] = new Array( this.segmentsT );
 
 		for ( var j = 0; j < this.segmentsT; ++ j ) {
+
 			var u = i / this.segmentsR * 2 * this.p * Math.PI;
 			var v = j / this.segmentsT * 2 * Math.PI;
 			var p = getPos( u, v, this.q, this.p, this.radius, this.heightScale );
@@ -66,10 +67,12 @@ var TorusKnot = function ( radius, tube, segmentsR, segmentsT, p, q, heightScale
 			var uvc = new THREE.UV( i / this.segmentsR, ( j + 1 ) / this.segmentsT );
 			var uvd = new THREE.UV( ( i + 1 ) / this.segmentsR, ( j + 1 ) / this.segmentsT );
 
-			f3(a, b, c);
-			this.uvs.push( [ uva,uvb,uvc ] );
-			f3(d, c, b);
-			this.uvs.push( [ uvd,uvc,uvb ] );
+			f3( a, b, c );
+			this.faceVertexUvs[ 0 ].push( [ uva,uvb,uvc ] );
+			
+			f3( d, c, b );
+			this.faceVertexUvs[ 0 ].push( [ uvd,uvc,uvb ] );
+
 		}
 	}
 
@@ -106,7 +109,7 @@ var TorusKnot = function ( radius, tube, segmentsR, segmentsT, p, q, heightScale
 
 	}
 
-}
+};
 
 TorusKnot.prototype = new THREE.Geometry();
 TorusKnot.prototype.constructor = TorusKnot;

+ 2 - 2
src/extras/io/BinaryLoader.js

@@ -682,14 +682,14 @@ THREE.BinaryLoader.prototype = {
 	f3: function( scope, a, b, c, mi ) {
 
 		var material = scope.materials[ mi ];
-		scope.faces.push( new THREE.Face3( a, b, c, null, material ) );
+		scope.faces.push( new THREE.Face3( a, b, c, null, null, material ) );
 
 	},
 
 	f4: function( scope, a, b, c, d, mi ) {
 
 		var material = scope.materials[ mi ];
-		scope.faces.push( new THREE.Face4( a, b, c, d, null, material ) );
+		scope.faces.push( new THREE.Face4( a, b, c, d, null, null, material ) );
 
 	},
 

+ 32 - 24
src/extras/io/JSONLoader.js

@@ -23,8 +23,6 @@ THREE.JSONLoader.prototype = {
 	//		- texture_path (optional: if not specified, textures will be assumed to be in the same folder as JS model file)
 
 	load: function ( parameters ) {
-
-		console.log( parameters );
 		
 		var url = parameters.model,
 			callback = parameters.callback, 
@@ -35,8 +33,6 @@ THREE.JSONLoader.prototype = {
 		
 		worker.onmessage = function( event ) {
 			
-			console.log( event.data );
-			
 			THREE.JSONLoader.prototype.createModel( event.data, callback, texture_path );
 
 		};
@@ -54,7 +50,7 @@ THREE.JSONLoader.prototype = {
 			THREE.Geometry.call( this );
 
 			THREE.Loader.prototype.init_materials( scope, json.materials, texture_path );
-
+			
 			parse();
 			init_skin();
 
@@ -78,9 +74,10 @@ THREE.JSONLoader.prototype = {
 				
 				var i, j, 
 				
-				type, offset,
+				offset, zLength,
 
-				isTriangle, 
+				type,
+				isQuad, 
 				hasMaterial, 
 				hasFaceUv, hasFaceVertexUv,
 				hasFaceNormal, hasFaceVertexNormal,
@@ -92,8 +89,16 @@ THREE.JSONLoader.prototype = {
 				vertices = json.vertices,
 				normals = json.normals,
 
-				nUvLayers = json.uvs.length;
+				nUvLayers = 0;
+				
+				// discard empty arrays
+				
+				for ( i = 0; i < json.uvs.length; i++ ) {
+					
+					if ( json.uvs[ i ].length ) nUvLayers ++;
 
+				}
+				
 				for ( i = 0; i < nUvLayers; i++ ) {
 
 					scope.faceUvs[ i ] = [];
@@ -102,8 +107,9 @@ THREE.JSONLoader.prototype = {
 				}
 
 				offset = 0;
-
-				while ( vertices[ offset ] ) {
+				zLength = vertices.length;
+				
+				while ( offset < zLength ) {
 
 					vertex = new THREE.Vertex();
 					
@@ -114,14 +120,15 @@ THREE.JSONLoader.prototype = {
 					scope.vertices.push( vertex );
 
 				}
-
+				
 				offset = 0;
+				zLength = faces.length;
 
-				while ( faces[ offset ] ) {
+				while ( offset < zLength ) {
 
-					type = faces[ offset ];
+					type = faces[ offset ++ ];
 
-					isTriangle          = isBitSet( type, 0 );
+					isQuad          	= isBitSet( type, 0 );
 					hasMaterial         = isBitSet( type, 1 );
 					hasFaceUv           = isBitSet( type, 2 );
 					hasFaceVertexUv     = isBitSet( type, 3 );
@@ -130,34 +137,35 @@ THREE.JSONLoader.prototype = {
 					hasFaceColor	    = isBitSet( type, 6 );
 					hasFaceVertexColor  = isBitSet( type, 7 );
 
+					//console.log("type", type, "bits", isQuad, hasMaterial, hasFaceUv, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);
 
-					if ( isTriangle ) {
+					if ( isQuad ) {
 
-						face = new THREE.Face3();
-					
+						face = new THREE.Face4();
+						
 						face.a = faces[ offset ++ ];
 						face.b = faces[ offset ++ ];
 						face.c = faces[ offset ++ ];
+						face.d = faces[ offset ++ ];
 
-						nVertices = 3;
+						nVertices = 4;
 
 					} else {
 
-						face = new THREE.Face4();
-						
+						face = new THREE.Face3();
+					
 						face.a = faces[ offset ++ ];
 						face.b = faces[ offset ++ ];
 						face.c = faces[ offset ++ ];
-						face.d = faces[ offset ++ ];
 
-						nVertices = 4;
+						nVertices = 3;
 
 					}
-
+					
 					if ( hasMaterial ) {
 
 						materialIndex = faces[ offset ++ ];
-						face.materials = [ scope.materials[ materialIndex ] ];
+						face.materials = scope.materials[ materialIndex ];
 
 					}
 

+ 3 - 4
src/renderers/WebGLRenderer.js

@@ -361,7 +361,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		normalType = bufferGuessNormalType( materials, geometryGroup, object );
 		vertexColorType = bufferGuessVertexColorType( materials, geometryGroup, object );
 
-		console.log(uvType, normalType, vertexColorType, geometry, materials );
+		//console.log(uvType, normalType, vertexColorType, object, geometryGroup, materials );
 
 		geometryGroup.__vertexArray = new Float32Array( nvertices * 3 );
 		
@@ -2889,7 +2889,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 	};
 
 	function buildProgram ( fragmentShader, vertexShader, parameters ) {
-
+		
 		var program = _gl.createProgram(),
 
 		prefix_fragment = [
@@ -3330,6 +3330,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		if ( !_gl.getShaderParameter( shader, _gl.COMPILE_STATUS ) ) {
 
 			console.error( _gl.getShaderInfoLog( shader ) );
+			console.error( string );
 			return null;
 
 		}
@@ -3450,8 +3451,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 			material, meshMaterial,
 			materials = [];
 		
-		console.log( "unrollGroupMaterials", object.materials, geometryGroup );
-		
 		for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
 
 			meshMaterial = object.materials[ m ];

+ 1 - 1
utils/exporters/convert_obj_three.py

@@ -167,7 +167,7 @@ var model = {
 
     'normals': [%(normals)s],
 
-    'uvs': [%(uvs)s],
+    'uvs': [[%(uvs)s]],
 
     'faces': [%(faces)s],
 

部分文件因文件數量過多而無法顯示