|
@@ -44,7 +44,7 @@
|
|
|
const clock = new THREE.Clock();
|
|
|
|
|
|
let camera, controls, scene, renderer;
|
|
|
- let mixer, skeletonHelper;
|
|
|
+ let mixer;
|
|
|
|
|
|
init();
|
|
|
animate();
|
|
@@ -52,18 +52,20 @@
|
|
|
const loader = new BVHLoader();
|
|
|
loader.load( 'models/bvh/pirouette.bvh', function ( result ) {
|
|
|
|
|
|
- skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );
|
|
|
- skeletonHelper.skeleton = result.skeleton; // allow animation mixer to bind to THREE.SkeletonHelper directly
|
|
|
+ const skinnedMesh = new THREE.SkinnedMesh();
|
|
|
+ skinnedMesh.visible = false; // dummy skinned mesh for animating the skeleton
|
|
|
|
|
|
- const boneContainer = new THREE.Group();
|
|
|
- boneContainer.add( result.skeleton.bones[ 0 ] );
|
|
|
+ skinnedMesh.add( result.skeleton.bones[ 0 ] );
|
|
|
+ skinnedMesh.bind( result.skeleton );
|
|
|
|
|
|
+ const skeletonHelper = new THREE.SkeletonHelper( skinnedMesh );
|
|
|
+
|
|
|
+ scene.add( skinnedMesh );
|
|
|
scene.add( skeletonHelper );
|
|
|
- scene.add( boneContainer );
|
|
|
|
|
|
// play animation
|
|
|
- mixer = new THREE.AnimationMixer( skeletonHelper );
|
|
|
- mixer.clipAction( result.clip ).setEffectiveWeight( 1.0 ).play();
|
|
|
+ mixer = new THREE.AnimationMixer( skinnedMesh );
|
|
|
+ mixer.clipAction( result.clip ).play();
|
|
|
|
|
|
} );
|
|
|
|