From 0f2badfdd1ff41cecc10e934d90a360d674f7e19 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Tue, 30 Nov 2010 16:15:16 +0000 Subject: [PATCH] =?UTF-8?q?Previous=20commit:=20`Matrix4.transform`=20?= =?UTF-8?q?=E2=9F=B6=20`Matrix4.transformVector3`=20and=20`Matrix4.tranfor?= =?UTF-8?q?mVector4`=20This=20commit=20fixes=20what=20that=20change=20brok?= =?UTF-8?q?e.=20Removed=20chromatic=20distortion=20from=20WebGL=20reflecti?= =?UTF-8?q?on/refraction.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/interactive_voxelpainter.html | 2 +- src/core/Matrix4.js | 4 ++++ src/core/Ray.js | 10 +++++----- src/extras/GeometryUtils.js | 2 +- src/renderers/Projector.js | 6 +++--- src/renderers/WebGLRenderer.js | 8 ++++---- utils/build.py | 2 +- utils/build.sh | 2 +- 8 files changed, 20 insertions(+), 16 deletions(-) diff --git a/examples/interactive_voxelpainter.html b/examples/interactive_voxelpainter.html index 094929fd..91b955b9 100644 --- a/examples/interactive_voxelpainter.html +++ b/examples/interactive_voxelpainter.html @@ -145,7 +145,7 @@ } else { - var position = new THREE.Vector3().add( intersects[ 0 ].point, intersects[ 0 ].object.rotationMatrix.transform( intersects[ 0 ].face.normal.clone() ) ); + var position = new THREE.Vector3().add( intersects[ 0 ].point, intersects[ 0 ].object.rotationMatrix.transformVector3( intersects[ 0 ].face.normal.clone() ) ); var voxel = new THREE.Mesh( new Cube( 50, 50, 50 ), [ new THREE.MeshLambertMaterial( { color: 0x00ff80, opacity: 1, shading: THREE.FlatShading } ), new THREE.MeshFaceMaterial() ] ); voxel.position.x = Math.floor( position.x / 50 ) * 50 + 25; diff --git a/src/core/Matrix4.js b/src/core/Matrix4.js index fa500e56..61551983 100644 --- a/src/core/Matrix4.js +++ b/src/core/Matrix4.js @@ -60,6 +60,8 @@ THREE.Matrix4.prototype = { v.multiplyScalar( 1 / ( this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 ) ); + return v; + }, transformVector4: function ( v ) { @@ -71,6 +73,8 @@ THREE.Matrix4.prototype = { v.z = this.n31 * vx + this.n32 * vy + this.n33 * vz + this.n34 * vw; v.w = this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 * vw; + return v; + }, crossVector: function ( a ) { diff --git a/src/core/Ray.js b/src/core/Ray.js index ca03132d..04c4f488 100644 --- a/src/core/Ray.js +++ b/src/core/Ray.js @@ -52,12 +52,12 @@ THREE.Ray.prototype = { origin = this.origin.clone(); direction = this.direction.clone(); - a = object.matrix.transform( vertices[ face.a ].position.clone() ); - b = object.matrix.transform( vertices[ face.b ].position.clone() ); - c = object.matrix.transform( vertices[ face.c ].position.clone() ); - d = face instanceof THREE.Face4 ? object.matrix.transform( vertices[ face.d ].position.clone() ) : null; + a = object.matrix.transformVector3( vertices[ face.a ].position.clone() ); + b = object.matrix.transformVector3( vertices[ face.b ].position.clone() ); + c = object.matrix.transformVector3( vertices[ face.c ].position.clone() ); + d = face instanceof THREE.Face4 ? object.matrix.transformVector3( vertices[ face.d ].position.clone() ) : null; - normal = object.rotationMatrix.transform( face.normal.clone() ); + normal = object.rotationMatrix.transformVector3( face.normal.clone() ); dot = direction.dot( normal ); if ( dot < 0 ) { // Math.abs( dot ) > 0.0001 diff --git a/src/extras/GeometryUtils.js b/src/extras/GeometryUtils.js index 65b52aa2..8dd7c7d2 100644 --- a/src/extras/GeometryUtils.js +++ b/src/extras/GeometryUtils.js @@ -22,7 +22,7 @@ var GeometryUtils = { var vertexCopy = new THREE.Vertex( vertex.position.clone() ); - isMesh && object2.matrix.transform( vertexCopy.position ); + isMesh && object2.matrix.transformVector3( vertexCopy.position ); vertices1.push( vertexCopy ); diff --git a/src/renderers/Projector.js b/src/renderers/Projector.js index 5e958c28..10e322aa 100644 --- a/src/renderers/Projector.js +++ b/src/renderers/Projector.js @@ -285,13 +285,13 @@ THREE.Projector = function() { _projScreenMatrix.transformVector4( _vector4 ); - _vector4.multiplyScalar( 1 / _vector4.w ); + _vector4.z /= _vector4.w; if ( _vector4.z > 0 && _vector4.z < 1 ) { _particle = _particlePool[ _particleCount ] = _particlePool[ _particleCount ] || new THREE.RenderableParticle(); - _particle.x = _vector4.x; - _particle.y = _vector4.y; + _particle.x = _vector4.x / _vector4.w; + _particle.y = _vector4.y / _vector4.w; _particle.z = _vector4.z; _particle.rotation = object.rotation.z; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index ae5a896b..df3aaf50 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -923,10 +923,10 @@ THREE.WebGLRenderer = function ( scene ) { "if ( enableCubeMap ) {", - // "cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );", - "cubeColor.r = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) ).r;", - "cubeColor.g = textureCube( tCube, vec3( -vReflect.x + 0.005, vReflect.yz ) ).g;", - "cubeColor.b = textureCube( tCube, vec3( -vReflect.x + 0.01, vReflect.yz ) ).b;", + "cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );", + // "cubeColor.r = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) ).r;", + // "cubeColor.g = textureCube( tCube, vec3( -vReflect.x + 0.005, vReflect.yz ) ).g;", + // "cubeColor.b = textureCube( tCube, vec3( -vReflect.x + 0.01, vReflect.yz ) ).b;", "}", diff --git a/utils/build.py b/utils/build.py index 0bd8fb76..bdf86b2a 100644 --- a/utils/build.py +++ b/utils/build.py @@ -144,7 +144,7 @@ def buildExtras(debug): ] build(files, debug, 'ThreeExtras') - + def buildFull(debug): files = [ 'Three.js', diff --git a/utils/build.sh b/utils/build.sh index ca964dbf..56531237 100755 --- a/utils/build.sh +++ b/utils/build.sh @@ -1,7 +1,7 @@ #!/bin/sh python build.py -python build.py --debug python build.py --extras +python build.py --debug # python build.py --help