Hallo, ich hab vor ein Logo (mit transparenz) langsam größer werden zu lassen. Das Problem ist jetzt, dass es nicht flüssig größer wird, sondern "stottert", was auf das resizen zurückzuführen ist. Bicubicresize() kann nämlich nur auf ganze pixel resizen, ich bräuchte aber quasi resize mit dezimalzahlen.... :hm:
Ich hab für die Animation Animate() + bicubicresize() benutzt. Die wichtigen Stellen des Problems hab ich dick markiert.
Vielleicht hat einer eine Idee wie man das doch noch hinbekommt.
Ich hoffe das Problem ist auch einigermaßen verständlich. Ich hab noch ein kleines Beispiel angehangen. (xvid AVI)
Code
Avisource("meinvideo.avi")
Animate(1354, 1530, "pic_logo", "logo.png",1354,1530,7,0,150,300,10,[B]314,245[/B], "logo.png",1354,1530,7,0,150,300,10,[B]352,275[/B])
function pic_logo(clip c, string image, int "logo_start", int "logo_ende" , int "fade_in", int "fade_out", int "fade_level" , int "x", int "y", [B]int "ww", int "hh"[/B]){
vframes=c.Framecount()
vfps=c.Framerate()
logo_start=Default(logo_start, 0)
logo_ende=Default(logo_ende, vframes)
fade_in=Default(fade_in, 0)
fade_out=Default(fade_out, 0)
fade_level=Default(fade_level, 256)
x=Default(x,0)
y=Default(y,0)
vlength=logo_ende-logo_start
fade_in_start=logo_start
fade_in_ende=logo_start+fade_in
fade_out_start=(logo_start+vlength)-fade_out
fade_out_ende=logo_ende
try {
n_video=ImageSource(image,0,0,1,true,pixel_type="rgb32").Loop(vlength).[B]BicubicResize(ww,hh)[/B]#.BicubicResize(round(314*ww),round(245*hh))
}
catch (msg)
{
try {
n_video=ImageSource(image,0,0,1,true).Loop(vlength)
}
catch (msg) {
n_video=ImageSource(image,0,0,1,true).FlipVertical().Loop(vlength)
}
}
n_video=AssumeFPS(n_video,vfps)
n_videoM=ShowAlpha(n_video).FadeIn0(fade_in).FadeOut0(fade_out)
n_video=Mask(n_video,n_videoM)
n_videoIN=BlankClip(n_video,length=logo_start)
n_videoIN=Mask(n_videoIN,n_videoIN)
n_videoOU=BlankClip(n_video,length=1)
n_videoOU=Mask(n_videoOU,n_videoOU)
n_video=n_videoIN+n_video+n_videoOU
c = c.ConvertToRGB32()
n_video=Layer(c,n_video,op="add",level=fade_level,x=x,y=y)
n_video=Mask(n_video,ShowAlpha(c)).ConvertToYV12()
return n_video
}
Alles anzeigen