Media & Entertainment Collection and Arnold キャンペーンMedia & Entertainment Collection and Arnold キャンペーン

チュートリアル / Mayaにゲームエンジンを組み込んでみよう!~効率的なアセット製作環境を目指して~
第1回:ゲームエンジン組み込みのススメ

2016.08.23

  • Maya
  • ゲーム
  • スクリプト・API
  • チュートリアル
  • 上級者
ガンバリオン

みなさん、こんにちは。今回縁あって「Mayaにゲームエンジンを組み込んでみよう!」と題してコラムを書かせていただくことになりました、ガンバリオンのエンジニアの森下です。普段は社内のグラフィックス部分のプログラミングを主に担当しています。

弊社では自社ゲームエンジンをプラグインとしてMayaに統合しており、それによってMayaのビューパネル上でゲームに近い見た目の状態を確認しつつアセット製作を行える環境を整えています。このコラムでは、このプラグイン開発から得られた知見をもとに、Mayaにゲームエンジンを組み込むことを目標として、Mayaのレンダリングのカスタマイズ方法や、Mayaとゲームエンジンとのインターフェースなどについて、3~4回に渡って紹介できればと思っています。

また、CEDEC2016でも関連した講演を行う予定です。
8/25 14:50~15:20 「今世代向けプロダクションにおけるアセット製作のための、Mayaへのエンジン組み込み
こちらの講演ではプラグインの作り方についてしっかりと解説します。このコラムの内容をより理解する助けとなると思いますので、興味がありましたら、ぜひお越しください!

もう一つお知らせとして、このコラムの題材であるMayaとゲームエンジンとのインターフェース部分をGitHubにて近日中に公開予定です。比較的簡単にカスタマイズが可能なものになるよう現在鋭意製作中です!このコラムではこの公開するインターフェースに沿って解説していきたいと思っていますので、しばしお待ちいただければと思います。

では、今回の本題にいってみましょう!

なぜゲームエンジンを組み込むの?

初回となる今回は導入として、なぜMayaにゲームエンジンを組み込むことになったかの経緯をお話していきたいと思います。

ご存知の通り、近年ハードウェアの進化に伴って、ゲーム上でリアルタイムに表現できるグラフィックスはリッチなものになっていっています。最近の多くのタイトルで目にする物理ベースレンダリングなどをはじめ、数多くのポストプロセス技術が組み合わされて最終的なゲームの画面が成り立っています。

弊社でもこの流れに乗って今世代プラットフォーム向けの検証、開発に乗り出すわけですが、徐々にゲームエンジンの描画の機能が増えてきて、いざアセットを作ってみようとしたときに、ある問題が出てきました。それは、

「Maya上とゲーム上でアセットの見た目がまったく違う」

これまではMaya上ではマテリアルの指定にはdx11Shaderを使用しており、その際シェーダコードをゲーム側と共通化することである程度見た目を再現できていました。Forward Renderingでしたし、シンプルなシェーダのものが多かったからですね。
今回の場合はライティングモデルも複雑になり、ポストプロセスも無視できないほど重要なウェイトを占めるようになったため、Maya上で簡単に見た目を再現することが困難になりました。

こうなると、アーティストさんが見た目を確認するためにはその都度アセットをゲームに出力する必要が出てきます。Mayaから出力されたメッシュ(FBXなど)や、テクスチャなどのアセットデータは、多くの場合そのままゲーム上で使用できるわけではなく、一度独自のコンバータを通して、ゲームデータに変換されて初めてゲーム上で使用可能になります。

Mayaから出力されたメッシュ(FBXなど)や、テクスチャなどのアセットデータは、一度独自のコンバータを通して、ゲームデータに変換されて初めてゲーム上で使用可能になる

このコンバートの過程がまた厄介で、昔と比べメッシュの頂点数も増えていますし、テクスチャの解像度や、枚数も増えているため、すぐには終わってくれません。コンバートの手順自体はバッチ化し1ボタンで呼び出すなどして簡略化することができますが、完了までの待ち時間を0にすることはできません。 結果としてアセットの修正を行うたびに確認のためそれなりの時間待たされることになります。これではアセット製作の効率は最悪ですし、何より精神衛生上よくありません。アーティストさんには気持ちよく製作してもらいたいものです。

ここから環境の改善に取り掛かるわけですが、割と早い段階でMaya上での見た目をゲーム上での見た目に近づけるという方針に決まりました。というのも何度もMayaからエクスポート、コンバートという手順をとるのはどう考えても手間ですよね。最終的な見た目の確認はゲーム上で行わなければならないとはいえ、その回数はできる限り減らしたいものです。

では実際どうしたものかと考えたときに、昔受講したセッションのことを思い出しました。それが、GDC2014で講演された「Killzone Shadow Fall: Creating art tools for a new generation of games」です。この講演ではGuerrillaGamesのMayaへのゲームエンジンの組み込み事例が紹介されていました。

ゲームエンジンを使ってMaya上に描画できれば間違いなくゲーム上に近い見た目を再現することができます。何よりエンジニア的にも作るのがとても面白そう!ということで「Mayaにゲームエンジンを組み込む」という方法をとることにしました。
組み込むとどうなるのかをイメージしやすくするため、作成したプラグインを少し紹介したいと思います。

実際に組み込んでみた結果はというと、当然ですが作業効率は劇的に改善されました!以前の環境が悪すぎたというのはありますが、アーティストさんからの評判もとても良いです。作成したプラグイン自体は大掛かりなものではなく、1人で2~3週間ほどで作成したものですが、かけたコスト以上のメリットを得ることができています。

「Mayaにゲームエンジンを組み込む」というとすごく大変そうに思われがちですが、Mayaのすべての機能に対応するわけではなく、社内でよく使用している機能に限定して対応すれば、そこまで大変ではありません。ゲーム向けのアセット製作で、対応が必須となる機能はそれほど多くはなく、現実的なコストで作成可能ではないかと思いますので、これからのアセット製作において魅力的な選択肢となり得るのではないでしょうか。

さて、今回はゲームエンジンをMayaに組み込んだ理由についてお話ししました。
次回からは作成方法について書いていく予定です。ぜひまたお付き合いいただけますと幸いです。

著者

森下 宏樹

森下 宏樹

株式会社ガンバリオン
テクニカルチーム エンジニア