タグについてのTips
タグの用途は主に二つあります。
一つは、パーツ同士に親子関係を作ること。
もう一つは、パーツのパラメータを上書きすること。
1. パーツ同士に親子関係を作る
前腕を持ち上げると、肘から先の前腕も一緒に持ち上がらないと変ですよね。STPでこの動きを実現するために、パーツ同士に親子関係を持たせる必要があります。そして、親子関係を持たせるには、あるパーツに親を指定する必要があります。
では、どうやってパーツを指定するのか。
STPでは、親となるパーツにタグを割り当て、子パーツがその親パーツのタグを指定することで、親子関係が作れます。
例えば、キャラクターの右上腕となるパーツの肘部分に、右前腕のパーツの肘をくっつけて、肩を中心に右上腕パーツを回転させた際に、右前腕パーツの肘が外れてはいけませんし、右前腕パーツが水平移動するだけなのも不自然ですよね。
そこで、右上腕パーツに「右上腕」というタグをつけて、右前腕パーツの親に「右上腕」と入力し、『値の依存』グループのトグルを全てON(「有効」という言い方もあるか)にすれば、右上腕の移動や回転が右前腕にも反映され、腕の動きが再現できます。
2. パーツのパラメータを上書きする
「目を途中で別の画像に差し替えたい」
「関節の角度と位置を途中で変えたい」
などのように、パーツのパラメータを途中で変えたいとき、ありますよね。
そんな場面でも、「タグ」は役に立ちます。
「動く立ち絵」では、立ち絵アイテムで指定されている表情差分から、途中で別の差分に切り替えたいときに、表情アイテムをタイムライン上の立ち絵アイテムの上か下のレイヤーに置いて、表情アイテム内で差分を指定しますよね。
STPでもやることは同じです。タイムライン上で、表情アイテムを立ち絵アイテムの上か下に配置することで、任意のパーツのパラメータを上書きすることが可能です。
「動く立ち絵」の場合、立ち絵アイテムで指定した「目」、「口」、「顔色」、その他もろもろを、途中で差し替えたいとき、まずは表情アイテムを立ち絵アイテムの上か下に置きます。そして、表情アイテム内で、「差し替えたいパーツ」だけ差分画像を指定します。「立ち絵アイテムで指定した差分のままでいいパーツ」は、表情アイテム内では差分未指定の状態にします。
(例えば、デフォルトの見開いた目を途中でジト目にしたいとき、表情アイテム内で、「目」以外のパーツの差分は未指定にし、目のパーツだけ差分を指定します。)
それに対してSTPの場合、「動く立ち絵」のように最初から名前を持ったパーツが定義されていません。なので、差分やその他のパラメータを上書きしたいパーツは、立ち絵アイテム内で事前にタグを決める必要があります。立ち絵アイテムでは「目」というタグを持つパーツに画像「00.png」を指定していたけど、表情アイテムによって画像を「01.png」に置き換えたいときに、同じく「目」というタグを持ったパーツを表情アイテムの描画順序リストに並べればいいんです。
ですが、この説明だけでは、以下のような現象に遭遇したときに説明ができません。
「立ち絵アイテムに同じタグを持ったパーツを並べると、リストの下の方にあるパーツだけが描画される」
何が起こっているのか、理解したいのであれば、下の内容を読んだ方がいいです。
3. STPにおけるタグの実際の仕様
実は、STPにおいて、立ち絵アイテム内でも、表情アイテム内でも、さらにはセリフアイテム内でも、タグの性質は 全く同じ です。
今後、貴方がSTPのさらなる深淵に挑むことになったときのために、STPが「タグ」をどのように見ているのか、順を追って説明しなおします。
https://scrapbox.io/files/68188cf989c7861a1e6d2354.mp4
タイムラインに置かれた、一つの立ち絵アイテムだけに焦点をあてて考えてください。
そこに、再生位置を示す赤い線が立ち絵アイテムを横断し始めました。
まず貴方には、その再生位置に、同じキャラクターの「表情アイテム」と「セリフアイテム」たちが、今焦点をあてている立ち絵アイテムを含めて、一番上のレイヤーからどのような順番で並んでいるのかを、把握してください。このアイテム群を「読み込むアイテム群」と呼ぶことにします。
ここで注意してほしいのは、「立ち絵アイテムは、今焦点をあてているもの以外は無視する」「今述べた表情アイテムとセリフアイテムを全て把握する」の2点です。もう一つ言っておくなら「セリフアイテムは表情アイテムの一つであり、同じものとして見てよい」という点です。
次に、「読み込むアイテム群」について、それぞれの描画順序リストに並んだパーツのリストを、タイムラインのレイヤーの順番通りに縦に繋げて考えてください。長い一つのリストが完成します。ではその長いリストを「第一次総合パーツリスト」と名付けます。
今度は、ボットになった気分で、「第一次総合パーツリスト」にある作業を施します。想像してください。テーブルの上に、さきほど貴方が作った「第一次総合パーツリスト」の左隣に新たなリスト「第二次総合パーツリスト」を作っていきます。最初はリストには一つもパーツが並んでいません。次の手順に従って、「第二次総合パーツリスト」を完成させてください。
1. 右手で「第一次総合パーツリスト」の一番上のパーツを取り出す。
2. 右手に持っているパーツのタグを確認する。
3. タグがない場合は 9. にスキップ。
4. タグがついている場合、「第二次総合パーツリスト」の中から同じタグを持つパーツを探す。
5. 同じタグを持つパーツがない場合、9. にスキップ。
6. 同じタグを持つパーツがある場合、「第二次総合パーツリスト」にあるそのパーツを左手でテーブルの下に捨てる。
7. それによって「第二次総合パーツリスト」にあいたスキマに右手に持っているパーツを差し込む。
8. 10. にスキップ。
9. 右手に持っているパーツを「第二次総合パーツリスト」の一番下に付け足す。
10. 「第一次総合パーツリスト」にまだパーツが残っている場合、1. に戻る。
11. 「第一次総合パーツリスト」にパーツが残っていない場合、作業は終了。
テーブルの下に捨てたパーツは、もう考えなくていいです。
「第二次総合パーツリスト」が完成しましたね。とりあえずはこの順番で立ち絵の各パーツが描画されるんだな、と考えてもらえばいいでしょう。しいて言うなら、この後に「バス」や「Z順描画」による順序入れ替えが行われるので、そこも理解したいのであれば、バスについてのTipsをご覧ください。