목차

이전 항목

트랜스폼

다음 항목

ATL

링크


원문 보러 가기
오역 신고하기
Created using Sphinx.

트랜지션

트랜지션은 with 명령문 과 함께 사용해 장면을 변경할 때 사용할 효과를 적용하는 기능입니다. 렌파이에 미리 정의된 트랜지션을 이용해 with 문과 함께 즉시 사용할 수도 있습니다. 트랜지션 클래스를 이용하면 새로운 트랜지션을 만들어 사용할 수도 있습니다.

기본 트랜지션

기본 트랜지션은 다음과 같이 with 문에 직접 사용할 수 있습니다:

show bg washington
with dissolve
fade

0.5초 동안 화면을 검은색으로 만든 뒤 0.5초 동안 새로운 화면으로 서서히 전환한다. Fade() 트랜지션 클래스의 객체이다.

dissolve

0.5초 동안 이전 화면에서 새 화면으로 서서히 전환한다. Dissolve() 트랜지션 클래스의 객체이다.

pixellate

0.5초 동안 이전 화면을 색이 다른 작은 사각형으로 만든 후, 0.5초 후에 새로운 화면으로 전환한다. Pixellate() 트랜지션 클래스의 객체이다.

move

0.5초 동안 이미지의 위치를 바꾼다. MoveTransition() 트랜지션 클래스의 객체이다.

moveinright

moveinleft, moveintop, moveinbottom 포함.

0.5초 동안 각 트랜지션에 지정된 위치에서 이미지를 화면으로 들여온다.

moveoutright

moveoutleft, moveouttop, moveoutbottom 포함.

0.5초 동안 각 트랜지션에 지정된 위치쪽으로 이미지를 화면에서 내보낸다.

ease

easeinright, easeinleft, easeintop, easeinbottom, easeoutright, easeoutleft, easeouttop, easeoutbottom 포함

move 계열 트랜지션과 비슷하나 트랜지션이 시작할 때와 종료할 때 속도가 느려지는 트랜지션이다. 트랜지션 작동 시간이 코사인 커브를 기반으로 하는 트랜지션이다.

zoomin

0.5초 동안 이미지를 확대하면서 화면에 표시한다.

zoomout

0.5초 동안 이미지를 축소하면서 화면에서 사라지도록 한다.

zoominout

0.5초 동안 화면에 표시하려는 이미지는 확대되면서 나타나도록 하며, 화면에서 사라지려는 이미지는 축소하면서 사라지도록 한다.

vpunch

0.25초 동안 화면을 세로로 흔든다.

hpunch

0.25초 동안 화면을 가로로 흔든다.

blinds

1초 동안 세로 방향 블라인드가 걷히고 펼쳐지는 것처럼 화면을 전환한다. ImageDissolve() 트랜지션 클래스의 객체이다.

squares

1초 동안 작은 사각형들이 각자 트랜지션을 하면서 화면을 전환한다.

wipeleft

wiperight, wipeup, wipedown 포함.

트랜지션에 지정된 방향대로 화면을 닦아낸다. CropMove() 트랜지션 클래스의 객체이다.

slideleft

slideright, slideup, slidedown 포함.

트랜지션에 지정된 방향대로 새로운 화면을 들여온다. CropMove() 트랜지션 클래스의 객체이다.

slideawayleft

slideawayright, slideawayup, slideawaydown 포함

트랜지션에 지정된 방향대로 새로운 화면을 밀어낸다. CropMove() 트랜지션 클래스의 객체이다.

irisin

irisout 포함

사각형의 카메라 조리개처럼 새 화면을 나타내거나 이전 화면을 사라지게 한다. CropMove() 트랜지션 클래스의 객체이다.

트랜지션 클래스

트랜지션 클래스는 새로운 트랜지션을 만들 때 호출하는 기능입니다. 이 기능을 호출하면 매개변수를 입력할 수 있게 되며 트랜지션 계열을 전부 만들 수 있게 됩니다.

아래 예에서처럼 with 문에서 트랜지션 클래스를 직접 호출할 수도 있습니다.:

# 무지 긴 디졸브.
with Dissolve(10.0)

같은 트랜지션을 중복해서 호출하는 경우에는 define 문 으로 변수에 트랜지션을 배정해 이용하면 됩니다.:

define annoytheuser = Dissolve(1.0)

label start:
     show bg washington
     with annoytheuser
AlphaDissolve(control, delay=0.0, alpha=False, reverse=False)

(움직임이 있는 트랜스폼을) 제어 디스플레이어블로 사용해 이전 화면에서 새 화면으로 화면 전환을 한다. 트랜스폼은 계산된다. 새 화면은 트랜스폼이 불투명할 때, 그리고 이전 디스플레이어블이 투명도를 가지고 있을 때 사용된다.

control
제어에 사용할 트랜스폼.
delay
트랜지션이 끝나기 전까지 걸릴 시간.
alpha
True면 이미지는 그 뒤에 있는 무언가와 함께 합성된다. 기본값인 False면 이미지는 불투명이고, 그 뒤에 있는 무언가를 덮어씌운다.
reverse
True면 알파 채널이 반전된다. 불투명한 영역을 이전 이미지로부터 얻으며, 투명한 영역을 새로운 이미지에서 얻게 된다.
ComposeTransition(trans, before, after)

세 개의 트랜지션을 조합하는 트랜지션을 반환한다. None이 아니라면 beforeafter 트랜지션이 각각 이전 화면과 새 화면에 적용된다. 이렇게 업데이트된 이전 화면과 새 화면은 trans 트랜지션에 공급된다.

# 디졸브하면서 이미지를 안으로 들였다가 내보낸다.
define moveinoutdissolve = ComposeTransition(dissolve, before=moveoutleft, after=moveinright)
CropMove(time, mode="slideright", startcrop=(0.0, 0.0, 0.0, 1.0), startpos=(0.0, 0.0), endcrop=(0.0, 0.0, 1.0, 1.0), endpos=(0.0, 0.0), topnew=True)

장면을 사각형으로 잘라내서 사라지게 하거나 화면에 나타나게 하는 트랜지션을 반환한다. 장면을 사각형 모양으로 잘라내는 식의 트랜지션이라면 무엇이든 구현할 수 있다.

time
화면 전환에 걸리는 시간.
mode

트랜지션 모드의 이름. 트랜지션 모드는 대략 와이프, 슬라이드, 기타, 이 세 가지 그룹으로 나눌 수 있다. "custom" 을 적으면 사용자가 정의한 임의의 모드를 사용할 수 있다.

와이프 모드의 경우에는 이미지는 그대로 고정된 채 트랜지션이 진행됨에 따라 점차 이미지가 나타나게 된다. 예를 들어 "wiperight" 에서는, 이미지를 왼쪽에서 오른쪽으로 닦아낸다. 그러므로 처음에는 이미지의 왼쪽면이 드러나고, 그 다음에는 가운데가 드러나며, 마지막에는 화면 오른쪽에 있는 이미지의 오른면이 나타나게 된다. "wiperight" 외에도 "wipeleft", "wipedown", "wipeup" 를 사용할 수 있다.

슬라이드 모드의 경우에는 이미지가 움직인다. 그러므로 "slideright"에서, 트랜지션이 진행됨에 따라 이미지의 맨 오른쪽 면이 화면 왼쪽 면에서 나타나서 오른쪽으로 점차 옮겨가게 된다. "slideright" 외에도 "slideleft", "slidedown", "slideup" 을 사용할 수 있다.

슬라이드 모드에는 슬라이드어웨이라는 모드도 있는데, 슬라이드와 비슷하나 이전 이미지가 사라지고 그 뒤에 새 이미지를 표시하는 방법을 말한다. 슬라이드어웨이에는 "slideawayright", "slideawayleft", "slideawayup", "slideawaydown" 가 있다.

사각형 카메라 조리개 모양으로 트랜지션을 하는 "irisin" 과 "irisout" 도 사용할 수 있다.

다음의 매개변수는 오직 트랜지션 모드가 "custom"일 때만 사용할 수 있다. 위치값은 화면크기에 비례하는 값이 되며, 크롭의 경우에는 이미지의 크기에 비례하는 값이 된다. 예를 들어 (0.25, 0.0, 0.5, 1.0) 값을 받는 크롭은 이미지의 가운데 부분에서 절반만 받게 된다.

startcrop
트랜지션이 시작할 때 표시할 사각형. 맨 앞에 놓이는 이미지를 지정한 값대로 잘라낸다. 요소가 4개 있는 튜플로 각 요소는 x, y, 가로, 세로를 뜻한다.
startpos
맨 앞에 놓이는 이미지가 화면에 처음 그려질 때 놓이게 될 위치. 요소가 2개 있는 튜플로 각 요소는 x, y를 뜻한다.
endcrop
트랜지션이 끝날 때 표시할 사각형. 맨 앞에 놓이는 이미지를 주어진 값대로 잘라낸다. 요소가 4개 있는 튜플로 각 요소는 x, y, 가로 길이, 세로 길이를 뜻한다.
endpos
맨 앞에 놓이는 이미지가 화면에 마지막으로 그려질 때 놓이게 될 위치. 요소가 2개 있는 튜플로 각 요소는 x, y를 뜻한다.
topnew
True면 새로 나타나는 장면을 화면의 맨 앞에 놓고 잘라내고 움직이게 만든다. False면 이전 화면을 잘라내고 움직이게 한다.
define wiperight = CropMove(1.0, "wiperight")
define wipeleft = CropMove(1.0, "wipeleft")
define wipeup = CropMove(1.0, "wipeup")
define wipedown = CropMove(1.0, "wipedown")

define slideright = CropMove(1.0, "slideright")
define slideleft = CropMove(1.0, "slideleft")
define slideup = CropMove(1.0, "slideup")
define slidedown = CropMove(1.0, "slidedown")

define slideawayright = CropMove(1.0, "slideawayright")
define slideawayleft = CropMove(1.0, "slideawayleft")
define slideawayup = CropMove(1.0, "slideawayup")
define slideawaydown = CropMove(1.0, "slideawaydown")

define irisout = CropMove(1.0, "irisout")
define irisin = CropMove(1.0, "irisin")
Dissolve(time, alpha=False, time_warp=None)

이전 장면에서 새 장면으로 천천히 전환하는 트랜지션을 반환한다.

time
디졸브가 동작하는데 걸리는 시간.
alpha
True면 트랜지션의 결과로 나타나는 디스플레이어블이에 투명도가 있는 채로 화면과 합성된다. False로 두면 트랜지션의 결과물이 화면을 대신하게 된다. 두 번째 경우가 더 효율적이다.
time_warp
타임라인을 조정하는 함수. None 이 아니면 0.0 과 1.0 사이의 비율을 받고, 같은 범위 안의 숫자를 반환하는 함수이어야 한다.
Fade(out_time, hold_time, in_time, color="#000")

out_time 초 후에 color 색의 화면으로 서서히 전환하는 트랜지션을 반환한다. hold_timecolor 색으로 물든 화면에서 몇 초 동안 머무를지를 결정하며 in_time 은 색이 입혀진 화면에서 새 화면으로 전환하는 데 걸리는 시간을 가리킨다.

# 검은 화면으로 페이드아웃했다가 새 화면으로 전환한다.
define fade = Fade(0.5, 0.0, 0.5)

# 검은색 화면에서 잠시 멈춘다.
define fadehold = Fade(0.5, 1.0, 0.5)

# 카메라 플래시 - 순식간에 하얀 화면을 표시했다가 원래 장면으로 돌아간다.
define flash = Fade(0.1, 0.0, 0.5, color="#fff")
ImageDissolve(image, time, ramplen=8, reverse=False, alpha=True, time_warp=None)

디졸브 과정을 제어하는 이미지를 사용하여 이전 장면에서 새 장면으로 디졸브하는 트랜지션을 반환한다. 하얀 픽셀이 가장 먼저 디졸브되며 검은 픽셀은 마지막에 디졸브된다.

image
디졸브에 사용할 제어 이미지. 이미지 파일이거나 이미지 조작기이어야 한다. 제어 이미지의 크기는 디졸브되는 화면의 크기와 같아야 한다.
time
디졸브하는 데 걸리는 시간.
ramplen
사용하려는 램프의 길이. 2의 제곱수이어야 한다. 기본값은 8로, 하얀 픽셀이 완전히 디졸브되었을 때, 이보다 8 단계 어두운 회색 픽셀은 디졸브의 첫 단계에서 완전히 디졸브된다.
reverse
True면 검은 픽셀이 하얀 픽셀보다 먼저 디졸브된다.
alpha
True면 트랜지션의 결과로 나타나는 디스플레이어블이 투명도가 있는 채로 화면과 합성된다. False로 두면 트랜지션의 결과물이 화면을 대신하게 된다. 후자가 더 효율적이다.
time_warp
타임라인을 조정하는 함수. None 이 아니면 0.0 과 1.0 사이의 비율을 받고, 같은 범위 안의 숫자를 반환하는 함수이어야 한다.
define circirisout = ImageDissolve("circiris.png", 1.0)
define circirisin = ImageDissolve("circiris.png", 1.0, reverse=True)
define circiristbigramp = ImageDissolve("circiris.png", 1.0, ramplen=256)
MoveTransition(delay, enter=None, leave=None, old=False, layers=['master'], time_warp=None, enter_time_warp=None, leave_time_warp=None)

이전 장면과 새 장면에서 같은 이미지 태그를 사용하는 이미지의 위치를 보간하는 트랜지션을 반환한다.

delay
보간이 끝나기까지 걸리는 시간.
enter
None이 아니면 새로 나타나는 이미지도 움직인다. enter 의 값은 이미지의 트랜지션 시작 위치를 지정할 때 필요한 트랜스폼이어야 한다.
leave
None이 아니면 사라지는 이미지도 움직인다. leave 의 값은 이미지의 트랜지션 종료 위치를 지정할 때 필요한 트랜스폼이어야 한다.
old
참이면 사라지는 이미지가 나타나는 이미지보다 앞에 놓인다.
layers
이동 효과를 적용시킬 레이어 리스트.
time_warp
보간할 타임 워프 함수. 함수는 0.0 에서 1.0 범위의 값을 받아야 하고 같은 범위의 값을 반환해야 한다.
enter_time_warp
이미지가 나타날 때 적용할 타임 워프 함수.
enter_time_warp
이미지가 사라질 때 적용할 타임 워프 함수.
MultipleTransition(args)

차례로 여러 개의 트랜지션을 나타내는 트랜지션을 반환한다.

args

홀수개의 항목을 가진 리스트. 홀수 번째 항목은 장면이어야 하며, 짝수 번째 항목은 트랜지션이어야 한다. 여기서 사용하는 장면이라는 것은 다음 중 하나이어야 한다:

  • 디스플레이어블
  • False. 이전 장면을 뜻함.
  • True. 새 장면을 뜻함.

보통 첫 번째 인수는 False이며 마지막 인수는 True를 사용한다.

args 리스트에 있는 트랜지션은 적혀있는 순서대로 적용된다. 이전 장면은 트랜지션이 발생하기 전에 있던 화면이며, 새 장면은 트랜지션 뒤에 있는 화면이다. 예를 들어:

define logodissolve = MultipleTransition(
    False, Dissolve(0.5)
    "logo.jpg", Pause(1.0),
    "logo.jpg", dissolve,
    True)

위의 예제에서는 logo.jpg로 디졸브한 후, 1초 동안 정지해있다가 새로운 화면으로 디졸브한다.

Pause(delay)

delay 초만큼 새로운 화면을 표시하는 트랜지션을 반환한다. MultipleTransition 에 쓰면 유용하게 사용할 수 있다.

Pixellate(time, steps)

이전 화면을 픽셀로 만들어 흐릿하게 바꾸었다가 새 화면으로 전환하는 트랜지션을 반환한다.

time
화면 전환하는 데 걸리는 초 단위 시간.
steps
몇 단계에 거쳐 픽셀화할 것인지 결정할 숫자. 단계가 늘어날 수록 픽셀의 크기도 이전 화면에 비해 두 배로 커진다. 따라서 5번째 단계에서는 32x32 크기의 픽셀이 만들어지게 된다.

트랜지션 계열

트랜지션 계열은 서로 비슷한 기능을 하는 트랜지션 묶음을 정의하는 함수입니다.

define.move_transitions(prefix, delay, time_warp=None, in_time_warp=None, out_time_warp=None, old=False, layers=['master'], **kwargs)

move, ease 와 비슷하게 작동하는 move 트랜지션 계열을 정의한다. prefix 에서 받은 값에 따라 트랜지션을 다음과 같이 정의한다:

  • prefix- delay 초 동안 새로운 위치로 이미지를 옮기는 트랜지션.
  • prefixinleft, prefixinright, prefixintop, prefixinbottom - delay 초 동안 새로운 위치로 이미지를 옮기는 트랜지션. 각 트랜지션에 할당된 측면에서부터 표시할 이미지가 화면에 들어오게 된다.
  • prefixoutleft, prefixoutright, prefixouttop, prefixoutbottom - delay 초 동안 새로운 위치로 이미지를 옮기는 트랜지션. 제거할 이미지가 각 트랜지션에 할당된 측면 쪽으로 화면에서 사라지게 된다.
time_warp, in_time_warp, out_time_warp

0.0에서 1.0까지의 범위 내에서 이동이 완료하는 데까지 걸리는 시간에 대한 분수값을 나타낸다. 이미 완료한 선형 이동에 걸린 시간을 0.0에서 1.0 범위에 있는 비율값으로 만들어 반환한다.

트랜지션 진행시간에 비례하는 속도로 이미지를 움직이는 대신에 이동 속도가 가속되었다가 감속되는 등의 함수를 정의하는 데 사용할 수 있다.

각 인수는 각각 화면에 남아있는 이미지, 새로 나타난 이미지, 새로 사라진 이미지에 적용된다.

old
True면 새 디스플레이어블이 아닌 이전 디스플레이어블을 이동시킨다.
layers
이 트랜지션이 적용될 레이어.
# "move"로 시작하는 모든 기본 트랜지션을
# 정의한다.
init python:
    define.move_transitions("move", 0.5)