Browse Source

Merge pull request #16613 from takahirox/UpdateSkeletonOnce

Update skeleton only once in a frame
Mr.doob 5 years ago
parent
commit
8d12d49d1f
2 changed files with 10 additions and 1 deletions
  1. 2 0
      src/objects/Skeleton.js
  2. 8 1
      src/renderers/WebGLRenderer.js

+ 2 - 0
src/objects/Skeleton.js

@@ -19,6 +19,8 @@ function Skeleton( bones, boneInverses ) {
 	this.bones = bones.slice( 0 );
 	this.boneMatrices = new Float32Array( this.bones.length * 16 );
 
+	this.frame = - 1;
+
 	// use the supplied bone inverses or calculate the inverses
 
 	if ( boneInverses === undefined ) {

+ 8 - 1
src/renderers/WebGLRenderer.js

@@ -1322,7 +1322,14 @@ function WebGLRenderer( parameters ) {
 
 				if ( object.isSkinnedMesh ) {
 
-					object.skeleton.update();
+					// update skeleton only once in a frame
+
+					if ( object.skeleton.frame !== info.render.frame ) {
+
+						object.skeleton.update();
+						object.skeleton.frame = info.render.frame;
+
+					}
 
 				}