@@ -2694,15 +2694,15 @@ THREE.MMDLoader.prototype.createAnimation = function ( mesh, vmd, name ) {
2694
2694
2695
2695
}
2696
2696
2697
- if ( mesh . geometry . animations === undefined ) {
2697
+ var clip = THREE . AnimationClip . parseAnimation ( animation , mesh . geometry . bones ) ;
2698
2698
2699
- mesh . geometry . animations = [ ] ;
2699
+ if ( clip !== null ) {
2700
2700
2701
- }
2701
+ if ( mesh . geometry . animations === undefined ) {
2702
2702
2703
- var clip = THREE . AnimationClip . parseAnimation ( animation , mesh . geometry . bones ) ;
2703
+ mesh . geometry . animations = [ ] ;
2704
2704
2705
- if ( clip !== null ) {
2705
+ }
2706
2706
2707
2707
mesh . geometry . animations . push ( clip ) ;
2708
2708
@@ -2747,6 +2747,8 @@ THREE.MMDLoader.prototype.createAnimation = function ( mesh, vmd, name ) {
2747
2747
2748
2748
}
2749
2749
2750
+ // TODO: should we use THREE.AnimationClip.CreateFromMorphTargetSequence() instead?
2751
+
2750
2752
var tracks = [ ] ;
2751
2753
2752
2754
for ( var i = 0 ; i < orderedMorphs . length ; i ++ ) {
@@ -2767,13 +2769,13 @@ THREE.MMDLoader.prototype.createAnimation = function ( mesh, vmd, name ) {
2767
2769
2768
2770
if ( clip !== null ) {
2769
2771
2770
- if ( mesh . geometry . morphAnimations === undefined ) {
2772
+ if ( mesh . geometry . animations === undefined ) {
2771
2773
2772
- mesh . geometry . morphAnimations = [ ] ;
2774
+ mesh . geometry . animations = [ ] ;
2773
2775
2774
2776
}
2775
2777
2776
- mesh . geometry . morphAnimations . push ( clip ) ;
2778
+ mesh . geometry . animations . push ( clip ) ;
2777
2779
2778
2780
}
2779
2781
@@ -4139,45 +4141,48 @@ THREE.MMDHelper.prototype = {
4139
4141
4140
4142
setAnimation : function ( mesh ) {
4141
4143
4142
- if ( mesh . geometry . animations !== undefined || mesh . geometry . morphAnimations !== undefined ) {
4144
+ if ( mesh . geometry . animations !== undefined ) {
4143
4145
4144
4146
mesh . mixer = new THREE . AnimationMixer ( mesh ) ;
4145
4147
4146
- }
4147
-
4148
- if ( mesh . geometry . animations !== undefined ) {
4148
+ var foundAnimation = false ;
4149
+ var foundMorphAnimation = false ;
4149
4150
4150
4151
for ( var i = 0 ; i < mesh . geometry . animations . length ; i ++ ) {
4151
4152
4152
- var action = mesh . mixer . clipAction ( mesh . geometry . animations [ i ] ) ;
4153
+ var clip = mesh . geometry . animations [ i ] ;
4153
4154
4154
- if ( i === 0 ) {
4155
+ var action = mesh . mixer . clipAction ( clip ) ;
4155
4156
4156
- action . play ( ) ;
4157
+ if ( clip . tracks [ 0 ] . name . indexOf ( '.morphTargetInfluences' ) === 0 ) {
4157
4158
4158
- }
4159
+ if ( ! foundMorphAnimation ) {
4159
4160
4160
- }
4161
+ action . play ( ) ;
4162
+ foundMorphAnimation = true ;
4161
4163
4162
- mesh . ikSolver = new THREE . CCDIKSolver ( mesh ) ;
4164
+ }
4163
4165
4164
- if ( mesh . geometry . grants !== undefined ) {
4166
+ } else {
4165
4167
4166
- mesh . grantSolver = new THREE . MMDGrantSolver ( mesh ) ;
4168
+ if ( ! foundAnimation ) {
4167
4169
4168
- }
4170
+ action . play ( ) ;
4171
+ foundAnimation = true ;
4169
4172
4170
- }
4173
+ }
4171
4174
4172
- if ( mesh . geometry . morphAnimations !== undefined ) {
4175
+ }
4176
+
4177
+ }
4173
4178
4174
- for ( var i = 0 ; i < mesh . geometry . morphAnimations . length ; i ++ ) {
4179
+ if ( foundAnimation ) {
4175
4180
4176
- var action = mesh . mixer . clipAction ( mesh . geometry . morphAnimations [ i ] ) ;
4181
+ mesh . ikSolver = new THREE . CCDIKSolver ( mesh ) ;
4177
4182
4178
- if ( i === 0 ) {
4183
+ if ( mesh . geometry . grants !== undefined ) {
4179
4184
4180
- action . play ( ) ;
4185
+ mesh . grantSolver = new THREE . MMDGrantSolver ( mesh ) ;
4181
4186
4182
4187
}
4183
4188
0 commit comments