트랜스폼 속성
트랜스폼은 트랜스폼 속성으로 디스플레이어블을 그리는 방식을 제어합니다. 일반적으로 ATL이나 Transform 클래스로 설정합니다.
트랜스폼 속성 목록
다음 트랜스폼 속성을 사용할 수 있습니다.
유형이 위치이면 상대 성분은 pos의 경우 이를 담는 영역 크기에 대한 비율이고, anchor의 경우 디스플레이어블 크기에 대한 비율입니다.
모든 속성이 독립적이지는 않습니다. 예를 들어 xalign과 xpos는 일부 같은 내부 데이터를 갱신합니다. parallel 문에서는 같은 데이터를 공유하는 속성을 둘 이상의 블록에서 조정하면 안 됩니다. angle과 radius 속성은 가로와 세로 위치를 모두 설정합니다.
위치 지정
- pos
- 유형:
(position, position)
- 기본값:
(0, 0)
이를 담는 영역의 왼쪽 위 모서리를 기준으로 한 위치입니다.
- xpos
- 유형:
position
- 기본값:
0
이를 담는 영역의 왼쪽을 기준으로 한 가로 위치입니다.
- ypos
- 유형:
position
- 기본값:
0
이를 담는 영역의 위쪽을 기준으로 한 세로 위치입니다.
- anchor
- 유형:
(position, position)
- 기본값:
(0, 0)
디스플레이어블의 왼쪽 위 모서리를 기준으로 한 앵커 위치입니다.
- xanchor
- 유형:
position
- 기본값:
0
디스플레이어블의 왼쪽을 기준으로 한 가로 앵커 위치입니다.
- yanchor
- 유형:
position
- 기본값:
0
디스플레이어블의 위쪽을 기준으로 한 세로 앵커 위치입니다.
- align
- 유형:
(float, float)
- 기본값:
(0.0, 0.0)
pos와 anchor를 같은 값으로 설정하는 것과 같습니다.
- xalign
- 유형:
float
- 기본값:
0.0
xpos와 xanchor를 이 값으로 설정하는 것과 같습니다.
- yalign
- 유형:
float
- 기본값:
0.0
ypos와 yanchor를 이 값으로 설정하는 것과 같습니다.
- offset
- 유형:
(absolute, absolute)
- 기본값:
(0, 0)
각 방향으로 디스플레이어블을 이동할 픽셀 수입니다. 양수이면 오른쪽 아래로 이동합니다.
- xoffset
- 유형:
absolute
- 기본값:
0
디스플레이어블을 가로로 이동할 픽셀 수입니다. 양수이면 오른쪽으로 이동합니다.
- yoffset
- 유형:
absolute
- 기본값:
0
디스플레이어블을 세로로 이동할 픽셀 수입니다. 양수이면 아래쪽으로 이동합니다.
- xycenter
- 유형:
(position, position)
- 기본값:
(0.0, 0.0)
pos를 이 속성값으로, anchor를 (0.5, 0.5)로 설정하는 것과 같습니다.
- xcenter
- 유형:
position
- 기본값:
0.0
xpos를 이 속성값으로, xanchor를 0.5로 설정하는 것과 같습니다.
- ycenter
- 유형:
position
- 기본값:
0.0
ypos를 이 속성값으로, yanchor를 0.5로 설정하는 것과 같습니다.
- subpixel
- 유형:
boolean
- 기본값:
False
True이면 자식을 서브픽셀 위치 지정으로 배치합니다.
서브픽셀 위치 지정은 픽셀에 그리는 색상과 투명도에 영향을 주지만 어떤 픽셀을 그리는지는 바꾸지 않습니다. 일반적인 경우처럼 이동과 함께 사용할 때는 이동할 방향의 가장자리가 화면에 보인다면 그 방향에 투명한 테두리를 두어야 합니다.
예를 들어 캐릭터 스프라이트를 가로로 이동한다면 좌우에 투명한 테두리를 두는 것이 좋습니다. 보이는 영역 밖까지 이어지는 배경 위에서 화면을 이동하는 경우에는 가장자리가 보이지 않으므로 필요하지 않을 수 있습니다.
회전
- rotate
- 유형:
float 또는 None
- 기본값:
None
None이면 회전하지 않습니다. 그 밖의 경우 지정한 각도만큼 시계 방향으로 회전합니다. 디스플레이어블을 회전하면 아래의 rotate_pad 설정에 따라 크기가 바뀝니다. xanchor와 yanchor가 0.5가 아니면 위치도 바뀔 수 있습니다.
- rotate_pad
- 유형:
boolean
- 기본값:
True
True이면 회전한 디스플레이어블에 여백을 추가하여 너비와 높이를 원래 사각형의 대각선 길이로 맞춥니다. 이렇게 하면 내용이 회전해도 트랜스폼의 크기가 바뀌지 않습니다. False이면 변형된 디스플레이어블을 포함하는 최소 크기를 사용합니다. 고정된 회전에는 이 방식이 더 적합합니다.
- transform_anchor
- 유형:
boolean
- 기본값:
False
참이면 앵커를 잘린 자식 위에 놓고, 자식을 변형할 때 함께 크기를 조절하고 회전합니다. 결과적으로 자식은 앵커를 중심으로 회전하고 확대·축소됩니다.
확대·축소와 뒤집기
- zoom
- 유형:
float
- 기본값:
1.0
지정한 배율로 디스플레이어블을 확대·축소합니다.
- xzoom
- 유형:
float
- 기본값:
1.0
지정한 배율로 디스플레이어블의 가로 크기를 조절합니다. 음수이면 좌우로 뒤집습니다.
- yzoom
- 유형:
float
- 기본값:
1.0
지정한 배율로 디스플레이어블의 세로 크기를 조절합니다. 음수이면 상하로 뒤집습니다.
픽셀 효과
- nearest
- 유형:
boolean
- 기본값:
None
True이면 디스플레이어블과 자식들을 최근접 이웃 필터링으로 그립니다. False이면 이중선형 필터링으로 그립니다. None이면 부모나 기본값이 False인
config.nearest_neighbor에서 상속합니다.
- alpha
- 유형:
float
- 기본값:
1.0
디스플레이어블의 불투명도를 제어합니다.
alpha 트랜스폼은 자식을 구성하는 각 이미지에 독립적으로 적용합니다. 자식들이 겹치면 옷을 통해 캐릭터가 비치는 등 예상하지 못한 결과가 생길 수 있습니다.
Flatten()디스플레이어블로 해결할 수 있습니다.
- additive
- 유형:
float
- 기본값:
0.0
Ren'Py가 수행하는 가산 블렌딩의 정도를 제어합니다. 1.0이면 ADD 연산자로, 0.0이면 OVER 연산자로 그립니다.
가산 블렌딩은 트랜스폼의 각 자식에 독립적으로 적용합니다.
완전한 가산 블렌딩은 대상의 알파 채널을 바꾸지 않습니다. 따라서 가산 이미지를 불투명한 표면에 직접 그리지 않으면 보이지 않을 수 있습니다. 뷰포트,
Flatten(),Frame(), 일부 화면 전환 같은 복잡한 연산은 가산 블렌딩에 문제를 일으킬 수 있습니다.
- matrixcolor
- 유형:
None 또는 Matrix 또는 MatrixColor
- 기본값:
None
None이 아니면 이 트랜스폼의 자식들이 그리는 모든 내용의 색상을 이 속성값으로 바꿉니다. 구조가 유사한 MatrixColor를 사용하는 경우에만 보간을 지원합니다. 자세한 내용은 Matrixcolor를 참조하세요.
- blur
- 유형:
None 또는 float
- 기본값:
None
디스플레이어블 경계까지 이 트랜스폼의 자식을 blur 픽셀만큼 흐리게 합니다. 흐림 효과의 세부 구현은 Ren'Py 버전에 따라 바뀔 수 있으며, 특히 흐리게 만드는 이미지가 변하는 경우 렌더링 오류가 나타날 수 있습니다.
흐림 효과를 적용하기 전에 자식을 투명한 배경에 그려 하나의 이미지로 합칩니다.
극좌표 위치 지정
- around
- 유형:
(position, position)
- 기본값:
(0.0, 0.0)
이를 담는 영역의 왼쪽 위 모서리를 기준으로, 극좌표 벡터를 그리기 시작할 점을 지정합니다. 벡터는
angle과radius로 계산합니다. 시작점과 벡터를 더한 결과가pos입니다.
- angle
- 유형:
float
극좌표로 지정한 위치의 각도 성분입니다. 도 단위이며 0은 화면 위쪽, 90은 오른쪽입니다.
Ren'Py는 이 각도를 0도 이상 360도 미만으로 제한합니다. 범위 밖의 값을 설정하면 사용 전에 같은 방향을 나타내는 범위 내 각도로 바꿉니다. 예를 들어 -10은 350과 같습니다.
- radius
- 유형:
position
극좌표로 지정한 위치의 반지름 성분입니다.
float이면 트랜스폼에 사용 가능한 너비와 높이 중 작은 쪽을 기준으로 배율을 적용합니다.
앵커의 극좌표 위치 지정
참고
극좌표로 앵커를 배치할 수 있지만, 대개 anchor를 (0.5, 0.5)로 설정하고 디스플레이어블의 중심을 배치하는 편이 더 편리합니다.
- anchoraround
- 유형:
(position, position)
디스플레이어블의 왼쪽 위 모서리를 기준으로, 극좌표 벡터를 그리기 시작할 점을 지정합니다. 벡터는
anchorangle과anchorradius로 계산합니다. 시작점과 벡터를 더한 결과가anchor입니다.
- anchorangle
- 유형:
(float)
앵커 극좌표의 각도 성분입니다. 도 단위이며 0은 위쪽, 90은 오른쪽입니다.
Ren'Py는 이 각도를 0도 이상 360도 미만으로 제한합니다. 범위 밖의 값을 설정하면 사용 전에 같은 방향을 나타내는 범위 내 각도로 바꿉니다. 예를 들어 -10은 350과 같습니다.
- anchorradius
- 유형:
(position)
앵커 극좌표의 반지름 성분입니다.
float이면 디스플레이어블의 크기와 모양에 맞추어 가로와 세로에 각각 배율을 적용합니다. 따라서 높이와 너비가 다르고 반지름이 완전한 절댓값이 아니면 anchorangle을 바꿀 때 타원 운동이 됩니다. 이 때문에
int나absolute()값만 지정하는 것을 권장합니다.
자르기와 크기 조절
- crop
- 유형:
None 또는 (position, position, position, position)
- 기본값:
None
None이 아니면 지정한 상자로 디스플레이어블을 자릅니다. 상자는 (x, y, width, height) 튜플이며, x와 y는 자식의 왼쪽 위 모서리를 기준으로 한 상자 왼쪽 위 모서리의 좌표입니다. 모든 값은 원본 이미지 경계 밖까지 확장할 수 있으며 바깥 영역은 투명해집니다. 다만 width와 height는 양수여야 합니다.
corners와 crop을 모두 지정하면 crop이 우선합니다.
- corner1
- 유형:
None 또는 (position, position)
- 기본값:
None
None이 아니면 자를 상자의 왼쪽 위 모서리를 지정합니다. 원본 이미지 경계 밖의 값도 사용할 수 있습니다. crop이 corners보다 우선합니다.
- corner2
- 유형:
None 또는 (position, position)
- 기본값:
None
None이 아니면 자를 상자의 오른쪽 아래 모서리를 지정합니다. 원본 이미지 경계 밖의 값도 사용할 수 있지만
corner1보다 작으면 안 됩니다. crop이 corners보다 우선합니다.
- xysize
- 유형:
None 또는 (position, position)
- 기본값:
None
None이 아니면 지정한 크기로 디스플레이어블을 조절합니다. 첫 번째 요소로
xsize를, 두 번째 요소로ysize를 설정하는 것과 같습니다.fit속성의 영향을 받습니다.
- fit
- 유형:
None 또는 string
- 기본값:
None
아래 표에 따라 디스플레이어블의 크기를 조절합니다. 표에서 말하는 기준 크기는 다음과 같습니다.
둘 중 하나만 None이 아니면 그 값을 유일한 기준 크기로 사용합니다.
그 밖에 fit이 None이 아니면 Transform을 담는 영역을 기준 크기로 사용합니다.
fit, xsize, ysize가 모두 None이면 이 속성은 적용되지 않습니다.
값
설명
contain어느 기준 크기도 넘지 않는 범위에서 최대한 크게 합니다. 가로세로 비율을 유지합니다.
cover모든 기준 크기 이상이 되는 범위에서 최대한 작게 합니다. 가로세로 비율을 유지합니다.
None 또는
fill기준 크기에 정확히 맞도록 디스플레이어블을 늘리거나 압축합니다.
scale-downcontain과 같지만 디스플레이어블을 확대하지는 않습니다.scale-upcover와 같지만 디스플레이어블을 축소하지는 않습니다.
파노라마 이동과 타일링
- xpan
- 유형:
None 또는 float
- 기본값:
None
None이 아니면 360도 파노라마 이미지 위에서 가로로 시점을 이동할 각도로 해석합니다. 이미지 중심은 0도이며 왼쪽과 오른쪽 끝은 각각 -180도와 180도입니다.
- ypan
- 유형:
None 또는 float
- 기본값:
None
None이 아니면 360도 파노라마 이미지 위에서 세로로 시점을 이동할 각도로 해석합니다. 이미지 중심은 0도이며 위쪽과 아래쪽 끝은 각각 -180도와 180도입니다.
- xtile
- 유형:
int
- 기본값:
1
이미지를 가로로 반복 배치할 횟수입니다.
- ytile
- 유형:
int
- 기본값:
1
이미지를 세로로 반복 배치할 횟수입니다.
화면 전환
ATL 화면 전환을 참조하세요.
- events
- 유형:
boolean
- 기본값:
True
True이면 이 트랜스폼의 자식에게 이벤트를 전달합니다. False이면 차단합니다. ATL 화면 전환에서 old_widget에 이벤트가 전달되지 않도록 할 때 사용할 수 있습니다.
기타
- fps
- 유형:
float 또는 None
- 기본값:
None
None이 아니면 트랜스폼 내부의 시간을 불연속적인 단계로 바꿉니다. 예를 들어 fps가 10이면 내부 시간을 0.1의 가장 가까운 배수로 내림합니다. 낮은 프레임률을 재현하는 데 사용할 수 있습니다.
- show_cancels_hide
- 유형:
boolean
- 기본값:
True
일반적으로 숨겨지는 중인 디스플레이어블이나 스크린과 같은 태그나 이름의 대상을 표시하면 기존 대상을 제거하여 hide 트랜스폼을 취소합니다. hide 트랜스폼의 이 속성이 False이면 취소하지 않고 hide 트랜스폼이 끝까지 실행됩니다.
다른 곳에서 설명하는 트랜스폼 속성들도 있습니다.
- 3D 스테이지 속성:
perspective,point_to,orientation,xrotate,yrotate,zrotate,matrixanchor,matrixtransform,zpos,zzoom- 모델 기반 렌더링 속성:
- GL 속성:
- 유니폼:
u_로 시작하는 속성은 사용자 정의 셰이더에서 사용할 수 있는 유니폼입니다.
속성 적용 순서
트랜스폼 속성은 다음 순서로 적용합니다.
fps
mesh, blur
tile
pan
crop, corner1, corner2
xysize, size, maxsize
zoom, xzoom, yzoom
point_to
orientation
xrotate, yrotate, zrotate
rotate
zpos
matrixtransform, matrixanchor
zzoom
perspective
nearest, blend, alpha, additive, shader
matrixcolor
GL 속성, 유니폼
위치 속성
show_cancels_hide
사용을 권장하지 않는 트랜스폼 속성
경고
다음 속성은 새 기능과 충돌할 수 있으므로 현대적인 게임에서는 사용하지 않아야 합니다. 호환성을 위해 남겨 두었으며 같은 동작을 구현하는 새 방법도 함께 설명합니다.
- alignaround
- 유형:
(float, float)
anchor,around,anchoraround를 같은 값으로 설정합니다.
- crop_relative
- 유형:
boolean
- 기본값:
True
False이면
crop,corner1,corner2의 float 성분을 원본 이미지의 너비와 높이에 대한 비율 대신 절대 픽셀 수로 해석합니다.절대 픽셀 수를 표현하려면 crop_relative 속성 대신 각 속성에
absolute()인스턴스를 전달해야 합니다. 필요하면 유형이 불확실한 값을absolute()호출로 감쌀 수 있습니다.