simpletransition(clip clip1, clip clip2, int overlap, int "mode", string "direction")
Benötigt den Transition-Filter von Shubin.
Erzeugt verschiedene Übergänge zwischen zwei Clips.
Der Ton wird wie bei Dissolve() gemischt.
Beispiel:
loadplugin("transition.dll")
import("simpletransition.avs")
clip1 = colorbars().trim(0,99)
clip2 = clip1.greyscale().normalize(0.0)
simpletransition(clip1,clip2,50)
#simpletransition(clip1,clip2,50,2,"br2tl")
#simpletransition(clip1,clip2,25,mode=4,direction="1")
overlap:
Anzahl der letzten Frames von Clip1 und der ersten Frames von Clip2 die sich überlappen.
Wie bei Dissolve() ist der resultierende Clip kürzer als Clip1+Clip2.
mode:
0 - Clip2 drückt Clip1 weg.
1 - Clip2 schiebt sich über Clip1.
2 - Clip1 wird "ausradiert" und es bleibt Clip2 übrig.
3 - Kreisblende.
4 - Zoomblende.
direction:
Bei mode=0: "l2r", "r2l", "t2b" & "b2t".
Bei mode=1 und mode=2: "l2r", "r2l", "t2b", "b2t", "tl2br", "br2tl", "tr2bl" & "bl2tr".
Erklärung: "l2r" - left to right, "b2t" - bottom to top, "tr2bl" - top right to bottom left, etc.
Bei mode=3 und mode=4: "0" - von Innen nach Außen, "1" - von Außen nach Innen.
Möge es jemandem von Nutzen sein. ;D
# Written by djcj
# Last modified: June 25th 2013
#
# Requires: Transition filter for Avisynth 2.5 - beta - by Shubin
#
function res(clip clp, clip rclp, int width, int height)
{
rclp = bilinearresize(rclp, width, height)
overlay(clp, rclp, clp.width/2-rclp.width/2, clp.height/2-rclp.height/2)
}
function simpletransition(clip clip1, clip clip2, int overlap, int "mode", string "direction")
{
mode = default(mode, 0)
direction = default(direction, "l2r")
dis = dissolve(clip1,clip2,overlap).trim(clip1.framecount-overlap, clip1.framecount)
clp1 = clip1.trim(0, clip1.framecount-overlap-1)
clp2 = clip2.trim(overlap, 0)
clip1 = clip1.trim(clip1.framecount-overlap, 0)
clip2 = clip2.trim(0, overlap-1)
overlayclip = direction=="l2r" ? stackhorizontal(clip2,clip1) :
\ direction=="r2l" ? stackhorizontal(clip1,clip2) :
\ direction=="t2b" ? stackvertical(clip2,clip1) :
\ direction=="b2t" ? stackvertical(clip1,clip2) : nop()
transition0 = direction=="l2r" ? animate(0,overlap-1, "overlay", clip1,overlayclip, -clip1.width,0, clip1,overlayclip,0,0) :
\ direction=="r2l" ? animate(0,overlap-1, "overlay", clip1,overlayclip, 0,0, clip1,overlayclip,-clip1.width,0) :
\ direction=="t2b" ? animate(0,overlap-1, "overlay", clip1,overlayclip,0,-clip1.height, clip1,overlayclip,0,0) :
\ direction=="b2t" ? animate(0,overlap-1, "overlay", clip1,overlayclip, 0,0, clip1,overlayclip,0,-clip1.height) : nop()
transition1 = direction=="l2r" ? animate(clip2,0,overlap-1, "transition", clip1,"l",64, 0, clip1,"l",64,clip1.width) :
\ direction=="r2l" ? animate(clip1,0,overlap-1, "transition", clip2,"l",64, clip1.width, clip2,"l",64,0) :
\ direction=="t2b" ? animate(clip2,0,overlap-1, "transition", clip1,"l", 0,0,clip1.height, clip1,"l", 0,0,0) :
\ direction=="b2t" ? animate(clip1,0,overlap-1, "transition", clip2,"l", 0,0, 0, clip2,"l", 0,0,clip1.height) :
\ direction=="tl2br" ? animate(clip2,0,overlap-1, "transition", clip1,"l",32,0,clip1.height, clip1,"l",32,clip1.width,0) :
\ direction=="br2tl" ? animate(clip1,0,overlap-1, "transition", clip2,"l",32, clip2.width,0, clip2,"l",32,0,clip2.height) :
\ direction=="tr2bl" ? animate(clip1,0,overlap-1, "transition", clip2,"l",96, clip2.width,clip2.height, clip2,"l",96,0,0) :
\ direction=="bl2tr" ? animate(clip2,0,overlap-1, "transition", clip1,"l",96,0, 0, clip1,"l",96,clip1.width,clip1.height) : nop()
transition2 = direction=="l2r" ? animate(0,overlap-1, "overlay", clip1,clip2,-clip1.width, 0, clip1,clip2,0,0) :
\ direction=="r2l" ? animate(0,overlap-1, "overlay", clip1,clip2, clip1.width, 0, clip1,clip2,0,0) :
\ direction=="t2b" ? animate(0,overlap-1, "overlay", clip1,clip2, 0,-clip1.height, clip1,clip2,0,0) :
\ direction=="b2t" ? animate(0,overlap-1, "overlay", clip1,clip2, 0, clip1.height, clip1,clip2,0,0) :
\ direction=="tl2br" ? animate(0,overlap-1, "overlay", clip1,clip2,-clip1.width,-clip1.height, clip1,clip2,0,0) :
\ direction=="br2tl" ? animate(0,overlap-1, "overlay", clip1,clip2, clip1.width, clip1.height, clip1,clip2,0,0) :
\ direction=="tr2bl" ? animate(0,overlap-1, "overlay", clip1,clip2, clip1.width,-clip1.height, clip1,clip2,0,0) :
\ direction=="bl2tr" ? animate(0,overlap-1, "overlay", clip1,clip2,-clip1.width, clip1.height, clip1,clip2,0,0) : nop()
radius = int(sqrt( pow(clip1.width/2,2) + pow(clip1.height/2,2) ))
transition3 = direction=="0" ? animate(clip1,0,overlap-1, "transition", clip2,"c",0, clip2,"c",radius) :
\ direction=="1" ? animate(reverse(clip2),0,overlap-1, "transition", reverse(clip1),"c",0, reverse(clip1),"c",radius).reverse() :
\ animate(clip1,0,overlap-1, "transition", clip2,"c",0, clip2,"c",radius)
transition4 = direction=="0" ? animate(0,overlap-1, "res", clip1,clip2,4,4, clip1,clip2,clip2.width,clip2.height) :
\ direction=="1" ? animate(0,overlap-1, "res", clip2,clip1,clip1.width,clip1.height, clip2,clip1,4,4) :
\ animate(0,overlap-1, "res", clip1,clip2,4,4, clip1,clip2,clip2.width,clip2.height)
return clp1++audiodubex(select(mode,transition0,transition1,transition2,transition3,transition4),dis)++clp2
}
Alles anzeigen