logo Sign In

Post #500874

Author
althor1138
Parent topic
circle/clock wipe functions in avisynth
Link to post in topic
https://originaltrilogy.com/post/id/500874/action/topic#500874
Date created
19-May-2011, 11:30 PM

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)
}