Resize Abuser
Join Date: Apr 2005
Location: Seattle, WA
Posts: 623
|
Updated the DissolveAGG function, it's now one function with no globals. Changed TFrames to Duration
Code:
# DissolveAGG() June 25th, 2008
# Dissolve with a Wipe. Wipe has alpha channel mask for nice effect.
#
# Inputs
# clip a - starting clip
# clip b - ending clip
# int "Duration" - Number of overlapped frames
# string "Mode" - Four modes are possible: LeftToRight, RightToLeft, TopToBottom, BottomToTop.
# float "WindowSize" - 2.0 is default. larger: more sharp.
# float "MaskSharpnessStart" - 1: Big Blur; 100: Sharpest. Default 50.
# float "MaskSharpnessEnd" - 1: Big Blur; 100: Sharpest. Default 50.
Function DissolveAGG(clip a, clip b, int "Duration", string "Mode", float "WindowSize", float "MaskSharpnessStart", float "MaskSharpnessEnd")
{
#Set Defaults
Duration=Default(Duration,30)
width=a.width()
height=a.height()
Mode=Default(Mode, "LeftToRight")
MaskSharpnessStart=Default(MaskSharpnessStart, 50.0)
MaskSharpnessEnd=Default(MaskSharpnessEnd, 50.0)
WindowSize=Default(WindowSize, 2.0)
AudioMix=Dissolve(a, b, Duration).KillVideo()
a = a.KillAudio()
b = b.KillAudio()
#Duration=Int(Duration/2.0*((2.0-WindowSize)*0.1+2.0))
#Check Input
Assert(Mode=="LeftToRight" || Mode=="RightToLeft" || Mode=="TopToBottom" || Mode=="BottomToTop",
\"DissolveAGG: Only Four Modes are possible: LeftToRight, RightToLeft, TopToBotoom BottomToTop. Mode=" + Mode)
#Set Parameters
EvalString = Mode=="LeftToRight"? "BlankWidth=Int(4/2*WindowSize)
BlankHeight=height
startX1=BlankWidth + 0.5
endX1=1.5
startY1=0
endY1=0
x2=WindowSize*2-2
y2=0
ClipLeft=b
ClipRight=a" : Mode=="RightToLeft"? "BlankWidth=Int(4/2*WindowSize)
BlankHeight=height
startX1=1.5
endX1=BlankWidth + 0.5
startY1=0
endY1=0
x2=WindowSize*2-2
y2=0
ClipLeft=a
ClipRight=b" : Mode=="TopToBottom"? "BlankWidth=height
BlankHeight=Int(6/2*WindowSize)
startX1=0
endX1=0
startY1=BlankHeight + 0.5
endY1=3.5
x2=0
y2=WindowSize*2-2
ClipLeft=b
ClipRight=a" : Mode=="BottomToTop"? "BlankWidth=height
BlankHeight=Int(6/2*WindowSize)
startX1=0
endX1=0
startY1=3.5
endY1=BlankHeight + 0.5
x2=0
y2=WindowSize*3-4
ClipLeft=a
ClipRight=b" : ""
Eval(EvalString)
#Make Mask
BlackBar = BlankClip(a, length=Duration+1, width=BlankWidth, height=BlankHeight, pixel_type="RGB32", fps=a.Framerate())
WhiteBar = BlankClip(BlackBar, color=$FFFFFF)
BWmask = Mode=="LeftToRight" || Mode=="RightToLeft" ? StackHorizontal(BlackBar,WhiteBar) : StackVertical(BlackBar,WhiteBar)
BWmask = BWmask.Animate(0,Duration,"GaussResize",
\ width, height, startX1, startY1, x2, y2, MaskSharpnessStart,
\ width, height, endX1, endY1, x2, y2, MaskSharpnessEnd)
#Glue it together
Trim(a, 0, FrameCount(a)-Duration-2)
last + Overlay(Trim(ClipLeft, 0, Duration), Trim(ClipRight, FrameCount(ClipRight)-Duration-1, 0), mask=BWmask, pc_range=True)
last + Trim(b, Duration+1, 0)
AudioDub(last,AudioMix)
}
Example:
Code:
a = ColorBars().Trim(0,29)
b = a.invert()
DissolveAGG(a,b, 20, "LeftToRight", 2.0)
last + DissolveAGG(a,b, 20, "RightToLeft", 3.0)
last + DissolveAGG(a,b, 20, "TopToBottom", 4.0)
last + DissolveAGG(a,b, 20, "BottomToTop", 5.0)
last + DissolveAGG(a.Loop(2),b.Loop(2), 50, "BottomToTop", 10.0,100.0, 50.0)
BTW what does AGG stand for?
Last edited by mikeytown2; 25th June 2008 at 10:36.
|