I have gained more insight into the bug, so I am rewriting this question. It seems that when using the JSONLoader in r74, the first named bone in an exported Maya scene ends up with a duplicate of all the geometry.
EDIT: Check out this JSFiddle for reference.
For instance, in the provided example, there are 2 boxes, each bound to a single bone with keyframes for animation. There is also a bone without any geometry attached, and it remains stationary. When the stationary bone is named "joint1" in Maya, and the other bones are named "joint2" and "joint3", renaming the stationary bone to "joint4" results in a duplication of both boxes linked to the animated "joint2".
I suspect that there might be a bug causing this issue or I may be making a mistake when loading the animations. Any suggestions would be greatly appreciated. Currently, my only solution is to separate each animated object into different files, but that is not practical. Moreover, this approach does not address the problem when dealing with a multi-bone skeleton. The provided example involves rigs with single bones and no actual deformation.
Below is the loader code I am using:
//Load Scene, Materials, and Animation
var mixer, mesh;
var actions = {};
var sceneLoader = new THREE.JSONLoader();
sceneLoader.load( sceneFile, function( geometry,materials ) {
materials.forEach( function( material ){
material.skinning = true;
});
mesh = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
mixer = new THREE.AnimationMixer( mesh );
actions.main = mixer.clipAction( geometry.animations[ 0 ]);
actions.main.setEffectiveWeight( 1 );
actions.main.play();
scene.add( mesh );
});
//Render
var render = function () {
requestAnimationFrame( render );
controls.update;
var delta = clock.getDelta();
var theta = clock.getElapsedTime();
if ( mixer ) { mixer.update( delta ); }
renderer.render(scene, camera)
}
render();