I was having a hard time finding anything like this so I wrote my first 2 functions. I made them specifically to repair the 4-eyed stormtrooper scene in my hybrid script. The frame length of the clips should probably be divisible by 4 but they seem to work with any number. Mileage might vary.
**EDIT**
I re-wrote clockwipe to use duration instead of a startframe and endframe.
Function circlewipe(clip bottom, clip top, int "Duration", float "cirx", float "ciry", float "startsize", float "endsize", float "sharpness")
{
#Set Defaults
Duration=Default(Duration,24)
width=bottom.width()
height=bottom.height()
cirx=Default(cirx,width/2)
ciry=Default(ciry,height/2)
startsize=Default(startsize,70)
endsize=Default(endsize,9000)
sharpness=Default(sharpness,27)
#Make Mask and Overlay it onto clips
animatecircle=Animate(top,0,Duration,"gramama",1,1,cirx,ciry,startsize,1,1,cirx,ciry,endsize).spline64resize(width/10,height/10)\
.tweak(cont=sharpness).blur(1.58).blur(1.58).spline64resize(width,height)
circlemask=mask(top.converttorgb32(),animatecircle.converttorgb32())
circlemaskoverlay=overlay(top,bottom,mask=circlemask.showalpha(),opacity=1)
return(circlemaskoverlay)
}
Function clockwipe(clip bottom,clip top, int "Duration", float "blurriness")
{
width=bottom.width()
height=bottom.height()
wb=blankclip(bottom,duration,color=$FFFFFF)
bb=blankclip(bottom,duration,color=$000000).spline64resize(width/2,height/2)
hs=hshear(wb,0,$000000,0,duration/4,90)
vs=vshear(wb,0,$000000,0,duration/4,90)
topright=hs.crop(0,0,-width/2,-height/2).trim(0,duration/4-1) ++ bb
bottomright=blankclip(topright,length=duration/4,color=$FFFFFF) ++ vs.crop(width/2,0,0,-height/2).trim(0,duration/4-1) ++ bb
bottomleft=blankclip(topright,length=duration/2,color=$FFFFFF) ++ hs.crop(width/2,height/2,0,0).trim(0,duration/4-1) ++ bb
topleft=blankclip(topright,length=duration/4+duration/2,color=$FFFFFF) ++ vs.crop(0,height/2,-width/2,0).trim(0,duration/4-1) ++ bb
sh1=stackhorizontal(topleft,topright)
sh2=stackhorizontal(bottomleft,bottomright)
sv=stackvertical(sh1,sh2).trim(1,duration).spline64resize(width/10,height/10).blur(blurriness).blur(blurriness).blur(blurriness).blur(blurriness).blur(blurriness).spline64resize(width,height)
clockmask=mask(top.converttorgb32(),sv.converttorgb32())
clockoverlay=overlay(top,bottom,mask=clockmask.showalpha(),opacity=1)
return(clockoverlay)
}