Files
Datamosher-Pro/Python Version/DatamoshLib/FFG_effects/jscripts/Slice.js
Akash Bora a964ecf891 added new UI for python version
Now python users can also enjoy the easy UI
2022-07-18 17:35:46 +05:30

69 lines
1.4 KiB
JavaScript

// dd_RandomDamage(progZoom).js
// progressive Zoom x and y components of mv if threshold met for frame
let threshold = 95;
var ZOOM = 0;
var doZOOM = 0;
var TRIGGERED = 0;
var nFrames = 5;
var frameCount = 0;
function glitch_frame(frame)
{
var do_or_not = Math.random() * 100;
if(do_or_not > threshold){
if(TRIGGERED > 0){
}else{
TRIGGERED = 1;
frameCount = 0;
ZOOM = 0;
}
}
// only do the glitch if our random number crosses the threshold
if(TRIGGERED > 0 & frameCount <= nFrames){
frameCount++;
ZOOM+= 10
var do_dir = Math.random() * 100;
if(do_dir > 50){
doZOOM = 0 - ZOOM;
}else{
doZOOM = ZOOM
}
// bail out if we have no motion vectors
let mvs = frame["mv"];
if ( !mvs )
return;
// bail out if we have no forward motion vectors
let fwd_mvs = mvs["forward"];
if ( !fwd_mvs )
return;
var M_H = fwd_mvs.length/2;
// clear horizontal element of all motion vectors
for ( let i = 0; i < fwd_mvs.length; i++ )
{
// loop through all rows
let row = fwd_mvs[i];
var M_W = row.length/2;
for ( let j = 0; j < row.length; j++ )
{
// loop through all macroblocks
let mv = row[j];
// THIS IS WHERE THE MAGIC HAPPENS
// ZOOM X & Y VECTORS
mv[0] = mv[0] + ((M_W - j) / 10)*doZOOM;
mv[1] = mv[1] + ((M_H - i) / 10)*doZOOM;
}
}
}else{
TRIGGERED = 0;
}
}