From 58bd51ef3668a2c225dc168d3be4f9f1564ece69 Mon Sep 17 00:00:00 2001 From: Takahiro Date: Thu, 30 May 2019 17:53:43 +0900 Subject: [PATCH] Update skeleton only once in a frame --- src/objects/Skeleton.js | 2 ++ src/renderers/WebGLRenderer.js | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/objects/Skeleton.js b/src/objects/Skeleton.js index 8764e93cec..539c75bb20 100644 --- a/src/objects/Skeleton.js +++ b/src/objects/Skeleton.js @@ -16,6 +16,8 @@ function Skeleton( bones, boneInverses ) { this.bones = bones.slice( 0 ); this.boneMatrices = new Float32Array( this.bones.length * 16 ); + this.version = - 1; + // use the supplied bone inverses or calculate the inverses if ( boneInverses === undefined ) { diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index bd6b0f83b4..da016412bb 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1306,7 +1306,14 @@ function WebGLRenderer( parameters ) { if ( object.isSkinnedMesh ) { - object.skeleton.update(); + // update skeleton only once in a frame + + if ( object.skeleton.version !== info.render.frame ) { + + object.skeleton.update(); + object.skeleton.version = info.render.frame; + + } } -- GitLab