본문 바로가기

AviSynth

AviSynth를 이용한 MMD 영상 효과 적용

#====================================================================================================
본 강좌는 버추얼덥, AviSynth, AvsPmod, 그리고 영상 인코딩에 대한 기본적인 지식을 필요로 합니다.
#====================================================================================================


자세한 부분은 기존 강좌를 참고 하시고 일단 모션블러 부분을 다시 보겠습니다.

#================================================

AVISource("F:\test.avi") # or MPEG2Source, DirectShowSource, some previous filter, etc
super = MSuper()
backward_vectors = MAnalyse(super, isb = true, search = 3)
forward_vectors = MAnalyse(super, isb = false, search = 3)
MFlowBlur(super, backward_vectors, forward_vectors, blur=30)

#=================================================


MFlowBlur()에서 blur=30 부분이 모션이 번지는 정도를 결정하는데

화면 해상도 라던가 모션의 빠름 등등을 보고 값을 결정하는게 좋을 것 같습니다.

그럼 모션블러를 적용한 샘플을 잠깐 보죠.

blur = 30


blur = 100



모션블러는 여기까지 하고 블룸 효과에 대해서도 예를 들어 살펴보겠습니다.

일단 스크립트


#=======================================================================

#SetMTMode(2,0)

AVISource("F:\test.avi") # or MPEG2Source, DirectShowSource, some previous filter, etc

Bloom(255, 3)


Function Bloom (clip Last, int "threshold", int "radius") {

LoadVirtualDubPlugin ("BoxBlur.vdf", "BoxBlur")
radius = Default (radius, Round (Width / 240.0))
threshold = Default (threshold, 255)
threshold = Round (Threshold * 219 / 255.0) + 16

bloom = ConvertToRGB32 ("pc.601").BoxBlur (radius, 3, 1000).ConvertToYV12 (matrix = "pc.601")
bloommask = bloom.Tweak (sat = 0, coring = false).Levels (16, 1, threshold, 0, 255, false)
Overlay (last, bloom, mode = "lighten", mask = bloommask)

}

#=======================================================================


SetMTMode(2,0) 이건 멀티쓰레드를 위한 부분으로 멀티코어용 AviSynth를 쓸때 속도를 높이려는 목적으로 사용합니다.
멀티코어가 아니라면 쓸일은 없겠죠.

BoxBlur.vdf 라고 해서 버추얼덥용 외부 블러그인 하나가 필요합니다.

출처는 구글신께 문의를.. ( -_-) 라고 하면 돌맞을 것 같으니 (링크)
참고로 공개소프트입니다. 딴지걸지 마시길.

threshold 값은 0 ~ 255가 들어가는데 255가 기본값입니다.

255가 가장 작은(?) 값이고 숫자가 작아질수록 블룸 효과가 갈해집니다 (?!)

radius 값은 블룸 효과가 번지는 범위인데 영상 해상도의 1/240 이 기본값입니다. 숫자가 클수록 많이 번지죠.

Overlay() 모드에서 mode = "lighten" 이 부분에 쓰일 수 있는 변수로

 "blend", "add", "subtract", "chroma","luma", "lighten", "darken", "softlight", "hardlight",  "difference", "exclusion"
등등 12가지가 있습니다.

기본값은 "blend" 이고, 실제로 블룸 효과에 가장 근접한것은 "lighten", 나머지는.. 한번 실험해 보시면 재미있을 겁니다.


이것도 예제를 보면

Threshold 255, Radius 1, Overlay "lighten" 즉 원본 영상.



Threshold 255, Radius 10, Overlay "lighten"



Threshold 127, Radius 10, Overlay "lighten"



Threshold 250, Radius 6, Overlay "lighten" MotionBlur 50



Threshold 250, Radius 6, Overlay "chroma" MotionBlur 50



Threshold 250, Radius 6, Overlay "subtract" MotionBlur 50



참고로 모션블러와 블룸 효과를 영상에 넣으면 한가지 예상 못한 부가효과가 있는데..

인코딩 했을때 파일 크기가 더 작아집니다 -_-

자세히는 모르겠지만 흐릿흐릿 뭉개진(?) 프레임이 칼같이 딱떨어지는 원본 영상에 비해 압축률이 좋은가 봅니다.


AvsPmod용 .avs 스크립트를 올려두었습니다. 필요한 분은 참고하세요.
(용량 절감을 목적으로 FPS 변환부분이 들어가 있는데 아직 실험중입니다. )



샘플 영상 재탕 -_-;


'AviSynth' 카테고리의 다른 글

MixAudio()  (0) 2010.12.12
Loop()  (0) 2010.12.12
Trim()  (0) 2010.12.12
BlankClip()  (0) 2010.12.12
AviSource(), WavSource(), AudioDub()  (0) 2010.12.12
AC3-ACM Codec 1.5  (1) 2010.12.11
AvsPmod 2.0.5  (0) 2010.12.11
AviSynth 2.5.8  (0) 2010.12.11
AviSynth를 이용한 블룸효과 적용  (0) 2010.10.04
AviSynth를 이용한 모션블러 적용  (2) 2010.10.03