AnimationClipCreator.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. ( function () {
  2. var AnimationClipCreator = function () {};
  3. AnimationClipCreator.CreateRotationAnimation = function ( period, axis ) {
  4. var times = [ 0, period ],
  5. values = [ 0, 360 ];
  6. axis = axis || 'x';
  7. var trackName = '.rotation[' + axis + ']';
  8. var track = new THREE.NumberKeyframeTrack( trackName, times, values );
  9. return new THREE.AnimationClip( null, period, [ track ] );
  10. };
  11. AnimationClipCreator.CreateScaleAxisAnimation = function ( period, axis ) {
  12. var times = [ 0, period ],
  13. values = [ 0, 1 ];
  14. axis = axis || 'x';
  15. var trackName = '.scale[' + axis + ']';
  16. var track = new THREE.NumberKeyframeTrack( trackName, times, values );
  17. return new THREE.AnimationClip( null, period, [ track ] );
  18. };
  19. AnimationClipCreator.CreateShakeAnimation = function ( duration, shakeScale ) {
  20. var times = [],
  21. values = [],
  22. tmp = new THREE.Vector3();
  23. for ( var i = 0; i < duration * 10; i ++ ) {
  24. times.push( i / 10 );
  25. tmp.set( Math.random() * 2.0 - 1.0, Math.random() * 2.0 - 1.0, Math.random() * 2.0 - 1.0 ).multiply( shakeScale ).toArray( values, values.length );
  26. }
  27. var trackName = '.position';
  28. var track = new THREE.VectorKeyframeTrack( trackName, times, values );
  29. return new THREE.AnimationClip( null, duration, [ track ] );
  30. };
  31. AnimationClipCreator.CreatePulsationAnimation = function ( duration, pulseScale ) {
  32. var times = [],
  33. values = [],
  34. tmp = new THREE.Vector3();
  35. for ( var i = 0; i < duration * 10; i ++ ) {
  36. times.push( i / 10 );
  37. var scaleFactor = Math.random() * pulseScale;
  38. tmp.set( scaleFactor, scaleFactor, scaleFactor ).toArray( values, values.length );
  39. }
  40. var trackName = '.scale';
  41. var track = new THREE.VectorKeyframeTrack( trackName, times, values );
  42. return new THREE.AnimationClip( null, duration, [ track ] );
  43. };
  44. AnimationClipCreator.CreateVisibilityAnimation = function ( duration ) {
  45. var times = [ 0, duration / 2, duration ],
  46. values = [ true, false, true ];
  47. var trackName = '.visible';
  48. var track = new THREE.BooleanKeyframeTrack( trackName, times, values );
  49. return new THREE.AnimationClip( null, duration, [ track ] );
  50. };
  51. AnimationClipCreator.CreateMaterialColorAnimation = function ( duration, colors ) {
  52. var times = [],
  53. values = [],
  54. timeStep = duration / colors.length;
  55. for ( var i = 0; i <= colors.length; i ++ ) {
  56. times.push( i * timeStep );
  57. values.push( colors[ i % colors.length ] );
  58. }
  59. var trackName = '.material[0].color';
  60. var track = new THREE.ColorKeyframeTrack( trackName, times, values );
  61. return new THREE.AnimationClip( null, duration, [ track ] );
  62. };
  63. THREE.AnimationClipCreator = AnimationClipCreator;
  64. } )();