2025/07/07

第13回リグナイト『リグシステム座談会2』~開催レポート【miRA】~

こんにちは。
BACKBONEの福本です。

2025年5月23日に開催した、第13回リグナイト『リグシステム座談会2(KaraQri,miRA,GRIS,XXX)』の当日の様子を4回に分けてお伝えします。今回は【miRA(中谷氏)】のレポートになります。
リグナイトに関してはこちら

 

◆『miRA』ご紹介&ディスカッション(中谷氏)

<概要>

 

 

  • 2代目は「Gimmix」と呼ばれるmelベースのリグシステム。15年ほど使用していた。「Gimmix」の唯一の開発者がいなくなった際に保守管理などで難航した。その後、3代目「miRA」の開発へ。
  • デフォーマーは別途ライブラリーとして用意している。
  • フェイシャルは別のシステムが存在する。今回は割愛。
  • 用途によってシステムを組み合わせて使用している。

 

  • 2代目のGimmixでは、左側の構造のようにリグの仕組みを階層で工夫して処理していた。
  • miRAでは、リグに関する計算(処理)を「miRAmultMatrixDriver」というmatrixを計算するための独自プラグインを用いて行い、全ての情報をまとめてオフセットノードに出力している。
  • 開発初期の設計段階では、アニメーション工程でのコントローラーの作成や切替が柔軟に行えるように考えていた。現時点では未実装。

 

  • 各要素のデータを出力するための便利ツールも別途用意している。
  • miRAで最も特徴的なのがメタノードをもとにしたモジュール実行
  • 実行文の例では、1行目で、どういったオプションで作るかを指定する。2行目で、メタノードを作成して「FK or Ik」などの情報を設定する。この時点ではメタノードのみでコントローラは作成されない。3行目で、実際にコントローラを作成する。
  • 3行目でコントローラを作成しているが、作成したコントローラが何なのか戻り値として受け取れないので、スクリプト処理の際に少し使い辛い。

 

  • dataにはドリブンキーなど、セットアップに使用する要素が全て保存される。

 

  • ポストプロセスでは、アトリビュートのロックやデータ整理的な処理を行う。
  • モデルデータの更新があった際に、モデルのみ更新をかけて再ビルドをかけるとクリーンなシーンで再構築できる。例えば、シーン内でモデルを差し替えたりするとシェーダーやノードが重複してゴミが残ることがあるが、こういった問題を回避することができる。
  • スクリプトが全てナレッジになるので、他のアセットに転用できる。
  • ジュニアレベルでも、シニアと同じコントローラを組むことができる。
  • ただし、Pythonのスキルがないとリグが組めないのでハードルが高い。

 

<ビルド実演>

 

 

 

今回は、メタノードを使用したビルドの例を実演する。

1. 必要な要素をdataフォルダに保存する。

  • ウェイトは独自ツールを使用してJASONファイルで保存している。
  • 骨のデータ。

 

2. 引数に必要な要素を指定してメタノードを作成する。

  • メタノードにも幾つか種類がある。
  • 作成された最小単位のメタノードには、FKやIKなどのコントローラの種類、モジュールの種類、スタートとエンドの骨、ペアレント先、作成する数などの情報が記録される。この先に作成される予定のノードなどもこの時点で指定しておく
  • 最小単位のメタノードは、まとめるためのメタノードに接続される。

  • まとめるためのメタノードは、フレームワークの情報を管理するメタノードに接続される。
    このメタノードでは、プロジェクトやバージョンなどの情報が記録される。

 

3. コントローラ作成のスクリプトを実行する。

  • メタノードの情報をもとに、コントローラが作成される。
  • 実行ファイルには、骨の読み込みや背骨などの各コントローラの作成コマンドが順番に書かれている。
  • 目的に応じて実行ファイルを分けており、複数の実行ファイルを読み込んでコントローラを作成する。
  • コードをコピーして値を変えるだけで、体形が違うキャラクターに流用できる。
  • コントローラはインバーススケールを使うため、ジョイントベースで作成される。
  • コントローラシェイプは自前のプラグインロケータで作成している。

 

<ビルド詳細>

  • 骨、ウェイト、モデル、ケージなどの各種データはバラバラに作成しておく。
  • コントローラ作成では、必要な要素を指定したメタノードを作成する。
  • メタノードには「FK」や「IK」などの様々な指定ができる。
  • スクリプトで必要なデータとメタノードの情報を読み込み、自動でリグを構築する。
  • 骨やウェイト、モデルに修正がある場合は、それぞれのデータを修正する。

 

<Q&A>

  • Pythonのスキルセットは採用時に必須?
    中途の場合は即戦力を想定しているのでスクリプトが書ける人を採用するが、新卒の場合は書けなくてもやる気や適性があれば採用する。基本的には書けた方が嬉しい。自分でツールを書けるレベルは求めていない。基礎的なコードが読めてコピーペーストなどで対応できるレベルであれば問題ない。

 

  • セットアップチームは何人いますか?
    10名。miRAの開発もセットアップチーム内で対応しているが、最近はTDチームにも開発のお手伝いをしていただいている。miRAを設計レベルで開発できるスタッフは1人。保守管理はTD含めて2名ほど。小さい内容であればセットアップチーム内で対応している。汎用性があるものであれば、設計レベルの開発者に依頼する。案件で使用するものであればリガーが対応する。

 

  • 開発が出来るレベルまでに育てるのに何年かかりますか?
    人によるので難しいですね。簡単な保守管理であれば2~3年で出来るレベルになる。設計レベルであればもっとかかる。数人に依存している状況から脱却したいといった課題がある。

 

  • アニメーターさんから挙動を直してほしいといった要望があった際は?
    miRAの本体は全プロジェクトで使用するサーバーにおいて管理している。プロジェクトごとのフォルダにもおいて、オーバーライドできるようにしている。プロジェクト単体で発生している問題や追加の対応はプロジェクトごとにオーバーライドして対応している。全プロジェクトに影響する場合は本体を調整する。

 

  • 〘 複数人で開発する場合の作業内容はどのようにまとめていますか
    miRAの開発は基本的に一人で行なっている。本当は複数人で開発をしたいがスキル的に難しいところがある。部分的な機能開発やサポートツールについては、協力会社さんに相談させてもらうこともある。

 

  • 〘 GitHubなどは使用していますか
    今はGitHubを使っている。

 

  • 〘 ファイルサイズは大きいですか、それともモジュールごとに分けて小さくしていますか
    基本的にはFKなどのモジュールごとに設計をしてファイルサイズは小さくしている。SplineIkなどになるとどうしても1つのファイルサイズが大きくなってしまう。

 

  • 〘 開発に何年かかりましたか
    現時点で5年近くかかっている。随時改良も進めている。

 

  • 〘 苦労した点は何ですか
    メインの開発者にとって、フルスクラッチでリグシステムを開発するのは初めての経験だったため、慣れないことも多くあった。個人制作のように自由に進められるわけではなく、今後の業務で長期的に使用されるシステムとして開発する必要があった。各工程の担当者の意見を取り入れながら、限られた予算やスケジュールの中で進める必要があり、開発環境としては大きなプレッシャーを感じた。

 

  • 〘 ベースのリグシステムができるまではどのように運用をしていたのか
    先代のリグシステムがあったため、開発中はそちらを使用してもらっていた。社内のパイロット版の作品などで試験的に運用し、フィードバックをもらいながら継続して開発をしていた。完成後は本番用の作品で実際に使用した。

 

<お知らせ>

東映アニメーションではリガーを募集中です!
特にリガーの業務経験者を優遇します!
ご興味のある方は、東映アニメーション公式HPの採用ページ あるいは CGWORLD.jpの求人ページ をご確認ください。

東映アニメーション公式HPの採用ページ:https://corp.toei-anim.co.jp/ja/recruit.html
CGWORLD.jpの求人ページ:https://cgworld.jp/jobs/10073.html

 

◆『KaraQri』ご紹介&ディスカッション(白砂氏)

次回に続く。

 

※免責事項※
本記事内で公開している全ての情報について、その完全性、正確性、適用性、有用性等いかなる保証も行っておりません。
これらの情報のご利用により、何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。
自己責任でご使用ください。


ブログTOPへ戻る