CATリグをゲームエンジンに出せる形へ|EAのF1担当TAの3ds Max無料ツール3本

3dsMax

Autodesk Media & Entertainmentが2026年7月7日(米国太平洋時間)、公式YouTubeチャンネルで講演動画「Driving High-Fidelity Game Characters with 3ds Max for EA SPORTS’ F1」を公開しました。登壇したのは、レースゲーム『F1』シリーズを手がけるEAのテクニカルアーティスト、Shirzad Bahrami氏。約51分にわたって、長年使われてきたキャラクターリグをどう刷新したかが語られます。そして氏は講演とは別に、自作の3ds Max用ツールをGitHubでMITライセンス・無料で公開しています。

EAでF1のキャラクターリグを刷新したテクニカルアーティスト

Autodeskの公式説明によれば、この講演のテーマは「レガシーなキャラクターリグを3ds Max上で進化させ、アニメーション品質を引き上げ、新世代のレーサーをプレイヤーに届けるまで」です。移行に伴う技術面・制作面の課題と、それを支えたカスタムツールおよびキャラクターワークフローが扱われる、と紹介されています。

公式に出ている情報は上記の要約までで、章立ては公開されていません。中身は動画(51分35秒)で確認してください。

Bahrami氏は本人サイトによると英国エディンバラ拠点で、EA SportsでF1タイトルのキャラクター品質・リグ改善・ワークフロー最適化を担当。それ以前はKeelWorksでシューティングゲーム『CYGNI』の唯一のリガーを務めていました。扱う言語はMaxScript・Python・Vex・Mel・C++・C#とされています。

ここから先で紹介する3本は、EA社内のツールではなく、氏が個人で公開しているものです。いずれもMITライセンスで、GitHubから無料で入手できます。

CATリグをゲームエンジンに出せる構造へ変換する「CAT.RootNode」

3ds Maxのキャラクターリグといえば標準のCAT(Character Animation Toolkit)ですが、CATリグはそのままだとゲームエンジンへ書き出しにくいという問題があります。CAT.RootNodeは、そこを埋めるためのツールです。

やることは、CATリグから通常のボーンで同じ構造を作り直し、ルートボーンを追加すること。作られた新しいボーンは元のCATノードに位置と回転をコンストレイントされるので、CATリグを動かせば新ボーンがそのまま追従します。

CATリグから再生成したボーン構造が、元のCATリグに追従して動くところ
左が元のCATリグ、右が再生成したボーン構造。コンストレイントで追従する(画像: CAT.RootNode 公式リポジトリより)

再生成された新ノードは、元のCATボーンと同じ名前・色・位置を引き継ぎます。操作は、CATボーンを選択して「Add Nodes」でリストに追加し、「Recreation」を押すだけ。IKやハンドルなど別種のノードが混ざっても、スクリプト側がCAT bone / Hub Objectのクラスだけを通すフィルタを持っています。

CAT.RootNodeのUIでCATボーンを選択しているところ
CATボーンを選択して「Add Nodes」でリストへ追加する(画像: CAT.RootNode 公式リポジトリより)

もう一段ありがたいのがスキンの引っ越しです。スキンモディファイアを持つメッシュを選んで「Add Skin」でリストに入れ、「Skin Transfer」を押すと、旧CATボーンに紐付いていたスキンデータが新ボーン側の「Transferred Skin」という新しいモディファイアへ移されます。元のSkinモディファイアは削除されず、無効化された状態で残るので、後から見比べられます。

複数のメッシュのスキンモディファイアをリストに登録した状態
キャラクターが複数メッシュに分かれていても、まとめてリストに登録できる(画像: CAT.RootNode 公式リポジトリより)

スキンを持つオブジェクトが複数あっても、同じ手順で全部リストに入れられます。リスト上で選ぶと3ds Max側でもそのオブジェクトが選択されるので、入れ間違いに気づきやすい作りです。

リファレンスムービーを3ds Maxの中で再生して描き込める「AnimRef」

AnimRefは、画像シーケンスを3ds Maxの中で読み込んで再生するツールです。再生位置は3ds Maxのタイムスライダーと同期するので、リファレンスムービーとシーンのフレームを突き合わせながら作業できます。

AnimRefのUI。犬の歩行サイクルの作画が並んでいる
AnimRefのウィンドウ。タイムスライダーに同期してシーケンスを再生する(画像: AnimRef 公式リポジトリより)

公式が挙げている機能は次のとおりです。

  • シーケンス再生: 画像シーケンスを3ds Maxのタイムスライダーに同期して再生
  • 描き込み: 複数レイヤーに描画。不透明度・消しゴム・undo/redoに対応
  • オニオンスキン: 前後のフレームをゴーストとして重ねる
  • 動画→シーケンス変換: 必要になった時点で変換機能をダウンロードして使う
  • PNG書き出し: フレームごとの描き込みを書き出せる
  • タイムシフト: シーケンスをタイムラインに対してずらす
  • ウィンドウ不透明度: ウィンドウ自体の透け具合を調整できる

読み込める形式はBMP・JPG/JPEG・PNGです。

ポーズと階層をまとめて保存する「Posture」

Postureは、選んだオブジェクトの位置・回転・スケールをプロファイルとして保存し、後から呼び戻すツールです。保存先はシーン内に加えて外部ファイルにも書き出せるので、別シーンへ持っていくこともできます。

PostureのUI。左にオブジェクトリスト、右に保存したポーズのプロファイルが並ぶ
左が対象オブジェクト、右が保存したプロファイル。GlobalとLocalを切り替えられる(画像: Posture 公式リポジトリより)

特徴は保存の仕方が2通りあることです。Globalは原点からの絶対トランスフォーム、Localは親を基準にした相対トランスフォームで、両方を同時に保存することもできます。保存されるのはトランスフォームだけでなく、親・子リスト・名前・ワイヤーカラーも含まれます。

この「親子関係まで保存する」性質を利用して、削除してしまった空ノードを、同じ名前・色・階層のまま復元するという使い方もできるとされています。対象はジオメトリ・シェイプ・ライト・カメラ・ヘルパー・スペースワープ。作者からは「リグを扱うならリグ構造そのものではなく、コントローラとヘルパーのトランスフォームを保存するように」という注意書きが添えられています。

対応バージョンと導入方法

ツール最新リリース対応する3ds Max
CAT.RootNode1.0(2024年8月31日)2020〜2025
AnimRef1.5.3(2025年9月1日)2025〜2028
Posture1.3.1(2024年9月2日)2018〜2025

3本とも導入方法は共通で、配布物に含まれる「One-Click Installation.bat」を実行するか、ZIPを C:\ProgramData\Autodesk\ApplicationPlugins に手動で解凍します。いずれもMacroScriptとして登録されるので、3ds Max上で X キーを押して検索するか、ホットキーエディタでショートカットを割り当てて呼び出します。

ライセンスは3本ともMITで、価格は無料です。

管理人のひとこと

私は普段3ds Maxで背景やモデリングを担当していて、リギングは専門ではありません。それでもCAT.RootNodeは刺さりました。CATは組むのは速いのに、いざエンジンへ持っていく段になると構造がそのままでは通らない、というのは何度か経験があります。そこを「同じ名前・色でボーンを作り直してコンストレイントし、スキンも移す」という手順で埋めてしまうのは、いかにも現場の人が自分のために書いたツールという感じがして納得感がありました。旧Skinを消さずに無効化して残すあたりも、実際に事故った経験がある人の作りだと思います。AnimRefとPostureはリガー・アニメーター向けですが、Postureの「消したヘルパーを階層ごと復元できる」は職種を問わず使えそうです。3本ともMITで、GitHubにソースがそのまま置いてあるので、中身を読んで自分の用途に合わせて直せるのも良いところ。こういうツールを見て自分でも組んでみたくなったら、MAXScript入門の記事から入るのがおすすめです。

コメント

タイトルとURLをコピーしました