-
Notifications
You must be signed in to change notification settings - Fork 10
/
Randomize Selected Keyframe Values.jsx
47 lines (44 loc) · 1.73 KB
/
Randomize Selected Keyframe Values.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* @name Randomize Selected Keyframe Values
* @version 1.3
* @author Kyle Martinez <www.kyle-martinez.com>
*
* @description Randomize the value for selected 1 dimensional keyframes.
*
* @license This script is provided "as is," without warranty of any kind, expressed or implied. In
* no event shall the author be held liable for any damages arising in any way from the use of this
* script.
*
* In other words, I'm just trying to help make life as an animator easier
* "A rising tide lifts all boats." - John F. Kennedy, 1963
*/
(function() {
function getRandomNumber (min, max) {
return Math.random() * (Math.abs(max) + Math.abs(min)) - Math.abs(min);
}
function getNewKeyframeValue(value, range) {
var offset = getRandomNumber(-range, range);
return value + offset;
}
app.beginUndoGroup("Randomize Selected Keyframe Values");
var comp = app.project.activeItem;
var properties = comp.selectedProperties;
var numProperties = properties.length;
var range = parseFloat(prompt("Range (Units)", ""));
if (isNaN(range) === false) {
for (var p = 0; p < numProperties; p++) {
var property = properties[p];
if (property.propertyValueType === PropertyValueType.OneD) {
var keys = property.selectedKeys;
var numKeys = keys.length;
for (var k = 0; k < numKeys; k++) {
var keyIndex = keys[k];
var keyframeValue = property.keyValue(keyIndex);
var newKeyframeValue = getNewKeyframeValue(keyframeValue, range);
property.setValueAtKey(keyIndex, newKeyframeValue);
}
}
}
}
app.endUndoGroup();
})();