Nyaatrap

アダルト百合ゲー開発ブログ。一部記事は18歳未満閲覧禁止です。

Home どれぱら デーモンマスタークリス 商用ゲーム フリーゲーム

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Transform - Ren'pyで画像を変形する方法

Ren'py の特徴の一つに、画像変形の構文が極めて簡潔で柔軟なことがあげられます。
Transform と名付けられているものですが、その基本と応用についてここで少し紹介します。

まず基本から。
基本的には、 Transform は画像を変形させて別の画像を返す関数です。
例えば、"image.png"を左右反転して表示したい場合は以下のように書きます。

show expression Transform("image.png", xzoom=-1)

ここで、xzoom=-1 は反転を意味しています。
つまり、"image.png"のかわりに、Transform で変形した新画像を表示しているわけです。
他のプログラムでもお馴染みの書き方です。

しかし、 ren'py にはこれとは別の ATL (Animation and Transformation Language) という書式があり、
これを利用することによって、より簡潔かつ高度な変形が可能になります。
例えば、左右を反転させる場合、

show expression "image.png":
xzoom -1

とより簡略に書くことができます。

ATLの真の利点は、時間経過に寄って変形のパターンを容易に重ねられることです。例えば、

show expression "image.png":
alpha 0 center (.5,.5)
linear 1.0 alpha 1.0
easeout 3.0 zoom 2.0 additive 1.0

は、image.png を画面の中心に1秒掛けて表示.
その後三秒掛けて二倍に拡大しながら、合成モードを加算に変更しています。
同じ変形を元々の Transform で定義して行おうとすると、非常に手間がかかりますが、 ATL なら簡単です。

続いて応用。
Transform は、 ATL の書式により、新しい Transform を定義することもできます。例えば、

transform flip:
xzoom -1

と定義した場合、

show expression flip("image.png")

という形で表示することができるようになります。
ちなみに、

show expression "image.png" at flip

と書いたり

show expression "image.png":
flip

と書くこともできます。

更に、引数を伴って定義することもできます。例えば、

transform zoomout(time):
linear time alpha 0.0 zoom 3.0

ただし、通常の関数定義と違い、いくつか不可能なことがあるので注意して下さい。
何ができないのかは、残念ながら私も十分には把握していません。

コメント

なるほど、わからん

  • 2013/09/10(火) 21:09:42 |
  • URL |
  • #-
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。