2023年11月25日(土)、九州産業大学で開催された技術イベント「CEDEC+KYUSHU 2023」。2023年は現地での講演とオンライン配信のハイブリッド形式で行われた。ここでは、セッションのひとつ、「Maya 活用フルコース~ゲーム開発3社エンジニアのノウハウを添えて~」のレポートをお届けする。
なお、本セッションは、10月にCGWORLDが開催したオンラインイベント「CGWORLD JAM ONLINE 2023」で配信されたセッション「Mayaゲーム開発カジュアルトーク 〜カプコン、バンダイナムコスタジオ、セガのテクニカル担当がオートデスクにも色々聞いちゃいます~」の続編にあたる内容になっている。
「CGWORLD JAM ONLINE 2023」と同様に、オートデスクの築島智之氏を司会に、カプコンの塩尻英樹氏、セガの麓 一博氏、バンダイナムコスタジオの沼上広志氏の4名が登壇し、MayaとTAの仕事についてさらに掘り下げたトークを展開した。
※このセッションレポートは、登壇者様より特別に許可をいただいて掲載している。
プロの現場のツール制作、どう進めてる?
オートデスク築島智之氏(以下、築島):このセッションは「Maya 活用フルコース」と題しております。まずは「前菜」として、TAやツールエンジニアの皆さんがどのようなフローでツール制作をされているのか、伺っていきましょう。特に、ツールの仕様はどういうながれで決めていっているのでしょうか?
バンダイナムコスタジオ沼上広志氏(以下、沼上):私の仕事は、どちらかというと、ツールをつくるというよりはワークフローを改善することです。なので、CGアーティスト側から「こういうツールをつくって」と仕様をつくられたら負けみたいなところがあります(笑)。こちらから先回りして、手間がかかってしまっているところを探して、解決法を考えるところから始められるのが理想です。
カプコン塩尻英樹氏(以下、塩尻):うちもフローはいろいろですね。タイトルや各組織専用のツールを作成したり、アーティストと相談してアニメーション専用のものやカットシーン専用のものを短期間で制作したり、アート外の部署から発注されたりと規模がまちまちなので、その場その場に応じて、というところです。
セガ麓 一博氏(以下、麓):うちは各プロジェクトにTAが結構参加していて、その人たちが仕様をつくってくれることが多いです。もちろんそれで終わりではなくて、そこからセッションしながらより良いフローやツールにしていきます。
塩尻:つくったあとからの調整もたくさんあります。ツールをつくって何年も経ってから仕様の相談が来ることもよくありますね。
築島:仕様を決めていくうえではどのようにコミュニケーションを取っていくんですか?
麓:要件の聞き取りの時点では、どういうツールが必要かをはっきりとはわかっていないアーティストが多い印象です。うちのチームはこれまでたくさんツールを制作してきましたから、その経験をベースにこちらから「こういうツールはどうですか」と提案しています。
それと、まずGUI、アーティストが触る部分を先につくってしまうこともよくあります。このボタンはこういう機能、このチェックボックスはこういう機能というのをモックアップで触ってみてもらうと、アーティストもイメージしやすくなるんです。
築島:PySideを使ってUIを構築したり、ですか?
麓:そうですね。PySideはGUI構築にすごく便利なPythonライブラリですが、PySideの関数だけでは少し足りない部分もあるので、社内ではPySideを取り入れたGUIをライブラリにして共有するかたちで使っています。
築島:なるほど。ちなみにMayaではPySideをそのまま使えるようになっています。
ヘア表現を効率化するにはやはりツールが必要
築島:ではここからは「メインディッシュ」です。お三方と一緒に取り上げたいテーマをどんどん紹介していきましょう。まずはセガさんが『PSO2 ニュージェネシス』用に開発したMaya用のヘア制作ツールです。
麓:『PSO2』のように、現実ではありえないような髪型をたくさんつくりたい場合、手で調整することが多くなるので、リレーションを便利にする機能をひとつのツールにまとめて提供しています。
カーブのエッジごとにスムージングをかけたり、カーブで毛束の太さを調整したり、角度をつけて髪のひねりを出したりできます。完成後に微調整することも多いので、ある程度のパラメータは非破壊編集にも対応しています。
築島:こういうツールがあることで、品質を一定に保ったり、スピーディに制作したりできますね。裏で動いてるのは基本的なNURBSカーブやロケーターですから「便利そうだしMayaに標準搭載したら?」となるところですが……。実際は汎用性から専門性にシフトしているツールなので、なかなかそうはいかないという。プロジェクト内での費用対効果は高いですが、他のプロジェクトではチューニングやカスタマイズが必要になりますね。
カプコンさんも、『BIOHAZARD RE:4』のヘア表現で取り組まれたことがあるそうですね。
塩尻:はい。これはMayaとは直接関係はないんですが、10月末に「CAPCOM Open Conference Professional RE:2023」という業界向けのイベントを開催しまして、RE ENGINE(カプコンが開発する内製ゲームエンジン)で髪の毛を扱ったセッションを公開しています。何かの参考になれば。
築島:非常に高度な、実機のゲーム処理が詳細にわかるセッションです。ヘア表現に限らずツールは本当に多種多様で、プロジェクトの規模や環境、文化によって最適なツールが変わってくることがわかってもらえたかなと思います。
Mayaのツール開発と切り離せない「FBX」フォーマット
築島:次はファイル形式「FBX」がテーマなんですが、皆さん語りたいことが多すぎてこんな感じになっています(笑)。
沼上:ゲームの開発においては、FBXとFBX SDKってMayaと切り離せないものです。FBXはゲームエンジンやランタイムにデータを持っていくための中間ファイルとして使うことが多いですが、そのためにFBX SDKで細かい作業をする必要がありまして。
代表的なものとして、Mayaから出力したFBXをゲームエンジンに持っていくときに、ノード名に「ネームスペース」(カテゴリ名のようなもの)が付いてしまう場合があります。
リファレンスを使ったシーンのつくり方をしていると、名前の重複を避けるために自動でネームスペースが付きます。でもそのデータをそのままエンジンに持っていくと、「名前が違う=違うデータ」という扱いになって、データの更新ができなくなってしまいます。
そのため、FBX SDKを使って、FBXの中のゲームエンジンに渡す前にネームスペースを除去する処理を入れるんです。
麓:とてもよくあるながれですね。
沼上:❝あるある❞なんですが、その割にFBX SDKの情報はあまり出回ってないのでこの機会に紹介しますね。他にも、複数のファイルの同じ箇所をまとめて加工して再出力するバッチ処理みたいな機能も、FBX SDKでつくれます。
それともうひとつ、FBXExtPlugin(FBX Extention)というものもあります。これはカスタマイズしたFBX SDKみたいなものです。これを使えばエクスポート時に直接ファイルを加工できて、FBXSDKよりも処理のながれがスムーズになります。でも、まだ機能面で足りない部分があって。そのあたりはオートデスクさんにリクエストを出しているところです。
※参考:Maya Creative ヘルプ|FBX の一般的な MEL コマンド
築島:少し突っ込んだ話ですね。そもそも、現場ではなぜFBXを使うようになったんでしょうか?
沼上:やっぱりFBXはオートデスクさんがつくったフォーマットですから、Mayaなどとの相性が良いですし、Unreal EngineやUnityがFBXを標準で採用しているというということも大きな理由ですね。
塩尻:カプコンはRE ENGINEの前のゲームエンジンではCOLLADA(XMLで記述されるフォーマット。拡張子はdae)を使っていたんです。でも10年ほど前に当社のメインツールがSoftimageからMayaに変わったタイミングで、FBXに変えていますね。もちろん、VFX系データを扱うのにAlembicを使ったり、特定の文字列を入れ替えるときにAtomを使ったりと、使い分けてはいます。
麓:セガではオリジナルのファイルフォーマットを使っていますが、FBXも既成のゲームエンジン用に使うことが多いです。現場では、Maya側からいろんな情報をアトリビュートに詰め込んで出力するとMayaが不安定になることもあるので、あえて出力後のFBXをSDK経由で加工したりもしています。
Mayaがクラッシュ! キホンのトラブルシューティング
麓:不安定と言えば、Mayaがクラッシュしたとき、皆さんはどうしていますか。
塩尻:クラッシュの原因は判定が難しいので、カプコンではまず、「そのシーンだけで発生しているのかどうか」、「他の方のMayaでも発生しているのか」、「確定で発生するのかどうか」という3点を確認するようにしています。
汎用的な対処としては、Cドライブ([Users→ユーザー名→Documents])にあるMayaフォルダ、もしくはその下のVerフォルダをリネームして再起動します。弊社の事例では、6〜7割ぐらいはこれで解決できています。
築島:気付かないうちにオプション設定が変わっていて、不具合が出ることもあります。リセットするとデフォルトに戻ってツールが動作するようになったということも。
塩尻:そうですね。最初に疑うのは「userPrefs.mel」です。これをリネームして解決できたら中身に原因があるので、少しずつ解析して調べていくようにしています。
沼上:うちでも年がら年中、userPrefs.melという言葉が飛び交ってます(笑)。
塩尻:よくありますよね(笑)。それと、最近発生した事例では、「General.json」(2020年までは「Maya_Classic.json」)のファイルが原因だったことが一度ありました。ワークスペース周りがおかしくなったようです。
築島:ありがとうございます。そちらは修正しました。
塩尻:ありがとうございます(笑)。そしてこちら、登壇者の皆さんと事前に話していたときに、「問題が起こったときにはこういうことやるよね」と挙がった内容から6つ書き出しました。グラフィックのドライバーを変更するとか、シーンを「Optimize」してみるのは結構有効な手だと思います。3番目と4番目はインポート関連です。
築島:Mayaでは「開く」と「インポート」はそれぞれ動作が異なります。ドラッグ&ドロップは「インポート」の作業なんです。僕が昔セガにいたときにあった事例ですが、先輩に「このファイル動かないから見てほしい」と言われて、もらったファイルを「開く」してみたら開くんですよ。おかしいなと思って先輩の席に行ったら、先輩はファイルをドラッグ&ドロップしていたんです。Mayaのファイルには一部、インポートのときだけに効くオプションがあるので、ここは意外な落とし穴です。
塩尻:次はFBXかOBJ形式で一度書き出すという方法です。OBJでは今あんまりやらないですけど、FBXで書き出すというのは❝テッパン❞というか、けっこう解決する確率が高い方法ですね。最後はパス名に含まれたマルチバイト文字が問題を起こしている場合です。
それから、Mayaがなぜか終了できないというトラブルもありますよね。当社でいろいろ見てきて、原因としてひとつあるなと思うのが「パネルレイアウトとファイルの保存」です。ここのオフで正常に終了するようになったという事例が多いです。
もうひとつ、Mayaにはいろいろな環境変数が設定されていて、これでコントロールできるようになっています。事例によっては環境変数を見てみるのもいいかと思います。それでもダメだったらオートデスクさんに質問します。
※参考:Autodesk Support|PC 起動後に Maya を立ち上げると毎回 "data collection and use autodesk" window が表示される場合
※参考:Autodesk Support|MAYA_DISABLE_OPENCL で何が変わるのか
築島:これはメーカーからのお願いなんですが、クラッシュしたとき、OSから「クラッシュした情報を送りますよ」というダイアログが出ると思います。そこでぜひ「キャンセル」せずに情報を送ってほしいんです。
あのダイアログ周りは年々賢くなってまして、送ったエラーが修正済みのものの場合は「このバージョンで修正されてますよ」と教えてくれるようになっているんです。それと、クラッシュの情報はこちらで集計していますから、似たクラッシュ報告が相次いだ場合、修正の優先度が上がります。
TAのやりがいとは何か
築島:最後に「デザート」として、TAのやりがいについて伺います。
事前の打ち合わせでは、自分の作業に疑問を持って「何か技術的な解決ができないかな」とか、誰か困ってる人がいて「サポートできないかな」と思った時点でTAだ、という素敵な話も出ました。皆さんはどうしてTAやツールエンジニアになり、そしてどんなところに面白みを感じていますか?
塩尻:僕は25年ほど前にアーティストとして入社したんですが、周りがもうすごすぎて、なんとか絵とは別に食っていける道を見つけなければならんということで、技術的なことを始めたのがきっかけです。新しい知識を得るのはそれほど苦になりませんし、アーティストと共同でやることにも面白みを感じています。長くやっていると少しずつ周りから信頼されるようになって、大きな仕事も任されるようになるという面白みもあります。
沼上:私は元々エンジニアとして入社していて、アーティストのセンスはないけど綺麗な画をつくりたいな、計算でつくれるCGは良いなと思って始めたんです。
でも今はちょっと変わっていまして。ワークフローとしていろんな問題を解決しなきゃいけないときには、3DCGからWeb、コーディングとか様々な技術の知識が材料として必要になります。そういう自分が持ってる知識の断片を組み合わせたときに、「こことここを繋ぐだけで全部繋がって良い環境ができちゃった」みたいなことがたまにあるんですよね。そういうとき、めちゃくちゃ気持ち良いんですよ。そういう体験をしたい人は、TAを目指してみるのも良いのかなと思います。
そして、Mayaって割とそういうことを実現しやすい環境なので、実はMayaに出会ったことがTAをやりたくなったきっかけなのかなと。綺麗にまとめてみました(笑)。
麓:TAという職種は、ゲーム開発のフローが複雑化してきたことによって生まれたひとつの副産物という捉え方もできるかなと思ってます。普通の開発から、未知の領域に足を踏み入れて、踏み込んで、進化してきた特異なかたちに名前が付いた、みたいな。
そういう未知のことに対して、「知らなくてもいい」じゃなくて「何それ面白そう!」と入っていける人が、TAに向いているのかなと思います。
築島:そうですね。次々と新しい技術が出てくる業界ですし、TAさんの存在はこれからもっと重要になっていくと思います。
皆さん、今日はありがとうございました。
お問い合わせ
オートデスク株式会社
www.autodesk.co.jp
TEXT__kagaya(ハリんち)
EDIT_Mana Okubo(CGWORLD)