|
@@ -1022,13 +1022,14 @@ THREE.Frustum.prototype.setFromMatrix = function ( m ) {
|
|
|
|
|
|
var i, plane,
|
|
var i, plane,
|
|
planes = this.planes;
|
|
planes = this.planes;
|
|
|
|
+ var me = m.elements;
|
|
|
|
|
|
- planes[ 0 ].set( m.elements[3] - m.elements[0], m.elements[7] - m.elements[4], m.elements[11] - m.elements[8], m.elements[15] - m.elements[12] );
|
|
|
|
- planes[ 1 ].set( m.elements[3] + m.elements[0], m.elements[7] + m.elements[4], m.elements[11] + m.elements[8], m.elements[15] + m.elements[12] );
|
|
|
|
- planes[ 2 ].set( m.elements[3] + m.elements[1], m.elements[7] + m.elements[5], m.elements[11] + m.elements[9], m.elements[15] + m.elements[13] );
|
|
|
|
- planes[ 3 ].set( m.elements[3] - m.elements[1], m.elements[7] - m.elements[5], m.elements[11] - m.elements[9], m.elements[15] - m.elements[13] );
|
|
|
|
- planes[ 4 ].set( m.elements[3] - m.elements[2], m.elements[7] - m.elements[6], m.elements[11] - m.elements[10], m.elements[15] - m.elements[14] );
|
|
|
|
- planes[ 5 ].set( m.elements[3] + m.elements[2], m.elements[7] + m.elements[6], m.elements[11] + m.elements[10], m.elements[15] + m.elements[14] );
|
|
|
|
|
|
+ planes[ 0 ].set( me[3] - me[0], me[7] - me[4], me[11] - me[8], me[15] - me[12] );
|
|
|
|
+ planes[ 1 ].set( me[3] + me[0], me[7] + me[4], me[11] + me[8], me[15] + me[12] );
|
|
|
|
+ planes[ 2 ].set( me[3] + me[1], me[7] + me[5], me[11] + me[9], me[15] + me[13] );
|
|
|
|
+ planes[ 3 ].set( me[3] - me[1], me[7] - me[5], me[11] - me[9], me[15] - me[13] );
|
|
|
|
+ planes[ 4 ].set( me[3] - me[2], me[7] - me[6], me[11] - me[10], me[15] - me[14] );
|
|
|
|
+ planes[ 5 ].set( me[3] + me[2], me[7] + me[6], me[11] + me[10], me[15] + me[14] );
|
|
|
|
|
|
for ( i = 0; i < 6; i ++ ) {
|
|
for ( i = 0; i < 6; i ++ ) {
|
|
|
|
|
|
@@ -1044,12 +1045,13 @@ THREE.Frustum.prototype.contains = function ( object ) {
|
|
var distance,
|
|
var distance,
|
|
planes = this.planes,
|
|
planes = this.planes,
|
|
matrix = object.matrixWorld,
|
|
matrix = object.matrixWorld,
|
|
|
|
+ me = matrix.elements,
|
|
scale = THREE.Frustum.__v1.set( matrix.getColumnX().length(), matrix.getColumnY().length(), matrix.getColumnZ().length() ),
|
|
scale = THREE.Frustum.__v1.set( matrix.getColumnX().length(), matrix.getColumnY().length(), matrix.getColumnZ().length() ),
|
|
radius = - object.geometry.boundingSphere.radius * Math.max( scale.x, Math.max( scale.y, scale.z ) );
|
|
radius = - object.geometry.boundingSphere.radius * Math.max( scale.x, Math.max( scale.y, scale.z ) );
|
|
|
|
|
|
for ( var i = 0; i < 6; i ++ ) {
|
|
for ( var i = 0; i < 6; i ++ ) {
|
|
|
|
|
|
- distance = planes[ i ].x * matrix.elements[12] + planes[ i ].y * matrix.elements[13] + planes[ i ].z * matrix.elements[14] + planes[ i ].w;
|
|
|
|
|
|
+ distance = planes[ i ].x * me[12] + planes[ i ].y * me[13] + planes[ i ].z * me[14] + planes[ i ].w;
|
|
if ( distance <= radius ) return false;
|
|
if ( distance <= radius ) return false;
|
|
|
|
|
|
}
|
|
}
|
|
@@ -1685,13 +1687,15 @@ THREE.Matrix4.prototype = {
|
|
},
|
|
},
|
|
|
|
|
|
copy: function ( m ) {
|
|
copy: function ( m ) {
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ var me = m.elements;
|
|
|
|
+
|
|
this.set(
|
|
this.set(
|
|
|
|
|
|
- m.elements[0], m.elements[4], m.elements[8], m.elements[12],
|
|
|
|
- m.elements[1], m.elements[5], m.elements[9], m.elements[13],
|
|
|
|
- m.elements[2], m.elements[6], m.elements[10], m.elements[14],
|
|
|
|
- m.elements[3], m.elements[7], m.elements[11], m.elements[15]
|
|
|
|
|
|
+ me[0], me[4], me[8], me[12],
|
|
|
|
+ me[1], me[5], me[9], me[13],
|
|
|
|
+ me[2], me[6], me[10], me[14],
|
|
|
|
+ me[3], me[7], me[11], me[15]
|
|
|
|
|
|
);
|
|
);
|
|
|
|
|
|
@@ -2007,11 +2011,12 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm
|
|
// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm
|
|
var te = this.elements;
|
|
var te = this.elements;
|
|
-
|
|
|
|
- var n11 = m.elements[0], n12 = m.elements[4], n13 = m.elements[8], n14 = m.elements[12];
|
|
|
|
- var n21 = m.elements[1], n22 = m.elements[5], n23 = m.elements[9], n24 = m.elements[13];
|
|
|
|
- var n31 = m.elements[2], n32 = m.elements[6], n33 = m.elements[10], n34 = m.elements[14];
|
|
|
|
- var n41 = m.elements[3], n42 = m.elements[7], n43 = m.elements[11], n44 = m.elements[15];
|
|
|
|
|
|
+ var me = m.elements;
|
|
|
|
+
|
|
|
|
+ var n11 = me[0], n12 = me[4], n13 = me[8], n14 = me[12];
|
|
|
|
+ var n21 = me[1], n22 = me[5], n23 = me[9], n24 = me[13];
|
|
|
|
+ var n31 = me[2], n32 = me[6], n33 = me[10], n34 = me[14];
|
|
|
|
+ var n41 = me[3], n42 = me[7], n43 = me[11], n44 = me[15];
|
|
|
|
|
|
te[0] = n23*n34*n42 - n24*n33*n42 + n24*n32*n43 - n22*n34*n43 - n23*n32*n44 + n22*n33*n44;
|
|
te[0] = n23*n34*n42 - n24*n33*n42 + n24*n32*n43 - n22*n34*n43 - n23*n32*n44 + n22*n33*n44;
|
|
te[4] = n14*n33*n42 - n13*n34*n42 - n14*n32*n43 + n12*n34*n43 + n13*n32*n44 - n12*n33*n44;
|
|
te[4] = n14*n33*n42 - n13*n34*n42 - n14*n32*n43 + n12*n34*n43 + n13*n32*n44 - n12*n33*n44;
|
|
@@ -2249,9 +2254,10 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
extractPosition: function ( m ) {
|
|
extractPosition: function ( m ) {
|
|
var te = this.elements;
|
|
var te = this.elements;
|
|
- te[12] = m.elements[12];
|
|
|
|
- te[13] = m.elements[13];
|
|
|
|
- te[14] = m.elements[14];
|
|
|
|
|
|
+ var me = m.elements;
|
|
|
|
+ te[12] = me[12];
|
|
|
|
+ te[13] = me[13];
|
|
|
|
+ te[14] = me[14];
|
|
|
|
|
|
return this;
|
|
return this;
|
|
|
|
|
|
@@ -2259,24 +2265,25 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
extractRotation: function ( m ) {
|
|
extractRotation: function ( m ) {
|
|
var te = this.elements;
|
|
var te = this.elements;
|
|
|
|
+ var me = m.elements;
|
|
|
|
|
|
var vector = THREE.Matrix4.__v1;
|
|
var vector = THREE.Matrix4.__v1;
|
|
|
|
|
|
- var scaleX = 1 / vector.set( m.elements[0], m.elements[1], m.elements[2] ).length();
|
|
|
|
- var scaleY = 1 / vector.set( m.elements[4], m.elements[5], m.elements[6] ).length();
|
|
|
|
- var scaleZ = 1 / vector.set( m.elements[8], m.elements[9], m.elements[10] ).length();
|
|
|
|
|
|
+ var scaleX = 1 / vector.set( me[0], me[1], me[2] ).length();
|
|
|
|
+ var scaleY = 1 / vector.set( me[4], me[5], me[6] ).length();
|
|
|
|
+ var scaleZ = 1 / vector.set( me[8], me[9], me[10] ).length();
|
|
|
|
|
|
- te[0] = m.elements[0] * scaleX;
|
|
|
|
- te[1] = m.elements[1] * scaleX;
|
|
|
|
- te[2] = m.elements[2] * scaleX;
|
|
|
|
|
|
+ te[0] = me[0] * scaleX;
|
|
|
|
+ te[1] = me[1] * scaleX;
|
|
|
|
+ te[2] = me[2] * scaleX;
|
|
|
|
|
|
- te[4] = m.elements[4] * scaleY;
|
|
|
|
- te[5] = m.elements[5] * scaleY;
|
|
|
|
- te[6] = m.elements[6] * scaleY;
|
|
|
|
|
|
+ te[4] = me[4] * scaleY;
|
|
|
|
+ te[5] = me[5] * scaleY;
|
|
|
|
+ te[6] = me[6] * scaleY;
|
|
|
|
|
|
- te[8] = m.elements[8] * scaleZ;
|
|
|
|
- te[9] = m.elements[9] * scaleZ;
|
|
|
|
- te[10] = m.elements[10] * scaleZ;
|
|
|
|
|
|
+ te[8] = me[8] * scaleZ;
|
|
|
|
+ te[9] = me[9] * scaleZ;
|
|
|
|
+ te[10] = me[10] * scaleZ;
|
|
|
|
|
|
return this;
|
|
return this;
|
|
|
|
|
|
@@ -13414,7 +13421,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( ! ( object instanceof THREE.Mesh || object instanceof THREE.ParticleSystem ) || ! ( object.frustumCulled ) || _frustum.contains( object ) ) {
|
|
if ( ! ( object instanceof THREE.Mesh || object instanceof THREE.ParticleSystem ) || ! ( object.frustumCulled ) || _frustum.contains( object ) ) {
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
setupMatrices( object, camera );
|
|
setupMatrices( object, camera );
|
|
|
|
|
|
@@ -13464,7 +13471,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if( object.matrixAutoUpdate ) {
|
|
if( object.matrixAutoUpdate ) {
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -13875,7 +13882,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
object._modelViewMatrixArray = new Float32Array( 16 );
|
|
object._modelViewMatrixArray = new Float32Array( 16 );
|
|
object._objectMatrixArray = new Float32Array( 16 );
|
|
object._objectMatrixArray = new Float32Array( 16 );
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
if ( object instanceof THREE.Mesh ) {
|
|
if ( object instanceof THREE.Mesh ) {
|
|
|
|
|
|
@@ -35053,7 +35060,7 @@ THREE.ShadowMapPlugin = function ( ) {
|
|
|
|
|
|
if ( ! ( object instanceof THREE.Mesh ) || ! ( object.frustumCulled ) || _frustum.contains( object ) ) {
|
|
if ( ! ( object instanceof THREE.Mesh ) || ! ( object.frustumCulled ) || _frustum.contains( object ) ) {
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
object._modelViewMatrix.multiply( shadowCamera.matrixWorldInverse, object.matrixWorld);
|
|
object._modelViewMatrix.multiply( shadowCamera.matrixWorldInverse, object.matrixWorld);
|
|
|
|
|
|
webglObject.render = true;
|
|
webglObject.render = true;
|
|
@@ -35118,7 +35125,7 @@ THREE.ShadowMapPlugin = function ( ) {
|
|
|
|
|
|
if( object.matrixAutoUpdate ) {
|
|
if( object.matrixAutoUpdate ) {
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -35612,7 +35619,7 @@ THREE.DepthPassPlugin = function ( ) {
|
|
|
|
|
|
if ( ! ( object instanceof THREE.Mesh ) || ! ( object.frustumCulled ) || _frustum.contains( object ) ) {
|
|
if ( ! ( object instanceof THREE.Mesh ) || ! ( object.frustumCulled ) || _frustum.contains( object ) ) {
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
object._modelViewMatrix.multiply( camera.matrixWorldInverse, object.matrixWorld);
|
|
object._modelViewMatrix.multiply( camera.matrixWorldInverse, object.matrixWorld);
|
|
|
|
|
|
webglObject.render = true;
|
|
webglObject.render = true;
|
|
@@ -35677,7 +35684,7 @@ THREE.DepthPassPlugin = function ( ) {
|
|
|
|
|
|
if( object.matrixAutoUpdate ) {
|
|
if( object.matrixAutoUpdate ) {
|
|
|
|
|
|
- object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
+ //object.matrixWorld.flattenToArray( object._objectMatrixArray );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|