見出し画像

MAYAで頻発するバグの備忘録

こんにちは。デザイナーのYです。

社内では3Dキャラクターモデリングを担当しています。

昨今ゲーム開発は規模が大きくなり、数年単位で開発を行うことが多くなりました。長期開発を行っていると、使用するソフトのバージョンの変更があったり、作り直しで同じデータを大人数で触ることになったり……
段々と問題が発生しやすい環境になってしまいがちです。
今回はMaya関連でよく発生していたバグを備忘録がてら4つ紹介したいと思います。


ポリゴンが表示されない

定番のバグです。
メッシュを作成しようとした際に、アウトライナ上では正しく作成がされているのに何も表示されないことがあります。

スクリプトエディタを見ると

// エラー: file: C:/Program Files/Autodesk/Maya2022/scripts/others/hyperShadePanel.mel line 9889: 次の接続が生成されませんでした: 'shaderBallGeomShape1.instObjGroups[0]' -> 'initialShadingGroup.dagSetMembers[0]'。 目的はロックされています。 //

とあります。

書いている通りではあるのですが、モデル制作時にmaya側で自動で接続されるinitialShadingGroupがロックされているため描画がされていません。なので、lockNodeコマンドを使用して、ロックを解除します。
スクリプトエディタで以下を実行してください。

select -ne :initialShadingGroup;
lockNode -l 0 -lu 0;

何かの作成が出来なくなった際は、maya側で自動で接続されるノードにロックがかかってしまっていることが多いです。
正常に稼働するシーンでノードエディタを開いてください。
その後、補助ノードの表示にチェックを入れ、作成を行い自動で接続されるノードを確認します。それをまず怪しんでみるのが良いのかなと思います。


「本体がないため、MEL関数は実行を停止しました。」という警告が出る。

プロジェクト内でmayaのバージョンの変更があった場合や作業者間でバージョンが違ってしまっていた際等によく発生します。
removeを押しても何故か再発し、害はないから許可を押してしまって放置という人もいるのではないでしょうか。

シーンファイルに保存されたmayaUI周りのノードに含まれた「CgAbBlastPanelOptChangeCallback」関数が見つからないため警告が出ています。
この警告が発生するシーンを読み込むと、mayaのUIを構成しているMELに記述が追加されてしまうため、同じ警告がずっと出てしまいます。

以下の手順で解決します。

①プリファレンスのUI要素からパネルレイアウトとファイルの保存
②保存したレイアウトをファイルから復元のチェックを外してからプリファレンスを保存します。
③その後シーンを開き、警告が出なければ保存を行います。

.maファイルから直接該当の関数部分を除去することでも対応できます。


シーンのファイルサイズがやけに大きい


シーンサイズの肥大化の理由は多々ありますが、キャラモデリングでよくある事例としては「Orig」というサフィックスがついたノードが複数個残ってしまっていることがあります。

スキニングをした際に、このノードが作成されるのですが、ハイパーグラフで非表示ノードを確認すると複数個持ってしまっている場合があります。

origノードが2つ存在している。

発生する原因として、よく行われるオペレーションがあります。
スキニングしたオブジェクトを修正する際に、元の状態を確認用に残すためにスキンのバインドを行ったメッシュを複製する。
その後、複製したオブジェクトでスキンのバインドを行うことで、複製元のorigノードが残ったまま、2つめのorigノードが作成されてしまいます。

・ヒストリーの削除を行えば問題なく削除されます。

過去には5個以上残ってしまっているデータもありました。
これに関しては結構頻繁に見かけるので、データチェック項目として入れておくのがおすすめです。


旧バージョンのmayaで開くとスキニング済みのモデルが動かない


あえて新バージョンで作成されたモデルを旧バージョンで開くことは少ないとは思います。ですが、弊社では使用しているスクリプト等の関係やバージョン依存のバグの関係で、モデル班とモーション班が使用しているバージョンが違ったために発生しました。

Maya2022から旧バージョンで微調整(Tweak)ノードを使用するGroupIDシェイプから、コンポーネントタグシェイプに切り替え、コンポーネントタグシェイプを使用していた場合、旧バージョンでスキニングを確認することができません。

旧バージョンの仕様で制作する場合は、

①プリファレンスのアニメーションタブのリギング項目のデフォメーションコンポーネントのサブセットにコンポーネントタグを使用のチェックを外す。
②デフォーマの作成時に微調整ノードを追加にチェックを入れる。

この状態で、スキンのバインドを行うと旧仕様で制作できるようになります。


以上4つほど紹介しました。
一度解決しても再発した際に、「前はどうやって直したっけ?」となってしまうことも多く、今回備忘録として書かせていただきました。
助けになることがあれば幸いです。

それでは。