Animation and Transformation Language (ATL) link

Animation and Transformation Language (ATL) では表示する displayable を選択してスクリーンに配置し、 回転やズーム、アルファ変更のような transform を適用する高度な手段を提供します。これらは時間の経過やイベントに対応して変化させられます。

Python で ATL transform と等価なのは Transform() displayable です。ATL transform はプログラム的には作成できません。

Ren'Py スクリプトのステートメント link

ATL コードは 3 つの Ren'Py スクリプトステートメントの一部として使えます。

transform ステートメント link

transform ステートメントは、at 節に与えるATL transform を作成します。transform ステートメントの構文は次の通りです。

atl_transform ::=  "transform" name "(" parameters ")" ":"
                      atl_block

transform ステートメントは、初期化時に実行されなければなりません。 init ブロックの外にあると、自動的に優先度0の init ブロック内に配置されます。transform にはパラメーターリストを与えられ、その場合は呼び出し時に提供されなければなりません。

Name は Python 識別子でなければなりません。ATL ブロックによって作成されたtransform はこの名前に関連付けされます。

transform left_to_right:
    xalign 0.0
    linear 2.0 xalign 1.0
    repeat

image ステートメントの ATL ブロック link

ATL を使う第二の方法は、 image ステートメントの ATL ブロックとして使うことです。これは画像名を指定した transform に関連付けします。この transform にパラメーターを与える方法はないので、この使い道はアニメーションの定義ぐらいです。image ステートメントに ATL ブロックを加える構文は次のとおりです。 :

atl_image ::=  "image" image_name ":"
                  atl_block
image eileen animated:
    "eileen_happy.png"
    pause 1.0
    "eileen_vhappy.png"
    pause 1.0
    repeat

scene ステートメントおよび show ステートメントの ATL ブロック link

ATL を使う最後の方法は、 scene ステートメントや show ステートメントに含めることです。これは、表示される画像を ATL transform でラップします。

atl_scene ::=  stmt_scene ":"
                   atl_block
atl_show  ::=  stmt_show ":"
                   atl_block
scene bg washington:
    zoom 2.0

show eileen happy:
    xalign 1.0

ATL 構文および語義 link

あるステートメントの ATL ブロックは、そのステートメントより深いインデント上に揃えた 1 行以上の論理行からなります。ATL ブロックの各論理行は、1 つ以上の ATL ステートメントを含まなければなりません。

ATL ステートメントには 2 種類あります。 simple ステートメントと complex ステートメントです。 simple ステートメントは ATL ブロックを取りません。1 行の論理行には、カンマで区切られた 1 つ以上の ATL ステートメントを含めます。 complex ステートメントにはブロックがあり、行にそれ以外を置くことはできません。 complex ステートメントの最初の行は必ずコロン : で終わります。

デフォルトでは、ブロック中のステートメントは書いてある順に最初のステートメントから実行されます。実行は、ブロックの終端に達したときに終わります。time ステートメントはこれを該当の節で説明する通りに変更します。

ブロックの実行は、ブロックの全てのステートメントが終了したときに終わります。

ATL ステートメントが式の評価を要求するなら、その式は transform がシーンリストに最初に加えられるときに評価されます(例えば、show ステートメントや ui 関数を使うとき)。

ATL ステートメント link

以下が ATL ステートメントです。

補間ステートメント link

補間ステートメントは、ATL が transform を制御する主な方法です。

atl_interp ::=  ( warper simple_expression | "warp" simple_expression simple_expression )?
                ( property simple_expression ( "knot" simple_expression )*
                | "clockwise"
                | "counterclockwise"
                | "circles" simple_expression
                | simple_expression )*

補間ステートメントの最初の部分で補間をタイムラップする関数を選びます(これは、線形時間から非線形時間への変換関数です)。 それには ATL に登録されたワーパーの名前を与えるか、予約語「 warp 」に続けて関数を与える式を与えてください。どちらの場合でも補間にかける時間の秒数を続けます。

ワープ関数が指定されなければ、補間は瞬間的なものになります。 そうでなければ指定された時間、少なくとも1フレーム持続します。

このワーパーと補間にかける時間は、完了率を計算するのに使われます。補間にかかった時間を補間にかける時間で割った値をワーパーに渡し、ワーパーから返された結果が完了率となります。

補間ステートメントには続いて、いくつかの他の節を加えられます。プロパティーと値があるとき、その値はステートメントの終わりにそのプロパティーがとる値です。この値には数種類の経過で到達します。 :

  • 値に1つ以上の knot が続くと、スプラインモーションが使用されます。そのプロパティーの補間開始時の値から始まって指定した値で終わり、knot を使用してスプラインを制御します。1つの knot には2次曲線が使用され、 2つにはベジェ曲線、3つ以上の knot にはキャットムル-ロム スプラインが使用されます。前者2つでは、 knot はすべて(しばしば描画される経路外となる)制御nodeです。キャットムル-ロム スプラインでは、最初と最後の knot が制御nodeで他の knot は通過点になります。

  • 補間ステートメントに「 clockwise 」または「 counterclockwise 」が含まれると、後述する円運動が使われます。

  • そうでなければ、完了率を使って線形補間されます。

単純式があれば、その評価はワーパーもスプラインも円運動も含まない一つの補間ステートメントを持つ transform でなければなりません。その transform から取られたプロパティーは、このステートメントに含まれていたかのように処理されます。

補間の例です

show logo base:
     # Show the logo at the upper right side of the screen.
     xalign 1.0 yalign 0.0

     # Take 1.0 seconds to move things back to the left.
     linear 1.0 xalign 0.0

     # Take 1.0 seconds to move things to the location specified in the
     # truecenter transform. Use the ease warper to do this.
     ease 1.0 truecenter

     # Just pause for a second.
     pause 1.0

     # Set the location to circle around.
     alignaround (.5, .5)

     # Use circular motion to bring us to spiral out to the top of
     # the screen. Take 2 seconds to do so.
     linear 2.0 yalign 0.0 clockwise circles 3

     # Use a spline motion to move us around the screen.
     linear 2.0 align (0.5, 1.0) knot (0.0, .33) knot (1.0, .66)

重要な特例は pause ワーパーで、続けて時間だけを書いてその時間 ATL の実行を休止します。

プロパティーには、複数の型の値を取れるものがあります。例えば xpos プロパティーは整数、浮動小数点数、または absolute にできます。補間に異なる型の古いプロパティーと新しいプロパティーがあるときの動作は未定義です。

time ステートメント link

time ステートメントは simple ステートメントです。このステートメントが含まれるブロックが実行され始めてからの時間を秒単位で表す simple_expression を 1 つ含みます。

atl_time ::=  "time" simple_expression

このステートメントで指定した時間が経過すると、後に続くステートメントの実行が始まります。この制御の移行は前のステートメントが実行中であってさえ行われ、先行するステートメントは即座に終了します。

time ステートメントには暗黙に無限時間の pause ステートメントが前置されます。つまり、time ステートメントにたどり着いたときに制御が別のところにあれば、time ステートメントは制御を得るまで待ちます。

一つのブロックに複数の time ステートメントがある場合、それらは厳密に時間の経過順でなくてはなりません。

image backgrounds:
    "bg band"
    time 2.0
    "bg whitehouse"
    time 4.0
    "bg washington"

式 ステートメント link

式 ステートメントは、単純式で始まる simple ステートメントです。with 節で 2 つめの単純式も続けられます。

atl_expression ::=   simple_expression ("with" simple_expression)?

最初の単純式は、以下の 3 つのいずれかに評価されるものにできます :

  • transform の場合、その transform が実行されます。with 節は transform が与えられたときは無視されます。

  • 整数または浮動小数点数の場合、pause が実行される秒数になります。

  • これら以外の場合、この式は displayable と解釈されます。この displayable はこの節が実行されたときに transform の子を置き換えるので、アニメーションに便利です。with 節があると、第二の式はトランジションと評価され、そのトランジションが前後の displayable に適用されます。

image atl example:
     # Display logo_base.png
     "logo_base.png"

     # Pause for 1.0 seconds.
     1.0

     # Show logo_bw.png, with a dissolve.
     "logo_bw.png" with Dissolve(0.5, alpha=True)

     # Run the move_right transform.
     move_right

pass ステートメント link

atl_pass ::=  "pass"

pass ステートメントは、何も起こさない simple ステートメントです。これは、ステートメントを分割したいときに使えます。例えば、2 組の choice ステートメントが連続するのではなく分かれている方が望ましいときです。

Repeat ステートメント link

repeat ステートメントは、そのブロックの実行を再び最初から始める simple ステートメントです。式があれば、その評価がブロックの実行回数を与える整数になります(ですから、repeat 2 で終わるステートメントは最高で 2 回実行されます)。

atl_repeat ::=  "repeat" (simple_expression)?

repeat ステートメントは、必ずブロックの最後になければなりません。

show logo base:
    xalign 0.0
    linear 1.0 xalign 1.0
    linear 1.0 xalign 0.0
    repeat

Block ステートメント link

block ステートメントは、ATL ステートメントのブロックを含む complex ステートメントです。繰り返すステートメントをグループ化するのに使えます。

atl_block_stmt ::=  "block" ":"
                         atl_block
show logo base:
    alpha 0.0 xalign 0.0 yalign 0.0
    linear 1.0 alpha 1.0

    block:
        linear 1.0 xalign 1.0
        linear 1.0 xalign 0.0
        repeat

choice ステートメント link

choice ステートメントは、ランダムな選択肢群の 1 つを定義する complex ステートメントです。Ren'py はその選択肢群から 1 つ選び、対応する ATL ブロックを実行します。その後、最後の選択肢の後から実行を続けます。

atl_choice ::=  "choice" (simple_expression)? ":"
                    atl_block

ブロック内の連続する choice ステートメントは貪欲にグループ化されます。simple_expression が与えられているなら、それはそのブロックに浮動小数点数で指定するウェイトになり、なければ 1.0 になります。

image eileen random:
    choice:
        "eileen happy"
    choice:
        "eileen vhappy"
    choice:
        "eileen concerned"

    pause 1.0
    repeat

Parallel ステートメント link

parallel ステートメントを使用して並行して実行される ATL ブロック群を定義出来ます。

atl_parallel ::=  "parallel" ":"
                     atl_block

ブロック内の連続する parallel ステートメントは 貪欲にグループ化されます。全ての parallel ステートメントのブロックが同時進行は実行されます。parallel ステートメントは、最後のブロックが終了したときに終了します。

群中のブロックは、それぞれ独立したもので、かつ異なるプロパティーを操作するものでなければなりません。2 つのブロックが同じプロパティーを変更するときの結果は未定義です。

show logo base:
    parallel:
        xalign 0.0
        linear 1.3 xalign 1.0
        linear 1.3 xalign 0.0
        repeat
    parallel:
        yalign 0.0
        linear 1.6 yalign 1.0
        linear 1.6 yalign 0.0
        repeat

Event ステートメント link

event ステートメントは指定した名前のイベントを引き起こす simple ステートメントです。

atl_event ::=  "event" name

あるブロック内でイベントが引き起こされたとき、指定した名前に対するイベントハンドラがそのブロックに存在しないかチェックされます。存在すれば、制御はイベントハンドラに移ります。存在しなければ、イベントは外側のイベントハンドラに伝播します。

On ステートメント link

on ステートメントはイベントハンドラを定義する complex ステートメントです。on ステートメントは一つのステートメントに貪欲にグループ化されます。 onステートメントでは、1つまたはコンマで区切られた複数のイベント名を扱えます。

atl_on ::=  "on" name [ "," name ] * ":"
                 atl_block

on ステートメントは、イベントを処理するのに使います。イベントが処理されるとき、他のイベントの処理は終了し、新しいイベントの処理が即座に始まります。他のイベントが起こることなくイベントハンドラが終了したとき(すでに default イベントを処理していたのでなければ)、 default イベントが引き起こされます。

on ステートメントの実行は自然には終わりません(しかし、time ステートメントや外側のイベントハンドラによって終了され得ます)。

show logo base:
    on show:
        alpha 0.0
        linear .5 alpha 1.0
    on hide:
        linear .5 alpha 0.0

transform pulse_button:
    on hover, idle:
        linear .25 zoom 1.25
        linear .25 zoom 1.0

Contains ステートメント link

contains ステートメントは、この ATL transform に含まれる displayable ( transform の子 transform ) を設定します。contains ステートメントには 2 種類あります。

contains 式は式を取り、その式を transform の子 transform として設定します。これは ATL transform に第2の ATL transform を含みたいが組み込みたくはないときに便利です。

atl_contains ::=  "contains" expression
transform an_animation:
    "1.png"
    pause 2
    "2.png"
    pause 2
    repeat

image move_an_animation:
    contains an_animation

    # If we didn't use contains, we'd still be looping and
    # would never reach here.
    xalign 0.0
    linear 1.0 yalign 1.0

contains ブロックではこの ATL transform の子 transform として使われる ATL ブロックを定義できます。連続する contains ブロックステートメントは貪欲にグループ化され、 Fixed() でラップされ、この transform の子 transform として設定されます。全ての parallel ステートメントのブロックが同時進行で実行されます。

atl_counts ::=  "contains" ":"

それぞれのブロックで使用する displayable を定義していなければならず、そうでなければ例外が発生します。contains ステートメントは、子が完了するのを待たずにすぐに実行します。このステートメントは引数を子に簡単に渡せるようにするシンタックスシュガーに近いです。

image test double:
    contains:
        "logo.png"
        xalign 0.0
        linear 1.0 xalign 1.0
        repeat

    contains:
        "logo.png"
        xalign 1.0
        linear 1.0 xalign 0.0
        repeat

Function ステートメント link

function ステートメントで、ATL に ATL プロパティーを制御する Python 関数を使わせられます。

atl_function ::=  "function" expression

この関数の定義は Transform() で使われるのと同じです :

  • 第一引数は transform オブジェクトです。このオブジェクトに transform プロパティーを設定できます。

  • 第二引数は出現時間軸で、関数が実行され始めてからの秒数です。

  • 第三引数はアニメーション時間軸で、同じタグのものがスクリーン上にある秒数です。

  • この関数の結果が数の場合、その秒数が経過するとまた呼び出されます(0 秒なら、関数はできるだけ早く呼び出されます)。 関数が None を返したら、制御は次の ATL ステートメントに渡されます。

この関数は第一引数の Transform オブジェクトの変更の他には副作用を持つべきではなく、予測のためにいつどの数値で呼び出されるか分かりません。

init python:
    def slide_function(trans, st, at):
        if st > 1.0:
            trans.xalign = 1.0
            return None
        else:
            trans.xalign = st
            return 0

label start:
    show logo base:
        function slide_function
        pause 1.0
        repeat

ワーパー link

ワーパーは、補間ステートメントが経過したとみなす時間を変更する関数です。デフォルトで以下のワーパーが定義されています。これらは t から t' への関数として定義されています。ここで t および t' は 0.0 から 1.0 の浮動小数点数です(ステートメントの持続時間が 0 なら、t は実行時に 1.0 になります)。 t' は0.0 から始まり、 1.0 で終るべきですが、それ以上でもそれ以下でも可能です。

pause

一時停止し、新しい値に飛びます。t == 1.0 なら t' = 1.0、そうでなければ t' = 0.0 です。

linear

線形補間です。t' = t

ease

最初は遅く、徐々に加速し、それから徐々減速します。t' = 0.5 - math.cos(math.pi * t) / 2.0

easein

最初は速く、徐々に減速します。t' = math.cos((1.0 - t) * math.pi / 2.0

easeout

最初は遅く、徐々に加速します。t' = 1.0 - math.cos(t * math.pi / 2.0)

さらに Robert Penner の easing 関数の殆どがサポートされます。上記と名前を合せるため、関数はリネームされました。これらの基本関数のグラフはこちらで閲覧出来ます。 http://www.easings.net/.

Ren'Py Name easings.net Name
ease_back easeInOut_back
ease_bounce easeInOut_bounce
ease_circ easeInOut_circ
ease_cubic easeInOut_cubic
ease_elastic easeInOut_elastic
ease_expo easeInOut_expo
ease_quad easeInOut_quad
ease_quart easeInOut_quart
ease_quint easeInOut_quint
easein_back easeOut_back
easein_bounce easeOut_bounce
easein_circ easeOut_circ
easein_cubic easeOut_cubic
easein_elastic easeOut_elastic
easein_expo easeOut_expo
easein_quad easeOut_quad
easein_quart easeOut_quart
easein_quint easeOut_quint
easeout_back easeIn_back
easeout_bounce easeIn_bounce
easeout_circ easeIn_circ
easeout_cubic easeIn_cubic
easeout_elastic easeIn_elastic
easeout_expo easeIn_expo
easeout_quad easeIn_quad
easeout_quart easeIn_quart
easeout_quint easeIn_quint

python early ブロック内で renpy.atl_warper デコレーターを使って新しいワーパーが定義できます。これはワーパーを使うファイルの前に読み込まれるファイル内に書きこまれていなければなりません。コードは次のようになります

python early hide:

    @renpy.atl_warper
    def linear(t):
        return t

transform プロパティーの一覧 link

以下の transform プロパティーが存在します。

型(Type)に position が指定されていれば、整数、浮動小数点数、または renpy.absolute にできます。 float ならそれが含まれる領域 (pos ) または displayable (anchor)に対する割合として解釈されます。

なお、全てのプロパティーが独立しているわけではありません。例えば、 xalignxpos はどちらも同じ元となるデータを更新します。parallel ステートメントでは、水平位置を調節していいブロックは 1 つだけ、垂直位置を調節していいブロックも 1 つだけです(同じブロックで両方調節しても良いです)。 angle および radius プロパティーは、水平位置と垂直位置の両方を設定します。

pos link
Type:(position, position)
Default:(0, 0)

これを含む領域の左上隅に対する位置です。

xpos link
Type:

位置表現

Default:0

これを含む領域の左端に対する水平位置です。

ypos link
Type:

位置表現

Default:0

これを含む領域の上端に対する垂直位置です。

anchor link
Type:(position, position)
Default:(0, 0)

displayable の左上隅に対するアンカー位置です。

xanchor link
Type:

位置表現

Default:0

displayable の左端に対する水平アンカー位置です。

yanchor link
Type:

位置表現

Default:0

displayable の上端に対する垂直アンカー位置です。

align link
Type:(float, float)
Default:(0.0, 0.0)

pos と anchor を同じ値にするのと等価です。

xalign link
Type:float
Default:0.0

xpos および xanchor をこの値に設定するのと等価です。

yalign link
Type:float
Default:0.0

ypos および yanchor をこの値に設定するのと等価です。

xoffset link
Type:float
Default:0.0

displayable の水平方向のオフセットのピクセル数です。正の数の右向きのオフセットです。

yoffset link
Type:float
Default:0.0

displayable の縦方向のオフセットのピクセル数です。正の数は下向きのオフセットです。

xcenter link
Type:float
Default:0.0

xpos をこのプロパティーの値に、xanchor を 0.5 に設定するのと等価です。

ycenter link
Type:float
Default:0.0

ypos をこのプロパティーの値に、ranchor を 0.5 に設定するのと等価です。

rotate link
Type:

float または None

Default:None

None なら、回転は起こりません。そうでなければ、画像はこの角度だけ時計回りに回転します。displayable を回転すると、rotate_pad の設定に従ってリサイズされます。 xanchor および yanchor が 0.5 でなければ、これによって位置取りが変わることがあります。

rotate_pad link
Type:boolean
Default:True

True の場合、回転された displayable の幅と高さが、元の幅と高さの斜辺と同じになるように埋め込まれます。これは transform が中身を回転させてもサイズが変わらないことを保証します。 False の場合、 transform は transform された displayable を含む最小限のサイズになります。これは固定回転に向いています。

transform_anchor link
Type:boolean
Default:False

True なら anchor の位置は切り取られた子に配置され、子の transform とともに拡大や回転します。つまりこれは anchor をそれを中心に子が回転したり、サイズが変更したりする点にします。

zoom link
Type:float
Default:1.0

displayable を指定した係数倍ズームします。

xzoom link
Type:float
Default:1.0

displayable を指定した係数倍水平にズームします。負の値は画像を水平に反転します。

yzoom link
Type:float
Default:1.0

displayable を指定した係数倍垂直にズームします。負の値は画像を垂直に反転します。

nearest link
Type:boolean
Default:None

True なら displayable とその子は最近傍補間を使用して描画されます。 False なら displayable とその子は双一次補間で描画されます。None なら親の設定から引き継がれるか、 config.nearest_neighbor が使用されます。これはデフォルトでは False です。

alpha link
Type:float
Default:1.0

displayable の不透明度を制御します。

alpha transform は transform の子で構成される各画像に独立して適用されます。これはキャラクターとの距離を考慮してキャラクターを見るときのように、子が重なり合っていると望まぬ結果になるかもしれません。 Flatten() displayable はこれらの問題の手助けになるでしょう。

additive link
Type:float
Default:0.0

Ren'Py が加算合成をどう処理するかを制御します。 1.0 なら Ren'Py は ADD 処理を使用し、 0.0 なら OVER 処理を使用して描画します。

Additive blending は transform のそれぞれの子に独立して処理されます。

完全な加算合成は対象のアルファチャンネルを置き換えず、加算合成された画像は不透明な部分に直接描画されていなければ見えないでしょう ( viewport, Flatten(), Frame() や一部のトランジションのような複雑な処理は加算合成で問題を起こすかもしれません )。

警告

加算合成はOpenGL や DirectX/ANGLE レンダリングエンジンのようにハードウェアベースのレンダリングエンジンでのみサポートされます。ソフトウェアレンダリングエンジンは加算合成された画像を正確に描画出来ないでしょう。

一旦描画システムが開始すると、 renpy.get_renderer_info()["additive"] は加算合成がサポートされていれば True になります。

around link
Type:(position, position)
Default:(0.0, 0.0)

None を指定するか、これを含む領域の左上に対する極座標の中心を指定します。これで中心を設定すると、position モードで円運動ができます。

alignaround link
Type:(float, float)
Default:(0.0, 0.0)

None を指定するか、これを含む領域の左上に対する極座標の中心を指定します。これで中心を設定すると、align モードで円運動ができます。

angle link
Type:float

極座標における位置の角度成分を取ります。これは、極座標の中心が設定されていないときには未定義です。

radius link
Type:

位置表現

極座標における位置の半径成分を取ります。これは、極座標の中心が設定されていないときには未定義です。

crop link
Type:None or (int, int, int, int) or (float, float, float, float)
Default:None

None でなければ、指定された矩形に displayable を切り取ります。矩形は (x, y, width, height) のタプルで指定されます。小数が指定されて crop_relative が True なら、要素は元画像の幅と高さの割合として扱われます。そうでなければ要素はピクセル値での絶対数と考えられます。

cornerとcropが指定されると、cropがcornerより優先されます。

crop_relative link
Type:boolean
Default:False

True なら crop の小数の要素は元画像の幅と高さの割合として扱われます。

corner1 link
Type:

None または (int, int)

Default:None

None を指定するか、crop ボックスの左上隅を指定します。これは corner より優先されます。

corner2 link
Type:

None または (int, int)

Default:None

None を指定するか、crop ボックスの右下隅を指定します。これは corner より優先されます。

size link
Type:

None または (int, int)

Default:None

None でない場合、displayable を与えられたサイズに合わせます。

これは fit プロパティーに影響されます。.

xsize link
Type:

None または int

Default:None

None でない場合、displayable は与えられた幅に合わせられます。

これは fit プロパティーに影響されます。.

ysize link
Type:

None または int

Default:None

None でない場合、displayable は与えられた高さに合わせられます。

これは fit プロパティーに影響されます。.

fit link
Type:

None または文字列

Default:None

None または Displayable を以下の表に応じてスケールする文字列です。ここでの「方向」は None でない xsizeysize のうちの1つ以上を指します。

Value Description
contain

アスペクト比を維持して各方向の指定を超えない範囲で大きくする

cover

アスペクト比を維持してすべての方向の指定に合う、または超えるように小さくする

None または fill

displayable を正確に方向指定に合うように引き延ばす

scale-down

contain 同様ですが、 displayable のサイズを増加させない

scale-up

cover 同様だが、 displayable のサイズを小さくしない

maxsize link
Type:

None または (int, int)

Default:None

None を指定しなければ、 指定したサイズのボックスに収まる範囲でアスペクト比を維持しつつ displayable を拡大します。

警告

このプロパティーは非推奨です。値が containfit と組み合わせた size の使用を検討してください。

subpixel link
Type:boolean
Default:False

True の場合、ピクセル以下の位置調整を利用してスクリーンに描画されます。

Subpixel によるポジションニングは複数のピクセルに渡って描画され、特定の1つのピクセルには描画されない(透明度を含む)色に影響を与えます。subpixel ポジションは (通常) 移動と組み合わせて使用され、その画像はその端が画面の可視領域にあれば移動方向に透明な境界をもつようになります。

例えばあるキャラクターの立ち絵が水平に移動しているなら、左右に透明な境界線を持つことになります。背景に対するパンニングでは可視領域を拡張して端が見えないのでこれらは起こりません。

delay link
Type:float
Default:0.0

この transform がトランジションとして使われるなら、これはトランジションの持続時間になります。

events link
Type:boolean
Default:True

True の場合、この transform の子にイベントが渡されます。False の場合、イベントはブロックされます(これはATL transform で使用され、イベントが old_widget に達することを防ぎます)。

xpan link
Type:None or float
Default:None

None か、360度のパノラマ画像を水平に振る角度と解釈されます。画像の中心は0度として扱われ、左右はそれぞれ-180から180度になります。

ypan link
Type:None or float
Default:None

None か、360度のパノラマ画像を縦に振る角度と解釈されます。画像の中心は0度として扱われ、上下はそれぞれ-180から180度になります。

xtile link
Type:int
Default:1

水平に敷き詰める画像の個数です(これは xpan が指定されると無視されます)。

ytile link
Type:int
Default:1

縦に敷き詰める画像の個数です(これは ypan が指定されると無視されます)。

matrixcolor link
Type:

None, Matrix または MatrixColor

Default:None

None またはこの transform の子が描画するすべての色を置き換えるプロパティーの値です。詳細は matricolor を参照してください。

これにはモデルベースのレンダリングを config.gl2 を True に設定して有効化する必要があります。

blur link
Type:None or float
Default:None

displayable の境界まで blur ピクセル分この画像の子をブラーします。ブラー方法の正確な詳細は Ren'Py のバージョンで変更するかもしれません。また、特に画像のブラーが変化していくときはブラーが人工的に感じられるかもしれません。

これにはモデルベースのレンダリングを config.gl2 を True に設定して有効化する必要があります。

ドキュメントの他の部分で記述される一連の transform プロパティーもあります。 :

3D Stage プロパティー :
perspective, matrixanchor, matrixtransform, zpos, zzoom
Model-based rendering プロパティー :
blend, mesh, mesh_pad, shader
GL プロパティー :
The GL properties.
Uniforms:

u_ で始まるプロパティーは custom shaders に使用される uniform です。

これらのプロパティーは、以下の順に適用されます :

  1. tile
  2. mesh, blur
  3. crop, corner1, corner2
  4. size, maxsize
  5. zoom, xzoom, yzoom
  6. pan
  7. rotate
  8. zpos
  9. matrixtransform, matrixanchor
  10. zzoom
  11. perspective
  12. nearest, blend, alpha, additive, shader.
  13. matrixcolor
  14. GL Properties, Uniforms
  15. 位置プロパティー

円運動 link

補間ステートメントが予約語 clockwisecounterclockwise を含むとき、円形モーションが補間されます。Ren'Py は開始と終了の位置を比較し、極座標の中心を計算します。そして Ren'Py は開始角度から終了角度まで、指定された方向の回転で進む角度を計算します。円運動の節が与えられたら、Ren'Py は適切な数の円が作られることを保証します。

Ren'Py は angle および radius プロパティーを適切に補間し、円形運動を起こします。 transform が align モードの場合、angle および radius を設定すると align プロパティーが設定されます。そうでなければ、pos プロパティーが設定されます。

外部イベント link

以下のイベントは自動的に実行されます :

start

on ステートメントに進入したときに、これより高い優先度のイベントが起こらなかった場合に実行される擬似イベントです。

show

transform が show ステートメントや scene ステートメントによって表示され、与えられたタグの画像がまだ存在しない場合に実行されます。

replace

transform が show ステートメントによって表示されて指定したタグの画像を置き換えると実行されます。

hide

transform が hide ステートメントやそれと等価な Python を使って非表示されると実行されます。

なお、これが実行されないときがあります。 transform が scene ステートメントを通して除去されたときや、ゲームメニューの終了などによって transform が存在するコンテキストから抜けることで除去されたときです。

replaced

transform が別のもので置き換えられたときに引き起こされます。この画像は、ATL ブロックが完了するまで実際には隠されません。

update

スクリーンが表示されずに、または他のスクリーンを置き換えずに更新されると起ります。これはゲームロード時や、スタイルや翻訳変更時などにまれに起ります。

hover, idle, selected_hover, selected_idle

この transform を含むボタンやこの transform に含まれるボタンが名前通りの状態になったときに引き起こされます。