BLADE XLORD エフェクトワークフローの紹介 第一回「キャラモーションとエフェクトの紐付け」について

■はじめに

はじめまして。BLADE XLORDの3Dエフェクトリーダー 兼 フロントエンドエンジニアの菅家(カンケ)と申します。
エフェクト以外にもツールを作ったり、クリエイティブチームの技術面のサポートをしたりもしています。


「クリエイター」と「エンジニア」という二足のわらじ、または二刀流、はたまた器用貧乏という道を選択し十数年歩んでまいりました。

メジャーリーガー大谷翔平のように両方とも第一線で走り続けるのは正直無理難題ではあるのですが、
両方ともやってきたからこその気づけるものがあったり、
それを形にできる技があったりとそこにやりがいを感じており今に至ります。

■ハイクオリティーのエフェクト量産を目指して

BLADE XLORDではスマホゲームで最高のクオリティー表現を目指し日々研究を重ねてまいりました。
PS4などコンシューマ機の表現にどこまで近づけられるかが大きな目標であります。

スマホでハイクオリティーを目指すということは

時間 + スマホ端末スペックとの戦い

です。

まず単純な話、クオリティーを上げるには制作にかけられる時間が一番重要にっなっていきます。
その時間を多く確保するためには
いかに効率的に制作できるようにするかがポイントになってきます。

  • ナレッジをためて共有する
  • レギュレーションの策定
  • 効率化ツールの開発

大まかに言うと上記の3つが重要なポイントかと思うのですが、

私が現在ジョインしているBLADE XLOADのエフェクトチームにおける
運用フローを5回に分けて紹介していけたらと思います。

第一回は「キャラモーションとエフェクトの紐付け手法」についてお話させていただきます。

◇開発環境について

  • Unity2018.4.10f1
  • エフェクトは標準のParticleSystemを使用
  • Applibot内で独自開発されたShaderにてdistortion、disolve、rim、softparticleなどを表現

■キャラモーションとエフェクトを紐付ける、
「Animation Event Tool」の紹介

キャラクターのモーションに合わせて エフェクトを発生させるケースは多々あると思います。
特に 発火タイミング、発生場所、固定箇所などです。
それらを「一つに集約することができる独自ツールがあります。

こちらざっくりと説明しますと、(上記添付画像ご覧ください。)

  • モーションclipが入っているfbxを選択すると、ツールにタイムラインが表示されます。
    ※animationClipの尺に応じた間になります。
  • タイムライン上にエフェクトを再生するキーが打てます。(▲のやつ)
  • エフェクトの再生位置、固定オブジェクトなど指定できます。
    ※それらのデータはscriptableObjectにまとまっています。

と言った感じです。

元々はバトルシーンにおいて、モーションとダメージパラメータを紐づけるツールとして開発され、次第にエフェクトなども紐づけられるようにアップデートされてきたツールになります。

タイムラインを動かして、エフェクトの発生タイミングを調整する例

例えば上記の例は、ナナというキャラクターのスキルエフェクトですが、
ナナがを真上に突き上げたタイミングで、敵に火のエフェクトが発生するよう調整する例です。

動画の最初の方では杖を突き上げる前から火のエフェクトが発生してしまっておりますが、
動画の後半、▲のキーを後ろにずらすことで丁度突き上げたタイミングで火のエフェクトが発生するようになります。

昔のプロジェクトではscriptにdelay値を指定してやっていたので非常に手間がかかったのですが、
このGUIツールがあることで調整コストがあまりかからず、非常に楽にできるようになりました。

また、エフェクトに限らず、表情付けやダメージ設定、SEなどのキーも打て、
モーションに対して総合的なキャラクター機能をひとまとめにすることが出来ます。

下記はブレイブスキルのカットインなのですが、目を開けたり、
かすかに微笑んだりする表情変化を見ることができると思います。

エフェクトの設定例

AnimationEventToolの各種パラメータ

①タイムライン
②上にセットするキーフレーム
③エフェクトのprefabをセット
④エフェクトをどこにどのように出すかを設定する
 ・TraceTarget : どこに追従させるかを指定する
 ・PositionTarget : どこに出すかを指定する
   self : 自分の座標
   Attack Target : 攻撃対象の敵の座標
   Support Target : それぞれ味方の座標
 ・Transform Type : TraceTargetに対してどこに固定するか
 ・offset Position、Rotation、Scale : Trace Targetに対する、
  offsetを指定できます。

これらのキーフレームの情報は最終的にモーションfbxのmetaファイルとanimation clipに記録されます。

モーションに時間軸に対するエフェクトの紐付けや表情、ダメージ設定、SE設定を一元管理できるため微調整がとてもしやすいです。

ですがデメリットとして、これらのデータがmetaに集約されてしまうため、それぞれのセクションの担当者(モーション、エフェクト、プランナー)が同時に作業してしまうとコンフリクトを起こしてしまいます。
現状そこはお互いが作業時に声がけすることで対処しておりますが、
保存データを分けるなど今後の課題となっております。

■まとめ

今回はエフェクトとモーションの繋ぎこみ手法について紹介させていただきました。
今後は、

  • エフェクト作成専用シーンの紹介
  • prefabモードとの戦いと魔法のボタン開発
  • 低スペック端末との戦い:エフェクトの表示レベル設定
  • ナレッジの共有:エフェクトリファレンスの自動化による、脱属人化、脱ゴミ素材防止など

のお話ができればと思っております。
最後まで読んでいただきましてありがとうございます。


関連記事一覧

  1. この記事へのコメントはありません。