From 2d20fbe954289fc6c2b71d06533027c4544ff424 Mon Sep 17 00:00:00 2001 From: zz85 Date: Sat, 8 Oct 2011 18:23:44 +0800 Subject: [PATCH 01/23] Views for CombinedCamera --- examples/canvas_camera_orthographic2.html | 50 +++++++++++++++------- src/extras/cameras/CombinedCamera.js | 51 +++++++++++++++++++++++ 2 files changed, 86 insertions(+), 15 deletions(-) diff --git a/examples/canvas_camera_orthographic2.html b/examples/canvas_camera_orthographic2.html index acc1457d..08d3f581 100644 --- a/examples/canvas_camera_orthographic2.html +++ b/examples/canvas_camera_orthographic2.html @@ -26,6 +26,40 @@ +
+ three.js - Combo Camera
+ View: Orthographic | + Perspective
+ Lens: 12mm | + 16mm | + 24mm | + 35mm | + 50mm | + 60mm | + 85mm | + 105mm
+ Fov: 30° | + 50° | + 70° | + 100°
+ Zoom: 0.5x | + 1x | + 2x | + +
+ Views: Top view | + Bottom view | + Left view | + Right view | + Front view | + Back view | + +
+
+
+ + + + @@ -79,9 +80,17 @@ {type: 'CubeGeometry', args: [ 200, 200, 200, 2, 2, 2, materials ] }, {type: 'TorusGeometry', args: [ 100, 60, 4, 8, Math.PI*2 ] }, - {type: 'SphereGeometry', args: [ 100, 3, 3 ] }, - {type: 'IcosahedronGeometry', args: [ 1 ], scale: 200 }, + {type: 'TorusKnotGeometry', args: [ ], scale:0.25, meshScale:4 }, + {type: 'SphereGeometry', args: [ 100, 3, 3 ], meshScale:2 }, + {type: 'IcosahedronGeometry', args: [ 1 ], scale: 100, meshScale:2 }, {type: 'CylinderGeometry', args: [ 25, 75, 200, 8, 3 ]} , + {type: 'OctahedronGeometry', args: [200, 0], meshScale:2 }, + {type: 'LatheGeometry', args: [ [ + new THREE.Vector3(0,0,0), + new THREE.Vector3(0,50,50), + new THREE.Vector3(0,0,100), + new THREE.Vector3(0,50,150), + new THREE.Vector3(0,0,200) ] ]}, {type: 'TextGeometry', args: ['&', { size: 200, height: 50, @@ -91,17 +100,27 @@ }]}, {type: 'PlaneGeometry', args: [ 200, 200, 4, 4 ] } - ]; if (location.protocol !== "file:") { var loader = new THREE.JSONLoader(); loader.load( 'obj/WaltHeadLo.js', function ( geometry ) { - geometriesParams.push({type: 'WaltHead', args: [ ], scale: 6 }); + geometriesParams.push({type: 'WaltHead', args: [ ], meshScale: 6 }); THREE.WaltHead = function() { - return geometry; + return THREE.GeometryUtils.clone(geometry); + }; + + }); + + var loader2 = new THREE.JSONLoader(); + loader2.load( 'obj/Suzanne.js', function ( geometry ) { + + geometriesParams.push({type: 'Suzanne', args: [ ], scale: 100, meshScale:2 }); + + THREE.Suzanne = function() { + return THREE.GeometryUtils.clone(geometry); }; } ); @@ -155,6 +174,12 @@ var params = geometriesParams[ geometryIndex ]; geometry = createSomething( THREE[ params.type ], params.args ); + + // Scale Geometry + if (params.scale) { + var scaler = new THREE.ScaleModifier( new THREE.Vector3(params.scale,params.scale,params.scale)); + scaler.modify(geometry); + } // Cloning original geometry for debuging @@ -274,11 +299,11 @@ cube = new THREE.Mesh( smooth, meshmaterials ); - var toscale = params.scale ? params.scale : 1; - - cube.scale.x = toscale; - cube.scale.y = toscale; - cube.scale.z = toscale; + var meshScale = params.meshScale ? params.meshScale : 1; + + cube.scale.x = meshScale; + cube.scale.y = meshScale; + cube.scale.z = meshScale; scene.add( cube ); diff --git a/src/extras/modifiers/ScaleModifier.js b/src/extras/modifiers/ScaleModifier.js new file mode 100644 index 00000000..d4af5793 --- /dev/null +++ b/src/extras/modifiers/ScaleModifier.js @@ -0,0 +1,28 @@ +/* + * @author zz85 / http://twitter.com/blurspline + * + * Scales a geometry by vector + */ + +// Scale from 0,0,0 with (x,y,z) +THREE.ScaleModifier = function( scale /*Vector3*/ ) { + this.scale = scale; +}; + +THREE.ScaleModifier.prototype.constructor = THREE.ScaleModifier; + +THREE.ScaleModifier.prototype.modify = function ( geometry ) { + var i,il; + var scale = this.scale, v; + for (i=0,il=geometry.vertices.length;i2) { - + // TODO } F.divideScalar(f); diff --git a/utils/build.py b/utils/build.py index 432906a7..aa53f2a1 100644 --- a/utils/build.py +++ b/utils/build.py @@ -117,6 +117,7 @@ EXTRAS_FILES = [ 'extras/geometries/TorusGeometry.js', 'extras/geometries/TorusKnotGeometry.js', 'extras/modifiers/SubdivisionModifier.js', +'extras/modifiers/ScaleModifier.js', 'extras/loaders/Loader.js', 'extras/loaders/BinaryLoader.js', 'extras/loaders/ColladaLoader.js', From 60c103648e8933db79074f31de1a53cdefb53ddf Mon Sep 17 00:00:00 2001 From: zz85 Date: Sun, 23 Oct 2011 00:42:58 +0800 Subject: [PATCH 10/23] CombinedCamera decouples setFov from perspective mode now --- src/extras/cameras/CombinedCamera.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/extras/cameras/CombinedCamera.js b/src/extras/cameras/CombinedCamera.js index a399062d..1c5c3df2 100644 --- a/src/extras/cameras/CombinedCamera.js +++ b/src/extras/cameras/CombinedCamera.js @@ -99,7 +99,11 @@ THREE.CombinedCamera.prototype.toOrthographic = function () { THREE.CombinedCamera.prototype.setFov = function(fov) { this.fov = fov; - this.toPerspective(); + if (this.inPersepectiveMode) { + this.toPerspective(); + } else { + this.toOrthographic(); + } }; From 588c2b0a9fe0aeaf60531ba61cc4e02db1f329f9 Mon Sep 17 00:00:00 2001 From: zz85 Date: Sun, 23 Oct 2011 01:11:58 +0800 Subject: [PATCH 11/23] ScaleModifier uses geometry.applyMatrix --- src/extras/modifiers/ScaleModifier.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/extras/modifiers/ScaleModifier.js b/src/extras/modifiers/ScaleModifier.js index d4af5793..5d759959 100644 --- a/src/extras/modifiers/ScaleModifier.js +++ b/src/extras/modifiers/ScaleModifier.js @@ -12,17 +12,7 @@ THREE.ScaleModifier = function( scale /*Vector3*/ ) { THREE.ScaleModifier.prototype.constructor = THREE.ScaleModifier; THREE.ScaleModifier.prototype.modify = function ( geometry ) { - var i,il; - var scale = this.scale, v; - for (i=0,il=geometry.vertices.length;i Date: Sat, 8 Oct 2011 18:23:44 +0800 Subject: [PATCH 12/23] Views for CombinedCamera --- examples/canvas_camera_orthographic2.html | 50 +++++++++++++++------- src/extras/cameras/CombinedCamera.js | 51 +++++++++++++++++++++++ 2 files changed, 86 insertions(+), 15 deletions(-) diff --git a/examples/canvas_camera_orthographic2.html b/examples/canvas_camera_orthographic2.html index acc1457d..08d3f581 100644 --- a/examples/canvas_camera_orthographic2.html +++ b/examples/canvas_camera_orthographic2.html @@ -26,6 +26,40 @@ +
+ three.js - Combo Camera
+ View: Orthographic | + Perspective
+ Lens: 12mm | + 16mm | + 24mm | + 35mm | + 50mm | + 60mm | + 85mm | + 105mm
+ Fov: 30° | + 50° | + 70° | + 100°
+ Zoom: 0.5x | + 1x | + 2x | + +
+ Views: Top view | + Bottom view | + Left view | + Right view | + Front view | + Back view | + +
+
+
+ + + + @@ -79,9 +80,17 @@ {type: 'CubeGeometry', args: [ 200, 200, 200, 2, 2, 2, materials ] }, {type: 'TorusGeometry', args: [ 100, 60, 4, 8, Math.PI*2 ] }, - {type: 'SphereGeometry', args: [ 100, 3, 3 ] }, - {type: 'IcosahedronGeometry', args: [ 1 ], scale: 200 }, + {type: 'TorusKnotGeometry', args: [ ], scale:0.25, meshScale:4 }, + {type: 'SphereGeometry', args: [ 100, 3, 3 ], meshScale:2 }, + {type: 'IcosahedronGeometry', args: [ 1 ], scale: 100, meshScale:2 }, {type: 'CylinderGeometry', args: [ 25, 75, 200, 8, 3 ]} , + {type: 'OctahedronGeometry', args: [200, 0], meshScale:2 }, + {type: 'LatheGeometry', args: [ [ + new THREE.Vector3(0,0,0), + new THREE.Vector3(0,50,50), + new THREE.Vector3(0,0,100), + new THREE.Vector3(0,50,150), + new THREE.Vector3(0,0,200) ] ]}, {type: 'TextGeometry', args: ['&', { size: 200, height: 50, @@ -91,17 +100,27 @@ }]}, {type: 'PlaneGeometry', args: [ 200, 200, 4, 4 ] } - ]; if (location.protocol !== "file:") { var loader = new THREE.JSONLoader(); loader.load( 'obj/WaltHeadLo.js', function ( geometry ) { - geometriesParams.push({type: 'WaltHead', args: [ ], scale: 6 }); + geometriesParams.push({type: 'WaltHead', args: [ ], meshScale: 6 }); THREE.WaltHead = function() { - return geometry; + return THREE.GeometryUtils.clone(geometry); + }; + + }); + + var loader2 = new THREE.JSONLoader(); + loader2.load( 'obj/Suzanne.js', function ( geometry ) { + + geometriesParams.push({type: 'Suzanne', args: [ ], scale: 100, meshScale:2 }); + + THREE.Suzanne = function() { + return THREE.GeometryUtils.clone(geometry); }; } ); @@ -155,6 +174,12 @@ var params = geometriesParams[ geometryIndex ]; geometry = createSomething( THREE[ params.type ], params.args ); + + // Scale Geometry + if (params.scale) { + var scaler = new THREE.ScaleModifier( new THREE.Vector3(params.scale,params.scale,params.scale)); + scaler.modify(geometry); + } // Cloning original geometry for debuging @@ -274,11 +299,11 @@ cube = new THREE.Mesh( smooth, meshmaterials ); - var toscale = params.scale ? params.scale : 1; - - cube.scale.x = toscale; - cube.scale.y = toscale; - cube.scale.z = toscale; + var meshScale = params.meshScale ? params.meshScale : 1; + + cube.scale.x = meshScale; + cube.scale.y = meshScale; + cube.scale.z = meshScale; scene.add( cube ); diff --git a/src/extras/modifiers/ScaleModifier.js b/src/extras/modifiers/ScaleModifier.js new file mode 100644 index 00000000..d4af5793 --- /dev/null +++ b/src/extras/modifiers/ScaleModifier.js @@ -0,0 +1,28 @@ +/* + * @author zz85 / http://twitter.com/blurspline + * + * Scales a geometry by vector + */ + +// Scale from 0,0,0 with (x,y,z) +THREE.ScaleModifier = function( scale /*Vector3*/ ) { + this.scale = scale; +}; + +THREE.ScaleModifier.prototype.constructor = THREE.ScaleModifier; + +THREE.ScaleModifier.prototype.modify = function ( geometry ) { + var i,il; + var scale = this.scale, v; + for (i=0,il=geometry.vertices.length;i2) { - + // TODO } F.divideScalar(f); diff --git a/utils/build.py b/utils/build.py index 432906a7..aa53f2a1 100644 --- a/utils/build.py +++ b/utils/build.py @@ -117,6 +117,7 @@ EXTRAS_FILES = [ 'extras/geometries/TorusGeometry.js', 'extras/geometries/TorusKnotGeometry.js', 'extras/modifiers/SubdivisionModifier.js', +'extras/modifiers/ScaleModifier.js', 'extras/loaders/Loader.js', 'extras/loaders/BinaryLoader.js', 'extras/loaders/ColladaLoader.js', From 973e6156e8804000e808f9c9064c68801a327b81 Mon Sep 17 00:00:00 2001 From: zz85 Date: Sun, 23 Oct 2011 00:42:58 +0800 Subject: [PATCH 21/23] CombinedCamera decouples setFov from perspective mode now --- src/extras/cameras/CombinedCamera.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/extras/cameras/CombinedCamera.js b/src/extras/cameras/CombinedCamera.js index a399062d..1c5c3df2 100644 --- a/src/extras/cameras/CombinedCamera.js +++ b/src/extras/cameras/CombinedCamera.js @@ -99,7 +99,11 @@ THREE.CombinedCamera.prototype.toOrthographic = function () { THREE.CombinedCamera.prototype.setFov = function(fov) { this.fov = fov; - this.toPerspective(); + if (this.inPersepectiveMode) { + this.toPerspective(); + } else { + this.toOrthographic(); + } }; From 0a444b9d8affcad8e6d929060236070728960d39 Mon Sep 17 00:00:00 2001 From: zz85 Date: Sun, 23 Oct 2011 01:11:58 +0800 Subject: [PATCH 22/23] ScaleModifier uses geometry.applyMatrix --- src/extras/modifiers/ScaleModifier.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/extras/modifiers/ScaleModifier.js b/src/extras/modifiers/ScaleModifier.js index d4af5793..5d759959 100644 --- a/src/extras/modifiers/ScaleModifier.js +++ b/src/extras/modifiers/ScaleModifier.js @@ -12,17 +12,7 @@ THREE.ScaleModifier = function( scale /*Vector3*/ ) { THREE.ScaleModifier.prototype.constructor = THREE.ScaleModifier; THREE.ScaleModifier.prototype.modify = function ( geometry ) { - var i,il; - var scale = this.scale, v; - for (i=0,il=geometry.vertices.length;i Date: Mon, 24 Oct 2011 10:42:35 +0800 Subject: [PATCH 23/23] Replace THREE.ScaleModifier with geometry.applyMatrix --- examples/webgl_geometry_subdivison.html | 4 +--- src/extras/modifiers/ScaleModifier.js | 18 ------------------ utils/build.py | 1 - 3 files changed, 1 insertion(+), 22 deletions(-) delete mode 100644 src/extras/modifiers/ScaleModifier.js diff --git a/examples/webgl_geometry_subdivison.html b/examples/webgl_geometry_subdivison.html index cc1d072f..38407f0a 100644 --- a/examples/webgl_geometry_subdivison.html +++ b/examples/webgl_geometry_subdivison.html @@ -25,7 +25,6 @@ - @@ -177,8 +176,7 @@ // Scale Geometry if (params.scale) { - var scaler = new THREE.ScaleModifier( new THREE.Vector3(params.scale,params.scale,params.scale)); - scaler.modify(geometry); + geometry.applyMatrix( new THREE.Matrix4().setScale( params.scale, params.scale, params.scale ) ); } // Cloning original geometry for debuging diff --git a/src/extras/modifiers/ScaleModifier.js b/src/extras/modifiers/ScaleModifier.js deleted file mode 100644 index 5d759959..00000000 --- a/src/extras/modifiers/ScaleModifier.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * @author zz85 / http://twitter.com/blurspline - * - * Scales a geometry by vector - */ - -// Scale from 0,0,0 with (x,y,z) -THREE.ScaleModifier = function( scale /*Vector3*/ ) { - this.scale = scale; -}; - -THREE.ScaleModifier.prototype.constructor = THREE.ScaleModifier; - -THREE.ScaleModifier.prototype.modify = function ( geometry ) { - - geometry.applyMatrix( new THREE.Matrix4().setScale( this.scale.x, this.scale.y, this.scale.z ) ); - -}; \ No newline at end of file diff --git a/utils/build.py b/utils/build.py index aa53f2a1..432906a7 100644 --- a/utils/build.py +++ b/utils/build.py @@ -117,7 +117,6 @@ EXTRAS_FILES = [ 'extras/geometries/TorusGeometry.js', 'extras/geometries/TorusKnotGeometry.js', 'extras/modifiers/SubdivisionModifier.js', -'extras/modifiers/ScaleModifier.js', 'extras/loaders/Loader.js', 'extras/loaders/BinaryLoader.js', 'extras/loaders/ColladaLoader.js',