MAYAシーンデータの最適化して快適作業を目指そう【3Dモデラー】

MAYAで作業をしていくとデータが散らかったりヒストリーが増えたりして、作業が重かったり思わぬエラーにつながったりするんですよね。

この記事では、MAYAのデータを最適化して快適な作業かつエラーのないデータづくりをする方法を紹介します。

この記事を書いた人
tutusia_icon
つつしあ

つつしあ

ゲーム会社でキャラクターデザイナー、キャラクターモデリング担当。Pythonを独学し、Maya用ツールもつくってます。 主に使うツールは、Maya、ZBrush、Photoshop、SubstancePainter

目次

MAYAデータ最適化の方法

MAYAのデータを最適化するには以下の項目をおこなえばOK

  • シーンサイズの最適化
  • ヒストリーの削除
  • トランスフォームのフリーズ
  • 多角形ポリゴンのチェック
  • オブジェクトのリネーム

ただし、進捗状況によっては「あえてヒストリーは残しておく」ということもあるので臨機応変に対応するといいですね。

シーンサイズの最適化

シーン内の不要なデータを除去、整理して軽量化してくれる。データを提出する前や、極端に動作が重たくなったなというときに実行しよう。

ファイル>シーンサイズの最適化 の右にある四角メニューから設定をひらいて実行。

なんかいろいろ設定があるけれど、初期設定+「不要なノード」にチェックを入れて適用でOK。チェックボックス触りすぎて初期設定が分からんってときは、左上の編集メニューから初期設定に戻せるぞ。

念のため実行前に別名でバックアップ保存をしておくことをオススメする。

ヒストリーの削除

MAYAで編集を重ねると、編集内容がヒストリーとして蓄積されていく。ヒストリーの残留は不具合につながりやすいので適度に削除することが大切。

編集>種類ごとの削除>ヒストリ(またはCtrl+Alt+D)で選択しているobjectのヒストリーが削除できる。

スキンウェイトを適用したモデルに実行するとウェイト情報も消えてしまうので、その場合は「デフォーマー以外のヒストリの削除」を実行しましょう。

研修生のデータをチェックしてたとき、ヒストリーが残ってて見た目がバグってることがあったのでヒストリーの削除は入念に。

トランスフォームのフリーズ

モデルを移動回転スケール変更などすると、トランスフォームの値が変更されていく。

修正>トランスフォームのフリーズ で編集結果を確定して、トランスフォーム値を初期値に戻せる。

このフリーズを忘れてて、ゲーム上にキャラクターを出した時にサイズや位置がズレてた経験があるんで、フリーズもしっかりしよう。

多角形ポリゴンのチェック

モデラー向けのデータ最適化ですが、多角形ポリゴンの見つけ方も紹介しておく。

メッシュ>クリーンアップ>□、からクリーンアップ設定を開き「5辺以上のフェース」にチェックをして実行をすると多角形ポリゴンを見つけ出せる。

この時、操作の箇所を「一致するポリゴンの選択」にしておいたほうがいい。一致ポリゴンをクリーンアップにしておくと自動で修正されて、意図しないポリゴンの割りにされてしまう可能性があるからだ。

範囲は選択したオブジェクト、すべてのオブジェクトどちらでも大丈夫。用途に応じて範囲を選んでもらえば問題ない。

この通り一見普通のポリゴンだがしかし、そこに潜む多角形ポリゴンを見つけることができる。

オブジェクトのリネーム

オブジェクト名は分かりやすい名前に変更して、グループやペアレント化を活用して整理しよう。

仕事やプロジェクトなどで命名規則が決められている場合は、それをしっかり守ってリネームしよう。細かなことですけど、こういうのホント大事です。

といいつつ自分も初期プリミティブ名のまま作業することがあるんで、気をつけます。

不要な中間ノードを除去する小技

MAYAシーンの最適化をいろいろ行っても残り続ける強いゴミが存在します。「不要な中間ノード」ってやつです。

経験上スキンウェイト作業やモーションなどの作業をしていると「不要な中間ノード」は増えていきます。こいつが増えると、シーンの容量を圧迫してデータ読み込み時間に影響が出るので結構厄介。

いろいろ対策を考えて今のところ思いついてる方法が下記pythonを実行することになる。

import maya.cmds as cmds
#不要中間ノード除去
cmds.select(ado=True)
cmds.file(f=True,es=True)
current_scene = cmds.file(q=True,sn=True)
cmds.file(current_scene, f=True,o=True)
cmds.viewFit(all=True)
cmds.file(f=True,save=True)

やってることは単純で、すべてのDAGノードを選択して書き出して、その書き出したデータで上書き保存している。

DAGノードのシーンの書き出しを行うと接続がない不要な中間ノードが書き出されないっぽい?ので結果として中間ノードを除去できるといった感じです。

自分が使ってきたところ上記pythonは特に問題なく動作しているが、このpythonを使っての損害に対し一切の責任をとりませんのでご了承ください。 もし使う場合は、シーンのバックアップを取ったうえで使うことを勧める。

まとめ:MAYAシーンの最適化を心掛けて綺麗なデータづくりをしよう

MAYAシーンの最適化方法を紹介しました。

MAYAシーン最適化方法まとめ
  • シーンサイズの最適化
  • ヒストリーの削除
  • トランスフォームのフリーズ
  • 多角形ポリゴンのチェック
  • オブジェクトのリネーム

MAYAシーンの最適化は自分自身が快適に制作するためにとても恩恵があるし、他社にデータを渡したりチェックしてもらったりするときのトラブル回避にも効果的だ。

データチェック時に綺麗に最適化されたデータだと「おっ、コイツ仕事できるなぁ」と思ってもらえることもあるのでぜひMAYAのシーンデータ最適化は心掛けていきましょう。(これは自分自身にも言い聞かせている

この記事が気に入ったら
フォローしてね!

記事がよければシェア!
目次