2021年8月24日(火)~26日(木)の3日間に渡ってオンラインで開催されるCEDEC 2021。

 本記事では、その初日となる2021年8月24日に行なわれた、バンダイナムコスタジオの松尾行恵氏と金田直隆氏による講演“BLUE PROTOCOLにおけるキャラクタークリエーション ~誰でも簡単!異世界転生のお手伝い~”の内容をリポートしていく。

 前半をキャラクター班の松尾氏が担当し、コンセプトやリアル系キャラクリエーションと異なる部分などを解説。続く後半はエンジニアである金田氏が担当し、ツールの選択理由やそれによるメリット、負荷対策のための細かな工夫や実証など、より専門的な部分を解説してくれた。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

『ブループロトコル』のキャラはどう作られるのか

 『ブループロトコル』はPC向けオンラインアクションRPGであり、2020年にはクローズドβテストも開催されている。

 使用エンジンは“Unreal Engine4”。最新バージョンに統合されているが、開発中のプロジェクトのため、内部実装の見直しが予想されるとのこと。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 続いては、クローズドβテスト時のキャラクタークリエーション画面が動画で紹介された。

 本作のキャラクターは男女とも顔タイプ別の3パターンが用意されており、顔タイプに紐づけられて体形が選択できる。身長をスライダーで調整すれば頭身も同時に調整され、肉付きについては膨らむところとそうでないところの緩急をつけ、変化を持たせている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 頭髪は単色のほか、グラデーションカラーも選択可能。顔の内部はパーツの選択方式で組み上げていき、最新バージョンでは眉や目の角度が調整できるようになっている。瞳の色やまつ毛の調整など細かな変更も可能で、メイクや傷、ほくろなどのパーツについても数種類から複数選択できる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 衣装は頭、ボディー上下、グローブ、シューズの5部位それぞれで選択できる。クリエーション画面では“ポーズ切替”ホタンからさまざまなポーズを参考にし、完成に近づけることができる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 これらの画面からわかるとおり、『ブループロトコル』のキャラクリ画面は“アニメの設定画風”。アートディレクター・奥村氏の希望により、体や顔をぐるぐると回さなくても一度に複数の角度から見られる形になった。

 また、本作はオンラインゲームなので、他プレイヤーが作成したキャラクターも画面に表示される。それらのキャラクターの顔やシルエットが崩れていた場合、アニメで言うところの“作画崩壊”になってしまうため、顔パーツの位置調整や体の部分ごとの調整機能は入れないこととなった。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 なお、キャラクリ画面には、全身表示用の2体のアバターと、顔表示用の3体のアバターを表示。それらの前に置かれたカメラからの画像を切り抜き、2Dテクスチャとして貼り付けているという。

キャラクターの仕組み

 本作のキャラクターは、髪の毛、上半身、下半身、手、足、帽子、後頭部、顔パーツ群、アンダーウェアの9部位にアクセサリーを加えたパーツ類で構成されている。

 このうち衣装として交換できるのは、上半身、下半身、手、足、帽子の5ヵ所。着せ替えを楽しむため、この5部位には何もつけていない状態のネイキッドパーツも設定されており、着脱可能となっている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 これらのパーツは、体や顔の起点となるすべての“骨”が入ったアセットに合体させて、1体のアバターに組み立てられる。骨は男女全年代のアバターで共有しており、また体のモーションデータは回転値で作成されているため、おっさんキャラと少女で同じモーションファイルが使える。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 キャラクリに使用されているおもなデータは3つ。

  • キャラパーツデータ:パーツのいろいろなデータを書き込み、胸揺れ設定やフェイシャルアニメーションなどの細かな部分まで指定したもの
  • データベース:実際にゲーム中で使用されるアセットIDとキャラパーツを結びつけるもの。部位ごとにデータベースを分けて管理しやすくしている
  • キャラクリエイトデータ:キャラの見た目を書き込んだデータ。そのキャラが使用している衣装や髪型、メイクなど、さまざまなパーツの情報が含まれている。エステなどで見た目を更新した場合、変更されるのがこのデータ。
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 体型の変更については、各骨のデフォルト値と最大値、最低値を設定して制御している。また、身長の変化に頭の大きさや肩幅なども連動するように調整。これらの値については、アートディレクター・奥村氏が描いた理想体型に合わせて調整しているという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 ボディについて、男子のSとMの体型はモデルアセットが共通だが、L体型については筋肉の付き方が違うため、肌が見える場合は別のモデルアセットを適用。女子のL体型では肉感を表現するため、M体型にL体型のテクスチャを適用し、肌が見える場合などのために独自のモデルアセットも一部用意されている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

衣装について

 差分モデル作成のコストと容量を削減するため、衣装はひとつのアセットのみで構築されているが、着合わせが起きる部分に設定情報を入れている。

 グローブの場合は上着に対して長さを4段階に固定して、干渉する部分を非表示に。だが、単に消すだけでは部位の太さの違いに対応できないので、“絞り骨”を入れてモデル同士の干渉を防いでいる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 足については、下半身パーツがソックスを付けている状態で靴を脱いだ場合は指がない“ソックス足”が、付けていない場合は“素足”が表示されるようにこだわった。

 さらに下半身パーツとUVを揃えているため、下半身パーツのソックスやタイツが柄物であっても、ソックス足にはそれと同じカラーパターンが反映される。シューズの種類によって足首から下が見える場合も、肌部分に同じ処理を適用。

 ここまでこだわりつつもソックスを独立部位として分けなかったのは、女子に対して男子のバリエーションが少なくなり、プレイヤーによっては着せ替えが楽しめないことが予想できたためだ。ただ、下半身パーツに含めたことでニーソックスの食い込みやガーターベルトにも対応できたため、結果としてはよい方向に働いたという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 アンダーウェアにもこだわりがあり、女子の下半身用パンツパーツについてはお尻の部分を少し縮めたスカート着用時用パーツを用意している。タイトなスカートでも、デザインが変わらないわけだ。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

多岐に渡るアニメ表現へのこだわり

 頭部分のパーツにもこだわりが詰まっている。髪はシルエットを大事にするため前後一体型となっており、髪型ごとに帽子用とフード用の差分モデルも用意している。

 奥村氏が「キャラクターの個性は前髪が大事」と主張したため、可能な限り帽子一体型の髪型は避けているとのこと。

 髪の色は幅や位置、バリエーションが指定できるグラデーションに加えて、一部のみ色を変えるメッシュも使用可能だ。グラデーションは画像によって指定しているため、柄を変えることもできる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 髪の揺れについては、Epic Games Japanのエンジニア・おかずこと岡田和也氏が開発した疑似物理プラグイン“Kawaii Physics”を使用している。設定も簡単で、オススメのツールとのこと。

 Unreal Engine4を使って共通の骨で複数メッシュを作成する場合、骨構造を変えられないため、なるべく少ない揺れ骨で動かす必要がある。作業時間短縮のため、ウェイトをなだらかに付けた単純な形のモデルからウェイトをコピーし、ほかの髪型作成に使用している。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 顔は眉、目、口、輪郭、鼻と、差し替え方式の5パーツ構成。複数形状のバリエーションのパーツを入れ替えることで好みの顔が作れ、内部の骨(トータル150本)で上場を作る。

 各パーツにはひとつずつ、専用のフェイシャルアニメーションをキャラパーツデータで設定している。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 キャラの表情は25種類。アニメらしい表現を再現するため、各表情に目パチ、口パクのパターンを設定している。

 奥村氏は当初から「アバターは表情豊かで、ちょっとユーモラスな感じにしたい」と希望しており、顔パーツを細かく指定できて、かつ顔がよく動く仕組みが必要に。表情を骨で動かすか“Blend Shape”(※)を利用するか、選択することになった。

※Blend Shape:頂点数などの基本構造を同じくする形状違いモデルを複数用意し、混ぜ合わせのバランスを変えて新しい形を作るアニメーション手法。徐々に変形させていくことで、滑らかな変化を表現できる。

 だが、Blend Shapeの仕様を調べたところ、頂点数が増えるほど負荷が増し、多数のキャラクターを表示するオンラインゲームには向かないことが判明。加えて、骨だとアニメーションのコピーが効くため、量産向きだと判断したという。ストーリーキャラや街のモブキャラの表情も、この骨を用いた方法で作成されている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 NPCも含めればあまりに膨大になる表情パターンは、松尾氏がひとりで制作したという。その表情は、ポーズアセット、フェイスインデックスアニメーション、アニメーションセットの3つで構築されている。

 “ポーズアセット”は、眉、目、口の動きを切り出したアニメーションファイルだ。笑う・怒るなどの各表情は“フェイシャルライブラリー”というプロジェクト内製ツールを用いて、眉・目・口のアニメーションを1フレームごとに分解。表情ごとに組み立てている。

 “フェイスインデックスアニメーション”は、各表情がポーズアセットの使用フレーム数を示した、フレーム番号のアニメーションだ。

 “アニメーションセット”は、Unreal Engine4上で各表情で使用するフェイスインデックスアニメーションを指定している。フレーム番号で呼び出すため、違う顔パーツでも同じ内容の表情になる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 眉のデフォルト形状はアニメーションで作成。初期状態は眉の形状を直線にしてパーツの境目を目立たなくし、骨の共有化を図っている。

 アニメでは眉で感情を表現をすることが多いため、リアルな人間よりも眉は大きく動く。テクスチャー表現だと滑らかに大きく動かすのは難しかったため、骨による制御を取り入れたという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 目と眉の角度調整機能は、クローズドβテスト後のユーザーアンケートで寄せられた「顔パーツが差し替え式なので、ほかのユーザーと被りやすい」という意見を受けて実装。

 この仕様は眉と目のアセットに傾き変更用のアニメーションを混ぜて実現。傾き加減によって同じパーツでもまったく異なる雰囲気が出せる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 ちなみに、最初は目のパーツをすべて一律で回転させたところ、奥村氏に「こうではない!」と釘を刺されたとのこと。そこで、まつ毛や二重まぶたのラインが自然に見えるように、傾き専用のアニメーションを取り入れた。表情全体についても傾きが悪影響を与えないように調整されている。

 また、目やまつ毛のカスタム要素を増やすためにテクスチャ貼り替え機能を導入。さらに、アニメ表現の一環として、目線の動きに追従してまぶたや黒目の形状が動くアセットを混ぜたり、アイメイクが伸びないようにまぶたに隠し包丁的なエッジを追加したりと、こだわりは非常に細かい。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 フェイシャルアニメーションにおいては法線関係でも回転は使わず、すべて移動のアニメーションを使用。輪郭や口はアゴの骨の回転時と同じ動きになるように調整されており、口を二重にして厚みを持たせることで口が奥まって見え、アニメらしさを強調している。

 さらに、ピンク色の部分が違和感なく見えるようにアウトラインを調整。歯を食いしばったときのポリゴンの噛み合わせにも手が加えられている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 顔はライティングが変わってもアニメ調の陰影になるよう、法線を調整。ざっくりと球体から転写した後、内製ツールで微調整を行なっているとのことだ。

 メイクには4枚の白黒のマスクを使っている。ゲーム内でキャラの見た目を編集できる“エステ屋”で選択肢が増えたとしても分類が分かりやすくなるように、またメイクを盛りに盛ってもおかしく見えない順番に重なるように企画したという。

 マスクは傷やそばかすなど肌色に近いものを下に、カラフルなものを上のほうに重ねている。リップとアイシャドウはUV、それ以外は投影を使用しており、性別や年代によって大きく見た目が変わらないように調整している。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 メイクの中でも、リップにはハイライトのオン/オフ機能を搭載。このハイライトは胸や肩などにアクセントとして取り入れられている。スペキュラーマップ(※)として描かれ、カメラからの角度を限定して光る仕組みに。小さいが、これの有無で立体感がまったく異なってくる。

※スペキュラーマップ:鏡面効果(光の反射)を与えるテクスチャーマッピングのこと。反射率を細かに調整できる。

 妙なこだわりを発揮しているのが、ほくろ。古今東西のアニメのほくろキャラから位置パターンを割り出して参考にしているという。ほくろはポリゴンで作成されており、遠くにいてもそのキャラのアイデンティティーとしてちゃんと見えるように、離れるほど大きく表示されるように調整されている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 感情表現には漫符を使わないという意向のため、顔色の変化で表現。アニメ作品を参考に、赤面や青ざめの具合を調整できるテクスチャーを作成したとのことだ。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

開発中にあった、意外なアクシデント

 引き続き、開発時のアクシデントや所感についても紹介された。

 キャラクタークリエーションのシーケンスにおいて、当初は体型調整をしやすいように裸状態でスタートするように設定していた。しかし社内のテストプレイで、キャラクリせずに終了する人が続出。ゲーム内は裸祭りになってしまった。

 プリセットを搭載していたが、プレイヤーが急ぐとそれを選ぶのも忘れてさきに進めてしまうということが判明。そこで、衣装はあらかじめ着せておき、非表示機能を搭載することにしたという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 また、開発中にはリアル系キャラクタークリエーションとの差異も感じられたという。女子(とくに年少)の場合、アニメ的な輪郭や眉・鼻のデザインの正解の幅が狭く、バリエーションが作りづらかったらしい。

 年少女子の場合、鼻は高さや影の有無くらいでしかバリエーションが出せなかったという。逆に目には情報を詰め込める余地があり、4種類の黒目やまつ毛のパターンを用意できた。

 男子(とくに年長)では、輪郭、眉、鼻のデザイン幅は広いが、目が小さいという逆の悩みが発生した。アニメ表現の場合、性別や年代によって特徴的なパーツが異なるため、全性別・年代に同じ数のパーツを用意するのは困難だと感じたそうだ。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

上記のこだわりを実現した手法とは?

 キャラクター班の講演に続き、後半ではエンジニアの金田氏が登壇。より具体的なアニメ表現の手法や工夫についての専門的な解説をしてくれた。

 なお、Unreal Engine4を使用しての描画部分についての解説は、8月25日の講演“BLUE PROTOCOLにおけるアニメ表現技法について ~実装編~”で改めて解説される。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

処理負荷対策

 クローズドβテスト最終日には100人以上の参加プレイヤーたちが街の中に並び、ダンスエモートを楽しんでいた(筆者もダンスに参加していたので間違いない)。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 この処理負荷にも耐えられた、本作の対策とはいかなるものか。キャラクターは講演前半で触れた通り、顔は5つ、体はアクセサリーを除くと9つのパーツで構成されている。

 キャラごとのパーツ数を減らすために、ゲームプレイ中にはキャラクリ(※)時に非同期でスケルタルメッシュのマージ(統合)を行なっている。

※キャラクリ:ここでは、ゲーム内の画面にNPCなどの特定のキャラクターを表示するため、その場でデータを読み込んでキャラクターを作り上げる過程を指している。

 対して、キャラクリ中はレスポンスを高めるため、スケルトンだけを同期でマージしている。髪の毛のシミュレ-ション用に、身体に対するヒット処理が必要となるからだ。骨だけのスケルタルメッシュでアニメーション計算を行ない、骨のトランスフォーム情報を描画前にすべてのパーツに適用している。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 この非同期メッシュマージには、オブジェクト数を減らすことでドローコールやレンダースレッドの処理、オブジェクトの移動処理などの負荷低減が見込めるメリットがある。

 反面、マージ処理自体が負荷を生むデメリットも。キャラクター1体あたり、顔と体の合計で15~25ミリ秒の負荷が生じたため、メッシュマージをキャッシュ化したり、非同期処理を行なうことで処理落ちを回避した。しかしこの処理は使用メモリを増加させる場合があるため、メッシュマージかほかの手法か、状況に合わせた方法を模索しているという。

 非同期とはつまり、マージ処理を別のスレッドに任せて、そのあいだに別の処理を進めることでゲームを止めないようにする方法だ。本作中では、キャラクターがそこに登場するタイミング自体は重要ではないことが多いので、キャラクリがすべて終わった段階でそのキャラが表示されるようになっている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 マージしたことで、実際にどれくらい処理負荷が減るのか。測定結果は下の画像のとおり。フレームレートが向上し、レンダリングに使用するスレッドの処理負荷がそのままFPSに反映される形となった。

 オブジェクト数はとくにレンダリングに負荷として影響しやすいとのこと。負荷対策としては、オブジェクト数を減らす手法がベストだと改めて実証できたという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 そのほかの最適化として、サーバーでは大本からキャラクリをOFFにし、通信のやり取りを軽減。NPCの顔のメッシュはLOD(※)や共通のスタティックメッシュ(※)を状況に応じて使い、アニメーションしないアクセサリーもスタティックメッシュで構成している。

※LOD:Level of Detailの略。カメラからの距離が遠い場合はさほど細かに描写しないでいいことから、モデルのポリゴン数を距離に応じて制御し、負荷を軽減する手法。

※スタティックメッシュ:形状や動きの編集が不可能な代わりに、メモリ使用量が抑えられるメッシュの一種。樹木の表現などに使用される。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

アセット管理と作業環境

 講演前半で触れたとおり、『ブループロトコル』では“キャラクリエイトデータ”という、キャラの見た目を管理するデータを活用している。基本的には文字列や数字のみのデータなのでサーバーとのやり取りも軽く、そのパーツデータも男女ごとのテーブルで基本的には管理可能(一部、体型ごとのテーブルが用意されるものもある)。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 パーツデータは、そのパーツに関連付けられた情報をまとめたアセットだ。色情報などのほか、髪ならアニメーションのブループリントなど、さまざまな情報がまとめられている。

 少しでもパーツに依存するデータは、このパーツアセットに紐づけて管理。別ルートでの管理が不要のため、アセットロードの制御もシンプルになる。

 また、パーツデータをまたいで一括で編集や確認をしたい場合は、Unreal Engine4の標準機能のほかに、スクリプト(簡単なプログラム)も活用していく。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 そのスクリプト環境についてだが、アセット管理作業を楽にするために、プログラミング言語として“Python Script”を用いている。

 ビルド環境がなくてもコードを構築でき、シンプルなコードが書けるため見通しもいい。だが、それよりも、さまざまなモジュールの恩恵が受けられることがいちばん大きな採用の理由だという。不便さもあるが、そこはサンプルコードを多めに用意するなどしてカバーしているとのことだ。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 UIは独自改良を施し、Unreal Engine4 Python環境のものを作り上げた。改良点は以下の2点。

  • Unreal Engine4の構造体を動的に生成できる機能とプロパティをUIとして表示・編集できる機能を連携
  • PythonからCallBack関数(※)を登録できる機能を追加

※CallBack関数:ほかの関数に計算用の値として渡す関数のこと。その関数の結果について、別の関数が計算して結果を返してくれる。これにより、ひとつの結果から別の結果も導き出す対話型のプログラムが組めるため、各作業が早くなる。

 講演内では、具体的にUIを作るためにPythonで書かれたコードも公開。数行でUIひとつを表示する、その便利さが示された。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 例として、パーツ名をリネームするツールの場合、必要なパラメーターを入力してOKボタンを押すと、そのパーツが使用されているキャラクリデータを一覧表示し、確認を促してくれる。その中から選択したアセットに虫眼鏡ボタンでジャンプしたり、直接アセットを開いたりといった、Unreal Engine4の標準機能も連携。

 ほかにもデバック面で便利だったりと、Pythonならではの快適さ、便利さを享受できるのがこの環境の利点だ。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

キャラクリビューワー

 こちらのツールは本編のキャクリシーンとは別に、デバック用に作成されたものだ。

 パーツデータ作成時の確認用途やスクショ資料の作成に使用可能。また、NPC向けのキャラクリデータの作成やメッシュマージの有無の確認など、切り分け確認による不具合の点検にも活用できる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

体型変更や髪の揺れなどがスムーズに設定できる仕組み

 講演前半でも触れた、体型変更や物理揺れ、キャラクリの汎用化の手法についても、よりエンジニア視点寄りの細かな解説がされた。

体型変更

 本作の体型変更は、表情と同様にBlend Shapeは使わず、骨のスケーリングで実現している。

 計算の負荷が高かったため、最終的にはこの処理を1ノード化。変更時に計算が行なわれ、キャッシュ化した部分のみを毎回更新する仕組みになっている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 計算順番は下画像の通り。体型が変更される前のポーズ情報も、一部活用している。

 骨のスケールでキャラの部位の見た目の細さ、太さを変化させるために、3軸のスケーリングを導入。この3軸のスケーリング値が違う場合に生じる誤差については、別の関数や専用の関数を活用し、目立たない場合はそもそも許容することもある。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 また、骨に直接値を設定するのではなく、スケールIDを介して設定できるように調整。これにより体の左右それぞれで値を設定したりする手間が省け、アーティストが調整しやすいようになっている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

物理揺れ

 髪などの物理揺れについては、当初は管理コストを減らすため、Unreal Engine4の汎用性が高い標準機能“RigidBodyNode”と、Clothのふたつを主として運用する予定だった。

 現在はRigidBodyNodeが不向きな状況も出てくることがわかり、そこにKawaiiPhysicsを使用している。RigidBodyNodeで安定した物理揺れを再現しようとすると、設定コストが高くなる場合があるのだ。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 たとえば、骨が多い部分はシミュレーション用の骨が安定せず、スキン骨を重ねることで安定させるなどの手法を考えたが、アーティストの紹介でKawaiiPhysicsを導入してみると簡単に安定性を得られたという。

 RigidBodyは骨の階層が少ないものに使いやすく、一方のKawaiiPhysicsは階層が深いものや、多くの個別設定が必要な髪の毛などに向いている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 物理揺れにも独自のカスタマイズが必要だった。スケール対応やカットシーンが切り替わった際などに揺れをリセットする機能の導入は、いずれのツールにも必要だったのだ。

 とくにClothは、骨ではなくメッシュに適用するものだったので、メッシュのマージにも対応できるようにする苦労があった。反面、KawaiiPhysicsは改良のことを考えても扱いやすく、管理コストの面からも導入が正解だったという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

汎用化

 NPCやエネミーにもキャラクリの仕組みは使われているが、今回紹介したようなリッチな仕組みは使用されていない。NPCやエネミーのキャラクリに関しては汎用化することで、作成コストの軽減などが見込める。

 NPCはプレイヤーキャラクターとは異なり、4部位で構成されている。顔は体とマージしたものとしていないものの、2パターンが用意されている。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 また、一度キャラクリされたものの、プレイヤーキャラクターと距離が離れて非表示となったNPCは、そのデータが一時保存される。このデータの一部だけを書き換えて、ほかの画面内に入ってきたNPCに流用することで使い回し、生成と破棄の処理を減らしている。言わば転生のくり返しだ。

 開発中には初期化ミスなどで転生に失敗し、ふつうの主婦が武器を持っているなど、物騒なことになるエラーもあったという。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

 エネミーは別の仕組みを使って見た目のバリエーションを増やそうとしていたが、キャラクリの仕組みに統一化することで、設定側の学習コストを減らせた。

 現在、エネミーは単一パーツでのみ構成されているが、メッシュ、マテリアル、カラー変更可能。似たような機能を再開発する必要がなくなっただけではなく、見た目の拡張性も十分にある。

 『ブループロトコル』のアニメ表現は、工夫による最適化や負荷の軽減によって支えられている。開発の効率化も図られており、今後の開発やアニメ表現のさらなる拡張にも、期待が高まる。

『ブループロトコル』豊かなアニメ表現を実行する秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】

※本記事の画像は配信からキャプチャーしたものです。

CEDEC2021関連記事はこちら