Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three-stdlib /animation /AnimationClipCreator.js
| import { NumberKeyframeTrack, AnimationClip, Vector3, VectorKeyframeTrack, BooleanKeyframeTrack, ColorKeyframeTrack } from "three"; | |
| const AnimationClipCreator = { | |
| CreateRotationAnimation(period, axis = "x") { | |
| const times = [0, period], values = [0, 360]; | |
| const trackName = ".rotation[" + axis + "]"; | |
| const track = new NumberKeyframeTrack(trackName, times, values); | |
| return new AnimationClip(null, period, [track]); | |
| }, | |
| CreateScaleAxisAnimation(period, axis = "x") { | |
| const times = [0, period], values = [0, 1]; | |
| const trackName = ".scale[" + axis + "]"; | |
| const track = new NumberKeyframeTrack(trackName, times, values); | |
| return new AnimationClip(null, period, [track]); | |
| }, | |
| CreateShakeAnimation(duration, shakeScale) { | |
| const times = [], values = [], tmp = new Vector3(); | |
| for (let i = 0; i < duration * 10; i++) { | |
| times.push(i / 10); | |
| tmp.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1).multiply(shakeScale).toArray(values, values.length); | |
| } | |
| const trackName = ".position"; | |
| const track = new VectorKeyframeTrack(trackName, times, values); | |
| return new AnimationClip(null, duration, [track]); | |
| }, | |
| CreatePulsationAnimation(duration, pulseScale) { | |
| const times = [], values = [], tmp = new Vector3(); | |
| for (let i = 0; i < duration * 10; i++) { | |
| times.push(i / 10); | |
| const scaleFactor = Math.random() * pulseScale; | |
| tmp.set(scaleFactor, scaleFactor, scaleFactor).toArray(values, values.length); | |
| } | |
| const trackName = ".scale"; | |
| const track = new VectorKeyframeTrack(trackName, times, values); | |
| return new AnimationClip(null, duration, [track]); | |
| }, | |
| CreateVisibilityAnimation(duration) { | |
| const times = [0, duration / 2, duration], values = [true, false, true]; | |
| const trackName = ".visible"; | |
| const track = new BooleanKeyframeTrack(trackName, times, values); | |
| return new AnimationClip(null, duration, [track]); | |
| }, | |
| CreateMaterialColorAnimation(duration, colors) { | |
| const times = [], values = [], timeStep = duration / colors.length; | |
| for (let i = 0; i < colors.length; i++) { | |
| times.push(i * timeStep); | |
| const color = colors[i]; | |
| values.push(color.r, color.g, color.b); | |
| } | |
| const trackName = ".material.color"; | |
| const track = new ColorKeyframeTrack(trackName, times, values); | |
| return new AnimationClip(null, duration, [track]); | |
| } | |
| }; | |
| export { | |
| AnimationClipCreator | |
| }; | |
| //# sourceMappingURL=AnimationClipCreator.js.map | |
Xet Storage Details
- Size:
- 2.49 kB
- Xet hash:
- f899647ed2f5172f4a4f3bfeffb9aa3b8d1028d12dfc080eb517dcd84e273e46
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.