スタイルグラフ
スタイルステップのすべての設定は、パスのつまみです。シェーディング、線、メッシュの辺、クリーンアップ、シートの出力色です。スタイルステップはそのグラフです:パスがボックスとして並んでワイヤーでつながり、それぞれが作る画像を表示し、自分の設定を持つので、結果だけでなく処理そのものが見えます。パスの順番を変えたり、1つをマスクに通したり、2つを混ぜたりできます。
モデルの色から完成したシートまでの画像の連なりが、そのままパイプラインの説明になっています。遅いマシンでは目のボタンでオフにできます。
キャンバスで作業する必要はありません:ノードを選ぶと、右のインスペクターに同じ設定が表示されるので、スライダーは常に手の届くところにあります。ノードを選んでいないときは、インスペクターには色を持つパレットノードが表示されます。
スタイル。プロジェクトはスタイルをいくつでも持て、それぞれ名前と独自のスタイルグラフを持ちます。どれもカメラのものではありません。キャンバスに表示されるのは、スタイル一覧またはウィンドウヘッダーのスタイル選択で選んだもので、ヘッダーのカメラとアクションを描きます。一覧の下の新規スタイルは、表示中のスタイルのコピーを、その名前にちなんだ名前(ピクセルアート 2)で作ります。行の右クリックメニューでは、名前を変更、複製、削除(NAMEを削除…。確認があります。ほかが残っていれば最初のものも削除できます)ができ、キットを保存…(スタイルをキットとして保存)でグラフとパレットを含めたキットとして書き出し、キットを使う…(スタイルのキットを使う)で別のプロジェクトから保存したものをこのプロジェクトのものにします。行を上下にドラッグすると一覧を並べ替えられます。パイプラインのライブラリに保存すると、ノードライブラリのマイパイプラインに表示されます。プロジェクト自身のものはパイプラインの下、ピクセル化ノードの隣にあります。
どのグラフも左側にノードライブラリがあります(パネルの幅が十分なとき)。シーン、アクション、スタイル、アセットのグラフすべて同じです。グラフに入れられるものすべてを、入力と出力を先に、続いて残りをグループ別に、それぞれの説明を1行付けて一覧表示します。検索に入力すると絞り込めます。クリックすると、グラフが決める場所に接続済みで追加されます。キャンバスにドラッグすれば、放した場所に置けます。
ノードを一度も変えないプロジェクトは、相変わらずグラフをまったく保存せず、以前とまったく同じようにレンダリングされます。
最初のグラフ
これはPixor自身のパイプラインを接続したものです:
作業が進む順に左から右へ。ワイヤーは前へ進み、交差はできるだけ少なくなります。
-
カメラはグラフの起点で、このスタイルが描く対象のカメラです。このスタイルを指すカメラはそれぞれ、自分の向きからグラフを1回実行します。
-
レイヤーレンダリングはカメラを受け取ります:このフレームでアクションをレンダリングした結果を、ピクセルアート処理の前に、8つのレイヤーそれぞれを独自の出力に出します:albedo、normals、depth、part、material、coverage、key light、shadow。シェーディングはnormalsとshadowを、線はdepth、normals、partを読みます。これはアトムのグループです:開くと、レンダリングノード(レイヤー化した1フレーム)と、それぞれ選んだレイヤーをフレームから取り出す8つのレイヤーノードの枠になります。ワイヤーは何が何を読むかを示していて、本当に機能します:ノイズフィールドを光と陰のshadowに接続すれば、影はそのノイズになります。接続しなければ、パスはカメラのレンダリングそのものを読みます。
-
パレットはフレームの色を選ぶ場所です。ベースカラーと明暗の帯の数、ディザ、独自のパレット、色相シフト。出力は何も持たず、フレームそのものです。
-
光と陰は、光を各ピクセルのカラーランプ上の段に変えます。これは、あなたも持っているアトムのグループで、順に:明暗の帯(各ピクセルが入るキーライトの帯。境界ではディザがかかり、境界付近ではフレームをまたいで保持)、ワールドの光(ランプ、波の線、雲の影、光の筋、岸の泡)、ハイライト、グロー、ランプシフト(とカラーサイクル)、そしてシェーディングを色に変えるシェーディングの色。その間のワイヤーはシェーディングを運びます:各ピクセルのランプと、その上の段です。
-
線画は、シルエット、内側の線、折り目を見つけます。これもグループで、シルエット、辺(内側の線、折り目、凸の折れ)、線を整える(短い断片を除き、角や重複を取り除きます)、線の色が入っていて、その間をlinesワイヤーがつないでいます。
グループのパラメーターは、中のアトムの設定です。ノード上でもスクリプトからでも、1つを設定すると、それを持つ中のすべてのアトムに設定されます(pxr graph set my.pixor --node light-and-shade --set dither=0.5、--node line-work --set min_inner_line=3)。そのため、アトムから自分で組んだグループも、付属のグループと同じように設定できます。グループを(タイトル以外で)ダブルクリックするか、タイトルの矢印を押すと、開いて中身を見たり、接続し直したりできます。
- ワイヤーフレームのルックがオンのときはワイヤーフレームも表示され、合成の3番目の入力に入ります。2つの原子ノードのグループです。ワイヤーの経路(メッシュの辺がフレームを横切る所と、表面の裏にあるものを省くか、点線にするか、暗くするか)、続いてワイヤーの色。
- 合成は入力を重ね合わせ、ワイヤーの下に何があるかを決め、線同士を細くそろえます。
- クリーンアップは孤立ピクセルを取り除き、線の角を和らげます。2つの部品からなるグループです:孤立ピクセル(残すには小さすぎる同色の連なりと、それを探すパスの回数)、続いて角を滑らかに(線のどの角をランプの1段下で和らげるか)。
- 出力はグラフが作るもの、つまりアクションのこの瞬間におけるこのカメラのスプライトで、それをアセットグラフのSpritesノードがスプライトリストに切り出します。設定は持たず、色はその前のパレットにあります。
それらのノードはパイプラインとまったく同じコードを呼び出すので、最初のグラフは以前とまったく同じピクセルを作ります。Pixor自身のゴールデンテストは毎回両方の方法でレンダリングして比較しています。
使ってみる
どのグラフも同じように動作します:シーン、アクション、スタイル、アセットのグラフすべて、同じバー、同じ右クリックメニュー、同じキーと操作です。この表がそのすべてで、4つすべてに当てはまります。各編集は履歴の1ステップで(Ctrl+Zで元に戻ります)、ノードの移動も含まれます。キーはポインターがグラフの上にある間に使えます。
| やること | 終了 |
|---|---|
| 中ボタンでドラッグ(またはAltと左ボタン) | ビューを移動 |
| スクロール(またはピンチ) | ポインターを中心に、4分の1から2倍までズーム。1段階は3Dビューや2Dビューと同じ刻み。フレームとグラフを最初に開いたときに全体を収めます |
| フレーム、またはHome | すべてのノードを画面に収める |
| ノードのタイトルをクリック | 選択:設定がインスペクターにも表示され、中央にはそれが作るものが表示されます。ノードが重なっている場所では一番上のもの |
| ノードをShift+クリック | 追加で選択、または解除 |
| 背景をドラッグ | ボックス:触れたノードをすべて選択(Shiftで選択済みのものを保持) |
| ノードをドラッグ | 移動し、選択したすべてのノードも一緒に動かす |
| +、またはキャンバスを右クリック › ノードを追加 | ノードライブラリのグループ別の一覧:選んだものが入ります。右クリックからならクリックした場所に。一番上のキットを使う…(キットをグループとして追加)はキットを1つのグループとして入れます |
| 左側に並ぶライブラリの一列 | クリックするとグラフが決める場所に接続して追加し、キャンバスにドラッグすると離した場所に置きます |
| ノード右側の丸い点から、別のノード左側の点へドラッグ | 接続します。ドラッグ中は、ワイヤーが合うすべての点に輪が表示されます |
| ワイヤーを何もないキャンバス上で離す | 合うノードのメニュー:入力で絞り込み、Enterで最初のものを選びます |
| 入力の点をドラッグして外す | 接続を外します。別の入力で離すと、ワイヤーをそこへ移します |
| ワイヤーをクリックしてDelete | 切断します。ポインターの下(または選択中)のワイヤーの中央には×も表示され、1クリックで切断できます |
| F2、またはノードのタイトルをダブルクリック | 名前を変更:タイトルに独自の名前を表示します(グループならその名前)。空にすると、再び種類の名前で呼ばれます |
| Ctrl+D | 選んだノードをその下に複製します。接続はそのままで、同じものを読みます |
| Ctrl+C、Ctrl+V | 選んだノードをコピーし、ポインターの下に貼り付けます。同じ種類のグラフならどこにでも貼り付けられます:別のスタイル、別のアクション、別のアセットパイプライン、グループの中。ある種類のグラフのノードは別の種類には入らず、ステータス行にそう表示されます |
| −(選択したノードを削除)、または削除 | 選んだノードを削除します。それを読んでいたものはそれが読んでいたものを読むので、チェーンはチェーンのままです |
| グループ、またはCtrl+G | 選択したノード(と選んだノード)が1つのグループになり、開いた状態になります |
| グループのタイトル右の矢印、またはタイトル以外の場所でグループをダブルクリック | その場で開く、または折りたたむ |
| キットを保存… | 選んだグループをキットとして、またはグループを選んでいなければグラフ全体を(ダイアログのタイトルにどちらかが表示されます) |
| 整理 | すべてのノードを、作業が進む順に左から右へ並べ直す |
| メモ | 選んだノードの周り、または表示範囲にメモを置く |
| 目のアイコン、または右クリック › ノード画像 | 各ノードが作る画像の表示/非表示 |
| キャンバスを右クリック | 上記すべてとそのキー、そして各グラフ独自のもの:スタイルグラフのプリセットが設定する項目だけを表示、すべてのノードの設定を表示、プリセットのグラフに戻す。シーングラフのコピーを1つに戻す。アセットグラフのシートを1枚に戻す |
グラフごとのノードの画像が示すもの:スタイルグラフでは作るピクセル、シーングラフでは渡すオブジェクトを上から見たもの、アクショングラフではノードの出力が1回分で何をするか(下記)、アセットグラフではリストが渡すフレーム、または書き出すシートやファイル。
アクショングラフでは、ノードの種類ごとに、それを最もよく表す画像があります:
| ノード | 画像 |
|---|---|
| クリップ、キーフレーム、ルーチン、アクション | 再生するものの均等な間隔の4つの瞬間のモデルを左から右へ(ループなら1サイクル分、最後の瞬間は再び始まる直前)。すべてのポーズが収まる1台のカメラで、表示中のカメラの角度から見ます |
| 回転、上下動、揺れ、脈動、スライド、波、ノイズ、ランプ、シーンの時間 | 実際に変化する各数値の、最小から最大までの曲線:回転ならランプ、上下動なら波。同じように変化する数値は1本の線になります(脈動の3つのサイズ) |
| フィルター、適用先、出力、グループ | 渡すものとして:3つより多い数値を動かすならポーズ(クリップ、回転とマージしたクリップ、2コマ打ちでホールドしたもの)、1つの動きなら曲線(回転にステップを付けると階段が描かれます) |
カーブは種類ごとに色分けされます。位置は青、回転はアンバー、サイズは緑、それ以外はピンクで、最も大きく動くものを最大6本表示します。ポインターを図の上に置くと各線の名前と、ほかに何本あるかが表示されます。動くものがモデルの一部でない場合(カメラ、ライト)、ポーズはカーブ表示に切り替わります。何も変えないノード(定数や、存在しないクリップ)は、図の代わりに動きなしと表示します。カーブを横切る線やポーズの下のバーは、再生中のタイムラインの時間を追います。
画像はPixor独自のCPUラスタライザーで、専用のスレッド上に小さく描かれ、選んだノードのものが最初に描かれます:グラフが画像を待つことはありません。ノードは次の画像の準備ができるまで前の画像を保持するので、何も点滅しません。ノードが渡すものを変えない編集では、描き直しません。1ノードあたり騎士で約25ms、人型FBXのテスト用データで約40msかかるので、20個のノードでも編集から1秒以内にすべて描かれます。
メモはノードの背後にある枠で、上端に自分の言葉を書けます。グラフのこの部分が何のためか、次に何を試すかなど。そのまま入力できます。左上のつまみでメモと中のすべてのノードを動かせるので、メモは大きなグラフの一部を説明するだけでなく、まとめておく手段でもあります。右下の角でサイズを変え、マイナスで削除します(ノードは残ります)。メモはピクセルを一切変えません。
ノードのスライダーをドラッグしている間は、そのノードの画像が最初に作り直され、次に選んだノード、残りは順番に作り直されます。そのため、見ている場所に変更がすぐ表れます。
ワイヤーは種類ごとに色が違うので、何がどこに合うか読まなくても分かります:パレット色のレイヤー、マスク、ピクセルごとの数値、法線、ランプ、パレット、カメラ、レンダリング、シェーディング、線、ワイヤーパス、そして値(オン/オフ、数値、文字列)。何も接続されておらず、接続が必要な入力は赤い輪で囲まれ、下端の行に何が問題かが表示されます。種類の違うワイヤーや、グラフを循環させてしまうワイヤーは、離した時点で拒否されます。
ノードとは
ライブラリとノードを追加メニューでは、次のグループに分けて一覧表示されます:
| グループ | ノード |
|---|---|
| 入力 | カメラ、レンダリング、レイヤー(アルベド、法線、深度、パーツID、マテリアルID、カバー率、レンダリングのキーライトまたは影)、画像、フィルライト、モーション、面のディザ、ループの位相、色のランプ、ランプ上の位置、マテリアルのチャンネル(メタリック、ラフネス、発光、オクルージョン、透過)、そして縁のピクセル(メッシュ自身の辺が、すべての手前でフレームを横切る場所) |
| パス | シェーディング、線、メッシュの辺、合成、クリーンアップ、変換先パレット:それぞれ1つの箱にパス全体が入っています |
| シェーディング | 明暗の帯、ワールドの光、ハイライト、グロー、ランプシフト、シェーディングの色、そして手描き風の仕上げ:シェイプ、帯をなくす、きらめき、帯を和らげる、ハッチ |
| 線 | シルエット、辺、線を整える、線の色、色の境界、線の太さ |
| ワイヤーフレーム | ワイヤーの経路、ワイヤーの色 |
| クリーンアップ | 孤立ピクセル、角を滑らかに、シルエットを整える |
| 色 | パレット、最も近い色(ランプとは別に、各ピクセルを自身に最も近いパレット色に)、ランプの段を変える、マスク箇所で段を変える、平らにする、パレットのディザ、ランプマップ、タイルの色、サブピクセルの動き |
| マスク | しきい値、パーツで、マテリアルで、向きで、ノイズ、パターン、不透明なピクセル、否定、かつ、または |
| ミックス | マスクで選択、ディザの混合、重ねるレイヤー |
| 数学 | 数値、追加、減算、乗算、除算、小さい、大きい、符号なし、割合、整数、間のホールド、リマップ、ミックス、ステップの位置、スムーズステップ、一致度、長さ、数値として、ノイズフィールド(ノイズマスクがしきい値をかけるノイズを数値として) |
| Space | オフセット、ぼかし、傾斜、拡大、縮小、くぼみ:それぞれピクセルの周囲をどこまで見るかを示し、それによってタイルの継ぎ目が正確に保たれます |
| 値 | すべてのプロパティは入力を参照 |
| グループ | インとアウト(グループ内のポート) |
| 出力 | 出力、CRT(見るための画像で、スプライトにはなりません) |
その上にライブラリはパイプライン(プロジェクトのスタイルとピクセル化)、マイパイプライン、マイノードを表示します。
画像は自分だけのレイヤーです:紙の質感、パターン、描いた空、ロゴ。各ピクセルを画像の色に最も近いパレットの色にし、配置した位置からスプライト自身のピクセル上に置くか、フレーム全体に並べます。マスクで選択で好きな場所に置き、重ねるレイヤーで上に重ねます。画像は一度読み込まれてノードに保持されるので、保存したルックやキットにも含まれます。スクリプトからは:
pxr graph add my.pixor --node picture --set file=logo.png --set tile=false # node 8 on a new project
pxr graph add my.pixor --node layer-over --in under=4 --in over=8 # node 9: the logo over the palette's frame
pxr graph wire my.pixor --from 9 --to 5 --slot layer # into the Output
混合で新しい色は生まれません。Pixorはパレットのインデックス空間で処理するので、混合ではどちらかのピクセルを選ぶだけで、2色を混ぜてパレットにない3色目を作ることはありません。ディザの混合はAとBを規則的なパターンで並べます。これはピクセルアーティストの混ぜ方です。
手描きのような仕上げ
一部のノードは、陰影を付けた後にピクセルアーティストが手でやることを行います。最初のグラフにはどれも入っていないので、必要なものを追加してください。shadingに作用するものは、ランプシフトとシェーディングの色の間に(光と陰グループを開いて)、下の順で入れます。linesに作用するものは辺と線の色の間に(線画を開いて)入れます。これらが置くパターンはすべて表面に乗るので、モデルの上をうごめくのではなくモデルと一緒に動き、作るものがパレットから外れることもありません。ただしCRTは意図的に外れます。ピクセルの周囲や表面上の位置で判断するもの(シェイプ、きらめき、ハッチ、帯をなくす)は、前のフレームから表面が動いていない場所ではそのときの判断を保つので、ちらつきを加えません。それを含むグラフを通るループクリップは、まず1周してから始まるので、最初のフレームが最後のフレームに続きます。
| ノード | 接続する | 働き | 設定 |
|---|---|---|---|
| シェイプ | シェーディング → シェーディング | 光と影のシェイプを手描きのように整えます:最小より小さい1つの帯のシェイプは、周囲の大半を占める帯になり、その後、各ピクセルはスムーズの範囲内で最も多いピクセルの帯になります。これでその幅の突起が取れ、境界が滑らかになります。同じパーツ・同じランプのピクセルだけが互いに数えられ、帯にはピクセルの周囲の大半が必要なので、独自の色の点は孤立ピクセルに任されます。面が動かず光も同じピクセルは、前のフレームで与えられた帯を保ちます。 | 最小、スムーズ |
| 帯をなくす | シェーディング(+線)→ シェーディング | シルエット、パーツの縁、線に沿って一定の距離を走る帯の縁(ふくらんだような見た目)を、手で段を付けるように、ひと続きごとに1ピクセルずらします。半分なら、縁に沿って4ピクセルごとに2ピクセル。表面上で数えるので、段は表面と一緒に動きます。 | 範囲内(端からのピクセル数)、量 |
| きらめき | シェーディング(+マスク、+光)→ シェーディング | マスクが設定された各パーツ(フレーム内のどこにあっても、レンダリング上のパーツ)に、意図的なハイライトを1つ置きます。最上段の帯の中で最も明るいピクセルに置き、同じ明るさのものが2つあれば前のフレームの位置を保ちます。パーツごとでさらに多く置けて、それぞれが互いに少なくとも間隔だけ離れます。接続しなければ、光はキーライトです。 | サイズ(1または2)、パーツごと、間隔、きらめきのみ(そこにあるほかのハイライトは最上段の帯まで下がります) |
| 帯を和らげる | シェーディング → シェーディング | 2つの帯の間の階段状の角を和らげます:2段以上離れた帯の間(落ち影、ランプ、ハイライト)では、角がその中間の段になります。隣り合う帯の間では、ディザを使うと、面に敷いた市松模様の片方の色にある角がもう一方の帯 | 両面、ディザ |
| ハッチ | シェーディング → レイヤー | シェーディングの色に、最上段より下の各帯の上へ斜線、クロスハッチ、点を重ねたもの。暗い帯ほど密になり、1段下の色か線の色で描かれます。ハッチングの帯はディザ領域と同じく模様なので、クリーンアップはストロークの間のピクセルに手を加えません。シェーディングの色の代わりになります。 | パターン、線の色で |
| くぼみ | (normals, depth) → number | 表面がどれだけ内側に折れ込んでいるか:折り目では0より上、稜線では0より下。しきい値をかけて−1でマスク箇所で段を変えるに接続すると、折り目が1段暗くなります。接続しなければレンダリング結果を読みます。 | 半径、深度の段差 |
| 色の境界 | (lines, albedo) → lines | 1つのパーツの中で塗りの色が変わる所に引く線。暗い側に引くので1ピクセル幅で、折り目と同じ色になります(なので線の色に折り目の色を与えてください)。線を整えるの前に置くと、角や二重線のない線になります。接続しなければ、モデル自身の色を読みます。 | コントラスト |
| 線の太さ | 線 → 線 | 光と反対側で2ピクセルの太さになるシルエットと、その周りの枠の数だけのアウトラインの輪。色は外側の線の色、または独自の色なら色(パレットの最も近い色)。内側の線がシルエットと接する場所は1ピクセルのままです。 | 影側、枠、独自の色、色 |
| シルエットを整える | レイヤー → レイヤー | アウトラインから1ピクセルのトゲを取り除き(細いパーツの先端は除く)、1ピクセルのへこみや穴を周りの色で埋めます。アウトラインの色で埋めると線が2ピクセルの太さになる場合は、その色は使いません。 | とげ、切り欠き |
| パレットのディザ | レイヤー(+光)→ レイヤー | 各ピクセル自身の表面色を、接続された係数で照らし(1でそのまま)、それに最も近く混ざるパレット色の組(Yliluomaのディザ)で、表面のしきい値に沿って配置します。線は残り、残りはクリーンアップが手を付けないディザになります。 | 組の広がり:大きいほど近い組に限られます |
| ランプマップ | 数値(+ランプ)→ レイヤー | 画像の帯から読み取ったアーティストのランプ。0〜1の数値で、その上を暗から明へ選びます。複数行の帯なら、各ランプが独自の行を持ちます。画像がなければ、色自身の帯を使います。キーライトをリマップを通してここに接続します。 | ファイル |
| タイルの色 | レイヤー → レイヤー | 左上からタイルに分けたフレームで、NESが8 × 8の3タイルを並べるように、各タイルを決まった色数に抑えます:最もよく使われる色が残り(近傍の3つと食い違うピクセルはそちらの色として数えるので、ラスタライザーの縁のピクセルで選択が揺れません)、残りはその中で最も近い色になり、タイル内でその色にぽつんと残ったピクセルは近傍の色になります。 | タイル、色 |
| サブピクセルの動き | レイヤー(+モーション)→ レイヤー | 1フレームにまだ下にあるのピクセル数未満しか動かないパーツ(呼吸、揺れ)は、その動きを縁のピクセルで表します。一部しか覆われていないピクセルはランプを1段下がり、これから入り込む空のピクセルは、4分の1が覆われた時点でその色になります。グラフのどこにでも置けます。縁はレンダリングのものなので、合成の後でも機能し、アウトラインはそのままです(その内側の縁のピクセルだけが変わります)。 | まだ下にある、段数 |
| CRT | レイヤー → レイヤー | その画像は画面上のフレームです。走査線、シャドウマスク、液晶のグリッドで、1ピクセルが数画面ピクセルになります。その画像はパレット外なので、見るためと静止画のためだけのものです。レイヤーはそのままスプライトへ進み、どのシートや書き出しにも画面効果は入りません。選ぶと2Dビューに画面が表示され、最初は整数倍で表示されます。pxr stages MODEL --style KIT --node crtはcrt.still.pngとして書き出します。最後、出力の直前に置きましょう。 |
スクリーン、サイズ |
スクリプトからは、ほかのノードと同じように:
pxr graph add my.pixor --node tidy-silhouette --in layer=3 # node 8, after Cleanup
pxr graph wire my.pixor --from 8 --to 4 --slot layer # and into the palette
きらめきなどshadingを受け取るノードは、シェーディングのある光と陰の中に入れます(その外では、グループは完成したレイヤーを出力します)。アプリでグループを開いてそこに追加するか、グループをキットとして保存し、編集してpxr graph swap --kitで戻します。
それぞれにゴールデンケース(tests/golden/cases.txt、hand-*)があります。ルックの初期グラフと追加したノードを、pxr render --styleが読むスタイルグラフのキットとして収めたものです。
すべてのプロパティが入力
ノードの設定はそのプロパティです。ノード内の行で、それぞれ左端にポートがあります。ノード上で設定するか、値を接続すると、行がグレーになり、ワイヤーが運ぶ値を表示します。値はそれ自体がノードで、ライブラリの値の下にあります。数値、オン/オフ、角度、文字、そしてそれらの計算(値を加算、値を減算、値を乗算、値を除算、小さい値、大きい値、上にある、反対側、両方オン、どちらかがオン、値を選ぶ)で、その被演算子もプロパティです。1つのオン/オフを3つのノードに接続すれば、3つを一度にオン・オフできます。
プロパティは名前付きのグループにまとまっています(リマップの開始と終了、辺の色と探しています)。グループ名をクリックすると折りたためます。折りたたんだプロパティへのワイヤーは、グループ名につながります。
グループのプロパティは値の入力です。プロパティに値が接続されたノードをグループ化すると、各値がグループの入力になります。入力名は値の接続先のプロパティ名で、グループのほかの入力の後に並びます:グループのボックス上の行として、そこで設定する(そこから接続された中のすべてのプロパティが設定されます)か、外から接続します。
スタイルのセクションが設定するグループ(光と陰、線画、ワイヤーフレーム、クリーンアップ)は、中の部品のプロパティだけでなく、それらのセクションによっても設定されます。パレットはフレームの色で、色のセクションが設定します。
マテリアルごとに1回、パーツごとに1回
ノードは、特に指定しない限りフレーム全体に対して1回実行されます。ノードを選び、インスペクターで実行をマテリアルごとに1回またはパーツごとに1回にすると、それぞれに対して1回ずつ実行され、毎回そのマテリアルやパーツだけを、フレームのほかの部分が空であるかのように見ます。結果はピクセル単位で組み合わされます。そのときノードのタイトルには各マテリアルまたは各パーツと表示されます。
これがあるので、ぼかし、拡大、アウトライン、クリーンアップがパーツをまたいで隣のパーツに及びません。パーツごとに実行する線ノードはすべてのパーツの周りに線を描きますが、同じノードを1回実行すると、モデル全体の周りに1本の線を描きます。このように設定したグループは、中のすべてをこの方式で実行します。パーツごとに実行するノードは前のフレームを見ないので、ちらつき防止のヒステリシスはありません。
コマンドラインやルックファイルでの同じ設定は、ノードのscopeです:pxr graph set my.pixor --which style --node cleanup --set scope=object(frame、material、object)。
ノードの画像を独立したレイヤーとして
スプライトは出力ノードが受け取るものですが、どのノードの画像も書き出せます。ノードを選び、インスペクターの追加の出力に名前を入力します:するとタイトルにlayerとその名前が表示され、すべての書き出しでlinesとflatの横にそれが含まれます。layersの書き出しではその名前の独立したシート(hero_rim.png)、.asepriteでは非表示のレイヤーになり、再ベイクではPixorのほかのレイヤーと同様に置き換えられます。リムライト、シェーダーが読むマスク、1つのパーツの線など、ノードが作るものなら何でもかまいません。名前を消せば出力ではなくなります。シートがすでに持つ名前(final、lines、flat、normal、depth、emissionなど)や、ほかの追加の出力の名前は使えません。
スクリプトから:pxr graph extra my.pixor --node line-work --name rim、取り除くには--drop。
例:風化した塗装
シェーディングを平らにしてから、ノイズマスクでシェーディングありとフラットの版を選び分けると、表面は塗装がまだらに剥げたように見えます:
Light and shade --+---------------+
| +--> Choose --> Combine --> ...
+--> Flatten ---+
Noise ----------------------------+
- 平らにするを追加し、光と陰をそこに接続します。
- ノイズを追加し、サイズを約5ピクセルにします。
- マスクで選択を追加します:光と陰をAに、平らにするをBに、ノイズをマスクに。
- 合成のshading入力からワイヤーをドラッグして外し、代わりにマスクで選択を接続します。
グループ:開けられる1つの箱
グループは、1つのノードとして使うグラフです。Pixorには、上のパイプライン全体を1つの箱にしたピクセル化(ライブラリのパイプラインの下)と、最初のグラフを構成するグループ(レイヤーレンダリング、光と陰、線画、ワイヤーフレーム、クリーンアップ)が付属します。これらはシェーディングと線のパスとは別の名前で、パスはグループが段階的に行うことを1つの箱で行います。どれも特別扱いされた組み込みではありません。
グループは、どのグラフでもその場で開きます。タイトル以外の部分をダブルクリックするか、ヘッダー右端の矢印(これを持つのはグループだけです)を押すと、グループ自体が、それを構成するグラフの枠になります。開いたグループの中のグループも、その枠の中で同じように開きます。ヘッダーは上端に、パラメーターは左側に残り、画像があった場所に中のノードが同じグラフ内に並びます。ワイヤーが枠を横切るのは左右の2辺だけです。グループへの入力は左側の入力に届き、閉じたボックスの境界があった各入力の右側のアンカーから、それを読む中のノードへ出ていきます。各出力は枠の右の境界上のアンカーで、中でそれを作るものと同じ高さにあり、その出力を読むものはすべてそこから接続されます。中のものが枠の外に出ることはなく、後ろのノードは場所を空けるために脇へ動きます(画面上だけで、グラフは元の位置を保持します)。中のノードはどれも普通どおりに編集できます:設定、画像、ワイヤー、名前。枠の中に貼り付けたり放したりしたノードはグループに入ります。もう一度矢印を押すと、ボックスとその画像に折りたたまれます。どのグループが開いているかはウィンドウの状態で、プロジェクトには保存されません。
自分のグループを作る。入れるノードを選び(周りをボックスで囲むか、Shiftを押しながらクリック。選択中のノードも含まれます)、グループ(またはCtrl+G)を押します:それらが1つのボックスになり、入ってくるワイヤーごとに入力が、グラフの残りがそこから読んでいた結果が出力になります。すぐに開き、F2で名前を付けられます。バーのキットを保存…で、選んだグループを自分のキットとして保存します(グループをキットとして保存。ファイルダイアログは、ライブラリがマイノードの下に表示するフォルダーで開きます)。ライブラリはそこに、すべてのプロジェクトで、その種類のグラフに表示します。グループを選んでいなければグラフ全体を保存します(スタイルグラフをキットとして保存)。どのグラフのキットを保存…もこの意味です。
グループはほかのルックと同じくキットとしてやり取りでき、pxr graph flatten look.pixorkitはそれが表す素のノードとして書き出すので、ブラックボックスではなく差分として読めます。
保存したルックもグループです。+ › キットを使う…は、スタイルのキットを保存…やpxr graph saveで書き出したものを、画面上のグラフに1つのグループとして入れます:そのOutputノードがボックスの出力(レイヤー)になるので、それを接続します。たとえば重ねるレイヤーでグラフ自身の結果の上に重ねたり、マスクで選択に入れたりすれば、モデルの一部に別のルックを付けられます。ダブルクリックすると、中のルックを確認・変更できます。
組み立てに使えるもの
パスのほかに、ライブラリにはルックを組み立てる小さなノードがあります。上の入力、計算、空間、マスク、色、ミックスのノードです。
標準のグループ(光と陰、線画、ワイヤーフレーム、クリーンアップ)は、それぞれ少数のつまみで1つの仕事をする部品でできています:明暗の帯、内側の線の最小の長さ、モデル自身の辺、つながり方で見つける孤立ピクセルなど。それらが置き換えたパス全体も、1つのボックスで済ませたいグラフのためにライブラリに残っています。どれも独自のチェーンに置き換えられます:キーライトをリマップ、ステップの位置、変換先パレットに接続すれば独自のシェーディングを書いたことになり、縁のピクセルをフラットなルックと1段上のルックの間のマスクで選択のマスクにすれば、ワイヤーフレームを自分で描いたことになります。
ルックを共有する
スタイルのキットを保存…とキットを使う…で、ルックをプロジェクト間で持ち運べます。モデル、クリップ、書き出しはそのままです。スタイルのキットはグラフも運ぶので、「ゲームのすべてのアセットが揃う」ことは、接続して作ったルックにも当てはまります。
キャンバスを右クリック › プリセットのグラフに戻すで、グラフを破棄してPixorのパイプラインに戻ります。プロジェクトにはグラフがまったく保存されなくなります。
どのグラフにも同じバーがあります:表示中のもの(パイプラインの名前、ルーチンからの戻り道)、続いて+(ノードを追加)、−(選んだノードを削除)、フレーム、整理、メモ、グループ、キットを保存…、そしてノードの画像を表示・非表示にする目のアイコン。どれもすべてのグラフで使えます。
できないこと
- スクリプトノードもGPUノードもありません。どのノードも入力だけで決まる固定の関数なので、同じプロジェクトからは今日でも10年後でも、毎回同じピクセルが得られます(別のマシンでもほぼ常に同じです。FAQを参照してください)。
- ノードが知らないうちに変わることはありません。グラフは各ノードのどのバージョンで作られたかを記録し、古い動作は古いバージョンのままPixorに残ります。
- 汎用の画像エディターではありません。これらはPixor独自のパスで、意味のあるものだけがつながるよう型付けされています。ペイント、フィルター、任意の計算はペイントソフトの仕事です。
ノードリファレンス
4つのグラフのすべてのノードについて、その働き、入力と出力、各設定の範囲とデフォルト値。
スタイルグラフ
カメラレンダリングレイヤー画像フィルライトモーション面のディザループの位相色のランプメタリックラフネス発光オクルージョン透過縁のピクセルシェーディングランプ上の位置線明暗の帯ワールドの光ハイライトグローランプシフトシェーディングの色シルエット辺線を整える孤立ピクセルワイヤーの経路ワイヤーの色角を滑らかに線の色メッシュの辺合成クリーンアップ変換先パレットパレットランプの段を変えるマスク箇所で段を変える平らにするしきい値パーツでマテリアルで向きでノイズノイズフィールド最も近い色パターン不透明なピクセル否定かつまたはマスクで選択ディザの混合重ねるレイヤーペイント数値追加減算乗算除算小さい大きい符号なし割合整数間のホールドリマップミックスステップの位置スムーズステップ一致度長さ数値としてオフセットぼかし傾斜拡大縮小シェイプ帯をなくすきらめき帯を和らげるハッチくぼみ色の境界線の太さシルエットを整えるパレットのディザランプマップタイルの色サブピクセルの動きCRT出力数値オン/オフ角度文字値を加算値を減算値を乗算値を除算小さい値大きい値上にある反対側両方オンどちらかがオン値を選ぶレイヤーレンダリング光と陰線画
アクショングラフ
クリップキーフレームルーチンアクションシーンの時間定数波ノイズランプ回転上下動揺れ脈動スライド数学ブレンドマージシーケンス時間シフト速度トリミング繰り返し逆再生遅れステップ上限名前を変更選択インスタンス適用先出力数値オン/オフ角度文字値を加算値を減算値を乗算値を除算小さい値大きい値上にある反対側両方オンどちらかがオン値を選ぶ
アセットグラフ
スプライト画像ファイルマージレイヤーフレーム範囲ホールド反転タグ配置配置スタックオーバーレイシートファイルJSONAsepriteファイルGodot SpriteFramesノーマルマップ深度マップエミッションマップ線とフラットのレイヤーパレットクリップごとのGIFクリップごとのAPNGクリップごとの動画ライトキットPICO-8カートリッジレポート影のレイヤーパレットのバリエーションペーパードールのレイヤーパララックスのレイヤーテキストファイルZIPアーカイブタイルセットアイコンアニメーションファイルタイルセットJSONGodot TileSetTiledタイルセットデュアルグリッドのシートGameMakerのオートタイルRPGツクールのオートタイルUnity RuleTileLDtkプロジェクトタイルのパレットバリエーションマッププレビュー数値オン/オフ角度文字値を加算値を減算値を乗算値を除算小さい値大きい値上にある反対側両方オンどちらかがオン値を選ぶ
シーングラフ
読み込みオブジェクトリング行グリッド散布注視点ばらつき再生マージ見るカメラ差分結合移動ミラー細分化ずらすハイトフィールドベベル地面に置く面の上点の上シェイプを設定属性選択出力シェイプ画像テキストボリュームランプエフェクトアイテム小道具スプリング地形小枝葉水雲空風光の筋時間帯チャンク数値オン/オフ角度文字値を加算値を減算値を乗算値を除算小さい値大きい値上にある反対側両方オンどちらかがオン値を選ぶ
