|
@@ -507,9 +507,6 @@ module BABYLON.GLTF2 {
|
|
|
const babylonMesh = new Mesh(node.name || `node${node._index}`, this._babylonScene, node._parent._babylonMesh);
|
|
|
node._babylonMesh = babylonMesh;
|
|
|
|
|
|
- node._babylonAnimationTargets = node._babylonAnimationTargets || [];
|
|
|
- node._babylonAnimationTargets.push(babylonMesh);
|
|
|
-
|
|
|
GLTFLoader._LoadTransform(node, babylonMesh);
|
|
|
|
|
|
if (node.mesh != undefined) {
|
|
@@ -818,8 +815,8 @@ module BABYLON.GLTF2 {
|
|
|
babylonBone = new Bone(node.name || `joint${node._index}`, skin._babylonSkeleton!, babylonParentBone, this._getNodeMatrix(node), null, null, boneIndex);
|
|
|
babylonBones[node._index] = babylonBone;
|
|
|
|
|
|
- node._babylonAnimationTargets = node._babylonAnimationTargets || [];
|
|
|
- node._babylonAnimationTargets.push(babylonBone);
|
|
|
+ node._babylonBones = node._babylonBones || [];
|
|
|
+ node._babylonBones.push(babylonBone);
|
|
|
|
|
|
return babylonBone;
|
|
|
}
|
|
@@ -939,7 +936,7 @@ module BABYLON.GLTF2 {
|
|
|
|
|
|
// Ignore animations that have no animation targets.
|
|
|
if ((channel.target.path === AnimationChannelTargetPath.WEIGHTS && !targetNode._numMorphTargets) ||
|
|
|
- (channel.target.path !== AnimationChannelTargetPath.WEIGHTS && !targetNode._babylonAnimationTargets)) {
|
|
|
+ (channel.target.path !== AnimationChannelTargetPath.WEIGHTS && !targetNode._babylonMesh)) {
|
|
|
return Promise.resolve();
|
|
|
}
|
|
|
|
|
@@ -1075,12 +1072,16 @@ module BABYLON.GLTF2 {
|
|
|
const babylonAnimation = new Animation(animationName, targetPath, 1, animationType);
|
|
|
babylonAnimation.setKeys(keys);
|
|
|
|
|
|
- if (targetNode._babylonAnimationTargets) {
|
|
|
- for (const babylonAnimationTarget of targetNode._babylonAnimationTargets) {
|
|
|
- const babylonAnimationClone = babylonAnimation.clone();
|
|
|
- babylonAnimationTarget.animations.push(babylonAnimationClone);
|
|
|
- babylonAnimationGroup.addTargetedAnimation(babylonAnimationClone, babylonAnimationTarget);
|
|
|
+ if (targetNode._babylonBones) {
|
|
|
+ const babylonAnimationTargets = [targetNode._babylonMesh!, ...targetNode._babylonBones];
|
|
|
+ for (const babylonAnimationTarget of babylonAnimationTargets) {
|
|
|
+ babylonAnimationTarget.animations.push(babylonAnimation);
|
|
|
}
|
|
|
+ babylonAnimationGroup.addTargetedAnimation(babylonAnimation, babylonAnimationTargets);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ targetNode._babylonMesh!.animations.push(babylonAnimation);
|
|
|
+ babylonAnimationGroup.addTargetedAnimation(babylonAnimation, targetNode._babylonMesh);
|
|
|
}
|
|
|
}
|
|
|
});
|