ESORA-T Dec/11/2024 18:00

【ロスラビ!進捗.36】顔パーツ新システム

顔パーツ新システム

概要

ここ数ヶ月作業していた、Spineのメッシュ変形を駆使する形に顔パーツを置き換えた新システムについて!

簡単に置き換えられる眉毛から試して、

口も行けそうだったので変えて

目を変えて

瞳を変えて

 ……気づけば結局、既存の顔パーツは今年の作業で全部作り直したことになっていました。
 作り直しとはいえ、従来の方法だと150のコストがかかる道を30まで進んでいたところを、50のコストがかかる道に切り替えて20ぐらい作業した……と考えています。

序章:没になった初期版口パーツ

 まずは従来の方法だと150のコストがかかるな、と気づいたところの話から。
 まずは今年の3月頃から3ヶ月ぐらいかけて作っていた口パーツ。
えっちシーン用の表情差分を作るために「あ」「い」「う」「え」「お」などの口の形を全て手書きで作っていきました。

 口の作業が終わったあたりで、エクスポートが……なんか、長いぞ……? 数秒だったのが2,3分くらいかかるようになってる。


どうやらSpineでは出力する画像の数が多くなる程エクスポートも長くなってしまうようです。

 まぁ、あくまでエクスポートが長いだけ。ゲームで表示されるのはこの大量の差分のうち1パターンなので、ゲームを表示するための負荷は変わらないはず。
読み込み容量が若干増えますが、そもそも「口」というパーツが体全体からすると小さいので誤差の範疇。

 とはいえ、エクスポートが長いというのは……「作る側」としてはじわじわとストレスが積み重なっていくものです。
そして正面の顔だけで3ヶ月かかっていた作業が横顔と、斜め顔と、その他顔の角度に応じて繰り返す必要があります。
 「ここから大量に手書きで差分を作らないとなぁ」と「大量に差分を作るとさらにエクスポートが長くなるんだなぁ」のダブルパンチが重くのしかかります。

 そこから、このまま作業を進めるのはかなり大変なので、とりあえず実験的に眉毛だけでも変更を試してみよう……と、一つずつパーツをSpineで変形して差分を作る形に置き換えていきました。
眉毛を曲げたパターンごとに一つ一つ画像を描いていたので、それをゲーム上で画像変形させれば使用する画像数は減らせます。


ゲーム上で変形させる画像処理が走るので、ほんの僅かにゲームの負荷は増えてしまいますが。先月は負荷を削減する記事を書いて、今月は負荷を増やした記事を書く。ゲームの負荷対策ってそういう綱引きの繰り返し。

 結果、結果的に全部Spineで変形させるほうが作業が早くて表情拡張の融通も効く、という結論になりました。

 作り直しってゲームが完成しない要因の一つでもあるのですが、かといってこの道を進むと果てしないぞ、という道を進み続けるのもまたゲームが完成しない要因の一つ。
この作り直しが良い作り直しだったかどうかは未来に分かるとして、現状ではこの作り直しのおかげで大分完成の輪郭が見えたように感じています。
どれぐらい輪郭が見えたかは来月に書く2024年作業まとめ記事で。

楕円・真円・直線は少ないボーンで変形させやすい

 メッシュ変形版を作って得た知見。メッシュ変形前提でパーツを作るなら楕円などの幾何学的な形状の方が良い! 少なくとも左右対称!

 このように「い」の口を作るための画像は楕円を出力して、それを変形させて作っています。

 まごころを込めて引いた、魂のこもった非対称な画像は……変形させるのにいっぱい手間とボーンがかかる!
具体例を一つ出すと、左右対称じゃなければちょうど50%の位置にボーンが来ない! 50%の位置にボーンが来ないということは、中心部分、すなわち曲線の頂点部分の動きが正しく反映させられなくて形が変になるということ!

この辺がね。思い通りにならなくて苦しむの。

 仕組み的には、たくさんメッシュを割ってたくさんボーンを作って対応させれば元の画像がどんな形でも対応させることはできます。

が、私の性格的にシンプルに、最小限のボーンとメッシュで曲線で作りたいのです。

 だってその方が美しいから。美しいってことは! 負荷が少ないから!

 1秒間に100万回計算できるPCの負荷を、1秒間に5回分くらい減らせる程度ですが。こういうのを積み重ねていくとゲーム全体で1秒間に1000回分くらいは削れるもの。

 現状辿りついた理想の形は、口については上唇と下唇でそれぞれボーン9個。間隔の値は1/8で12.5%!(両端にボーンを置くので、1/9ではなく1/8)


ボーン5個だと極端な変形をしたときにボーンがない場所の動きが画像に反映しきれなくて、ボーン7個やだと「間隔」に入力する数値が1/6=33.333333……で割り切れなくて美しくない。偶数ボーンも割り切れない。これは好みの問題かも。

 これも私の作り方での最適な数というだけなので、公開して他の人の参考になるかは分かりませんが……。いつか未来で、同じような問題に直面した人が「こんな感じで調整していけば良いか」という取っ掛かりにでもなれば幸い。

メリット:微妙な差分を増やせる

 Spineのメッシュ変形化のおかげで実現できるようになったことがあります。もともとの、全部手書きでやる形式では諦めていた差分に手が出せるようになりました。

 例えば笑顔で上唇が上に曲がるか下に曲がるか。



 本当に変化の小さな差分ができるようになりました。
微妙な差なんですけど、ニュアンスが違うんですよ。ニュアンスが。
 ほんの些細な差、普通のイラストなら数分で描き足せる差分……
ですが、これを従来の方式でゲームに落とし込むと、新しいパーツに合わせてキャラメイクで指定するための番号を割り振って、上唇を描き直して、口の赤色部分のレイヤーをコピーして用意して、口の黒い部分のレイヤーを以下略、口の奥の舌を、出した舌を、出した舌のハイライトを、よだれを、……と、一時間ぐらいはかかってしまいます。

 全部一からSpineで動かす前提で作っておけば、ほな、興が乗ったから差分増やすか……と表情用のアニメーションを追加してクイッとパスを動かすだけでできてしまうわけです。

興が乗ったから差分を増やすところがディレクターとして一番悪い。それはそう。

目のパーツ

 口のパーツの経験から、さらに割り切った素体パーツを試しました。

四角!

下手に最初から「目」らしくパーツを描くよりも、素体は極限までシンプルな形になっていた方が変形の自由度が高い、という結論になりました。
 もともと描いていた目もシンプルな形で、バチバチにまつ毛を伸ばしたり描きこんだりする絵柄ではありませんからね。

 口と違って円ではなくて四角なのは、ジト目を作る際に直線が必要だから。最初に曲線で作ってしまうと綺麗な直線にするには大変なんですよね。


加えて、「上まつげ」「下まつ毛」「まつげじゃない左右」に四辺にパスを分けられて、それらを連続した曲線で繋ぐ必要がないという点も理由の一つ。

 口はボーン9個で変形させましたが、目については一辺につきボーンは5個。口よりはシンプルな変形ですので少なくすみました。とはいえ5かける四辺なので、ボーンの総数は口より多いです。


元の顔の再現

 新しいパーツを変形させて、旧バージョンの顔を作っていきます。簡略化した結果以前の絵から大きく変わってしまっては本末転倒なので。

こちらが新パーツの表情

旧パーツの表情と比べても、大体再現できたかと思います。

頭をよぎる"まごころ"の存在

 どの講座を見ても、ここまで極端に素体を簡素化して顔を作っているものはありません。これぐらい思い切ってしまった方が応用もやりやすいなと私は思ったのですが、あまり一般的な方法ではなさそう。
これは私が絵で生計を立てる人ではなくて「自分で絵を用意してる"ゲーム開発者"」だから取れた選択肢なのかもしれません。目をペンで描かないって結構大胆な選択なので。
あるいは20年程前にベジエ曲線を使って線画を描いていた経験がそうさせたのかも……。図形の変形である程度絵は作れるのです。


 しかしながらこうして図形を変形して人の形を作っていくと、頭の中にどうしても浮かんでは消える懸念があります。


 ――人の温かみのある絵、って……なんだろう。これは心を込めて描いた立ち絵と言えるのだろうか……。

 とはいえ、もともと「ゲームに表示する絵」というものは容量削減のためにゴリゴリ手を入れられてきたもの。1/4や1/2のパーツをゲーム上で上下左右反転して丸にするなどの工夫の歴史が積み上がった媒体でもあります。


CPUとGPUを使ってガリガリ加工できるのがゲームなんだから、取れる手段は全部取って良いはず! 良いよね!

メリット:簡単な図形にしたので横顔にも流用できる

 目の素体パーツをシンプルな四角にしたメリット。斜め顔にも、横顔にも素体はそのまま適用できる!

なんたって素体が四角形ですからね。


言わばこねる前の粘土のようなもの。この画像群をコピーして表情を作るアニメーションもコピーして角度に合わせてパスをいじれば横顔になるってものです。
それでも何時間もかかるけれど、手書きで横顔バージョンを描いていくよりは断然早い。

 口に関しては横顔に合わせて描き直しが必要ですが、目については大体このまま行けそう。

細かく言えばまぶたをちょっと飛び出させるべきなのですが、どうしようかな。
すでに設定したメッシュとかはそのままに楽してちょろっと飛び出させたいぞ……?

11月ダイジェスト

Exclusive to users above "Follower"Free

記事投稿時に通知やお知らせメールを受け取ることができます。

Free

Monthly Archive

Search Articles