SeExpr 入門¶
バージョン 4.4 で追加: このドキュメントでは SeExpr 式言語の紹介をします。
SeExpr って何?¶
SeExpr はディズニーアニメーションによって設計された埋め込み可能型式言語で、ホストアプリケーションが動的に生成されたコンテンツをレンダーできます。ピクサーは ドキュメントの中で "パターン生成合成スクリプト" と呼んでいます。
SeExpr は Krita 内では塗りつぶしレイヤーとして利用できます。
背景¶
SeExpr が何かを理解するには、ラスター型 と 手続き型 という二つのグラフィックの区別をする必要があります。
今日見かけるコンピュータ合成の大部分のものは前者で-- 写真のような画像、大好きなアニメのスクリーンショット、コラはすべて小さい色の点の集まり、ピクセル が、碁盤目状に並べられています。
ラスターグラフィックには二つの欠点があります。一つは一度作ってしまうと、解像度が 固定 されてしまいます。ズームして魔法のように細部を得られたりはしません。もし変更する必要があれば、ソースに戻って再度標本抽出する必要があり(それは時々不可能なことで)、もしくは Krita のようなラスターグラフィックプログラムで編集します。
しかし最も大きい問題の一つが、プログラムで使える スペース は補助記憶装置の SD カードや RAM でさえ常に限られていることです。圧縮しない限り 画像サイズの二乗に比例して 必要になります。簡単には例えば、Krita の 新しいドキュメントを作る ダイアログでは3つのビット情報を教えてくれます: ピクセルでのサイズ、ピクセル自体のサイズ、それから 必要になる総メモリ です。
四角形のテクスチャのまとめです。ここで必要とされるメモリは 1レイヤーのみ であることに留意してください。
サイズ |
必要メモリ |
---|---|
256 |
256 KB |
512 |
1 MB |
1024 |
4 MB |
2048 |
16 MB |
4096 |
64 MB |
他には ベクターグラフィック があります。ベクターグラフィック、例えば SVG は、形を表現するためにベジェ曲線やスプラインといった数式に依存しています。数学定義に依るため、解像度を失うことなく必要とするサイズにリサイズできます。
SeExpr は異なるカテゴリに位置する、手続き型グラフィック です。ベクターグラフィックと似ていて、手続き型グラフィックは定義に補助記憶装置に数KBしか必要としません。しかし数式に依るのではなく; テクスチャに使われるそれぞれの点の色を計算するために プログラム します。その上精度に縛られることはないので、レイヤーの複雑なパターンを完全に任意の解像度でレンダーすることができます。
スクリプトを書く¶
このチュートリアルでは SeExpr でのスクリプトの描き方、レイヤーにレンダーし、プリセットとして保存します。
始めに レイヤー に行き、新しい塗りつぶしレイヤーを追加します。リストから SeExpr ジェネレーターを選択します。このウィンドウがお出迎えしてくれます:
SeExpr ジェネレーターダイアログは二つのタブに分かれています。とりあえずは Options を見ます。
注釈
タブについての詳しい説明は 塗りつぶしレイヤー にあります。
まずレイヤーをライトブルーに塗りましょう。
最初に、SeExpr は出力変数を定義する必要があるので、$color
としましょう。SeExpr は RGB 色空間 で色を考えるので、色変数は ベクター として知られる3連の数により定義されます。$color
変数を定義し値を与えるところから始めます。
テキストボックスに行き、もし何かテキストがあればすべてクリアします。それから $color
を宣言し [0.5, 0.5, 1]
のように設定します (半分赤、半分緑、全青):
$color = [0.5, 0.5, 1];
SeExpr はどの変数が最後の色の値を持っているか知らなければなりません。これは変数名を、最後の行の、最後に書きます。
$color
スクリプトはこのようになっているはずです:
$color = [0.5, 0.5, 1];
$color
OK をクリックし、最初のスクリプトをレンダーしてみましょう!
警告
とても正確に言うと、SeExpr には カラーマネジメントが存在しません。テクスチャを常に 32ビット浮動小数 の、ガンマ補正、sRGB 画像でレンダーします。Krita は sRGB-elle-V2-srgbtrc.icc プロファイルを使ってお使いのドキュメントの色空間に変換します。
それの意味するところは Color Managed Workflow を見てください。
ウィジェットを使ってスクリプトを管理する¶
他にも変数を定義して編集する方法があります。Fill Layer 1 を右クリックして プロパティ... を選択して塗りつぶしレイヤーのプロパティを開きます。
中央の箱が見えますか?構文的に正しいスクリプトを検出すると、SeExpr は個々の変数を管理する操作が有効になります。この上の例で、$color
を3つの方法で変更できます。
入力フィールドに赤、緑、青チャネルの値を入力する
チャンネルの小さい色のついたスライダーを動かして変更する
ボックス左の四角をクリックして、全く新しい色を選択する。
中央ボックスの下のボタンは常に 新しい変数を追加する になっています。クリックするとこのダイアログが開きます:
このダイアログは SeExpr で使えるすべての型の変数が表示されます:
- 曲線と色曲線¶
SeExpr 版の Stop Gradients で、1組の値から得られる勾配を補完します。
曲線は一次元のグラデーションを表し、それぞれの評価点において単精度浮動小数を返します。
色曲線は RGB グラデーションを表し、それぞれの点に色を返します。
- 整数と浮動小数¶
数。
- ベクター¶
3連の浮動小数。
- 色¶
RGB 色を表すベクター。
- スウォッチ¶
色のリスト。
- String¶
通常は単一の語。
例えば、ベクター タブにある $color
を複製できます:
最初のプリセットを作る¶
スクリプトの準備が出来たら、プリセットを作って再利用できます。
Options タブのトップバーから作れます:
新しい SeExpr プリセットを保存する... を選択すると次のダイアログが開きます:
一番上の編集ボックスでプリセットの名前を編集でき、簡単にわかるようにサムネイルを設定できます。
ヒント
プリセットがコピーであるならダイアログはプリセット名に"Copy"を付します。これは変えることができます。
このダイアログでは次のようなサムネイル設定が可能です:
Changing existing presets¶
プリセットのスクリプトを変更すると、Options タブ一番上のバーに二つのボタンに気が付くでしょう。
再読み込みボタンはプリセットの元の状態を復元し、Overwrite Preset をクリックすると変更を保存します。
さらに、プリセット名はリネームボタンをクリックすることで編集でき、新しい名前を入力して、保存 をクリックします:
プリセットをまとめる¶
プリセットを共有するのは簡単です!SeExpr スクリプトプリセットは Krita の他のリソースと同様です。リソース管理 にある説明に従ってご自身のバンドルを作ってください。