Does CanvasRenderer support dynamic animation through skeleton.bones?


I’m new to three.js and am using it in a nw.js app to render a skinned mesh. I’ve successfully imported the .json mesh and bones with three.js, and can draw the mesh using CanvasRenderer.

I am manipulating bone rotation using mesh.skeleton.bones[ x ] and this works if I use WebGLRenderer but not if I use CanvasRenderer. CanvasRenderer draws the mesh (and I can rotate the entire mesh using mesh.rotation) but it does not follow the skeleton if I change the rotation of a single bone. I tried forcing an update using mesh.skeleton.update() as I noted in the docs that it’s called in the WebGLRenderer:

.update () Updates the boneMatrices and boneTexture after changing the bones.This is called automatically by the WebGLRenderer if the skeleton is used with a SkinnedMesh.

I presume this is a limitation of CanvasRenderer and not a bug?

Any insight would be appreciated. Thanks.

Yeah, CanvasRenderer doesn’t support skeleton animation.

Thanks for the quick reply and confirmation. I had just started with the CanvasRenderer so we wouldn’t be subject to WebGL issues (like not working in nw.js in a VMWare virtual machine).

Another question (let me know if I should start a separate thread): when manipulating the skeleton by rotating one bone, it’s distorting the mesh and sometimes elongating the bone, unlike in Blender Pose Mode where the mesh smoothly changes to follow the bone rotation. Any hints as to where I should be looking? Can three.js animate a mesh in the same way Blender does in Pose Mode?

Yeah, maybe better to start another thread.