提交 54d4d62c 编写于 作者: M Mr.doob

Updated builds.

上级 08eac781
...@@ -21271,9 +21271,11 @@ ...@@ -21271,9 +21271,11 @@
}; };
var influencesList = {};
function absNumericalSort( a, b ) { function absNumericalSort( a, b ) {
return Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] ); return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );
} }
...@@ -21295,55 +21297,67 @@ ...@@ -21295,55 +21297,67 @@
// morph targets // morph targets
var morphTargetInfluences = object.morphTargetInfluences; var objectInfluences = object.morphTargetInfluences;
if ( morphTargetInfluences !== undefined ) {
// TODO Remove allocations if ( objectInfluences !== undefined ) {
var activeInfluences = []; var influences = influencesList[ geometry.id ];
for ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) { if ( influences === undefined ) {
var influence = morphTargetInfluences[ i ]; influencesList[ geometry.id ] = influences = new Array( objectInfluences.length );
activeInfluences.push( [ influence, i ] );
} }
activeInfluences.sort( absNumericalSort ); for ( var i = 0, l = objectInfluences.length; i < l; i ++ ) {
var influence = influences[ i ];
if ( influence === undefined ) {
influences[ i ] = influence = new Array( 2 );
if ( activeInfluences.length > 8 ) { }
activeInfluences.length = 8; influence[ 0 ] = i;
influence[ 1 ] = objectInfluences[ i ];
} }
var morphAttributes = geometry.morphAttributes; influences.sort( absNumericalSort );
var morphTargets = material.morphTargets && geometry.morphAttributes.position;
var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
for ( var i = 0, l = activeInfluences.length; i < l; i ++ ) { for ( var i = 0, l = Math.min( influences.length, 8 ); i < l; i ++ ) {
var influence = activeInfluences[ i ]; var morphTargetId = 'morphTarget' + i;
morphInfluences[ i ] = influence[ 0 ]; var morphNormalId = 'morphNormal' + i;
if ( influence[ 0 ] !== 0 ) { var influence = influences[ i ];
var index = influence[ 1 ]; var index = influence[ 0 ];
var value = influence[ 1 ];
if ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] ); if ( value !== 0 ) {
if ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );
if ( morphTargets ) geometry.addAttribute( morphTargetId, morphTargets[ index ] );
if ( morphNormals ) geometry.addAttribute( morphNormalId, morphNormals[ index ] );
} else { } else {
if ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i ); if ( morphTargets ) geometry.removeAttribute( morphTargetId );
if ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i ); if ( morphNormals ) geometry.removeAttribute( morphNormalId );
} }
morphInfluences[ i ] = value;
} }
for ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) { for ( var i = Math.min( influences.length, 8 ), il = morphInfluences.length; i < il; i ++ ) {
morphInfluences[ i ] = 0.0; morphInfluences[ i ] = 0;
} }
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -21265,9 +21265,11 @@ function WebGLRenderer( parameters ) { ...@@ -21265,9 +21265,11 @@ function WebGLRenderer( parameters ) {
}; };
var influencesList = {};
function absNumericalSort( a, b ) { function absNumericalSort( a, b ) {
return Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] ); return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );
} }
...@@ -21289,55 +21291,67 @@ function WebGLRenderer( parameters ) { ...@@ -21289,55 +21291,67 @@ function WebGLRenderer( parameters ) {
// morph targets // morph targets
var morphTargetInfluences = object.morphTargetInfluences; var objectInfluences = object.morphTargetInfluences;
if ( morphTargetInfluences !== undefined ) {
// TODO Remove allocations if ( objectInfluences !== undefined ) {
var activeInfluences = []; var influences = influencesList[ geometry.id ];
for ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) { if ( influences === undefined ) {
var influence = morphTargetInfluences[ i ]; influencesList[ geometry.id ] = influences = new Array( objectInfluences.length );
activeInfluences.push( [ influence, i ] );
} }
activeInfluences.sort( absNumericalSort ); for ( var i = 0, l = objectInfluences.length; i < l; i ++ ) {
var influence = influences[ i ];
if ( influence === undefined ) {
influences[ i ] = influence = new Array( 2 );
if ( activeInfluences.length > 8 ) { }
activeInfluences.length = 8; influence[ 0 ] = i;
influence[ 1 ] = objectInfluences[ i ];
} }
var morphAttributes = geometry.morphAttributes; influences.sort( absNumericalSort );
var morphTargets = material.morphTargets && geometry.morphAttributes.position;
var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
for ( var i = 0, l = activeInfluences.length; i < l; i ++ ) { for ( var i = 0, l = Math.min( influences.length, 8 ); i < l; i ++ ) {
var influence = activeInfluences[ i ]; var morphTargetId = 'morphTarget' + i;
morphInfluences[ i ] = influence[ 0 ]; var morphNormalId = 'morphNormal' + i;
if ( influence[ 0 ] !== 0 ) { var influence = influences[ i ];
var index = influence[ 1 ]; var index = influence[ 0 ];
var value = influence[ 1 ];
if ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] ); if ( value !== 0 ) {
if ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );
if ( morphTargets ) geometry.addAttribute( morphTargetId, morphTargets[ index ] );
if ( morphNormals ) geometry.addAttribute( morphNormalId, morphNormals[ index ] );
} else { } else {
if ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i ); if ( morphTargets ) geometry.removeAttribute( morphTargetId );
if ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i ); if ( morphNormals ) geometry.removeAttribute( morphNormalId );
} }
morphInfluences[ i ] = value;
} }
for ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) { for ( var i = Math.min( influences.length, 8 ), il = morphInfluences.length; i < il; i ++ ) {
morphInfluences[ i ] = 0.0; morphInfluences[ i ] = 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册