MODO 機能紹介・チップスサイト このサイトでは、MODOの基本機能やチップスをご紹介していきます。

Delete Extra Polygon Set

ダウンロード

バージョン

v1.2

概要

こ のスクリプトはプリセットに登録されているアイテムなどをシーンに読み込んだ際に自動的に作成されるポリゴンセットを削除し、そのポリゴンセットを元に作成されるマテリアルグループをアイテムマスクへと変更します。

注意

このスクリプトでは文字コードの関係上、日本語名称のプリセットアイテムに対しては正しく動作させることができません。お手数ですが、プリセットアイテムは英数字の登録にてお願いいたします。また誤動作する可能性を考え、必ずバックアップを取ったうえでスクリプトの実行をお願いいたします。

解説

このスクリプトでは、プリセットアイテムをシーンに読み込んだ際に自動的に生成されるポリゴン選択セットを削除し、そのポリゴン選択セットを使用したマテリアルグループをアイテムマスクへと変更します。

del-extra-polygonset

通常お使いいただくには問題ないのですが、FBX形式などを経由する場合、余分なポリゴン選択セットまで出力されるという問題があるため、これらを全て削除するようにしています。

基本的な処理の流れは以下の通り:

  • ポリゴンセットの情報を取得
  • マテリアルグループの情報を取得
        • 各レイヤーに対して以下の操作
          ポリゴン数を取得し、全ポリゴン数がポリゴンセットのポリゴン数が一致していればプリセットアイテムであるとみなしポリゴンセットを削除
  • ポリゴンセットでマスクされているマテリアルグループをアイテムマスクに変更

このスクリプトで重要となるのは、シーン内に存在するポリゴン選択セットマテリアルグループの情報を収集するというところです。

ポリゴン選択セットはlayerservicepolsetで取得しますが、マテリアルグループはsceneservicemaskで取得します。ポリゴン選択セットは各メッシュに対して設定されるものであるのに対し、マテリアルはシーン全体を通して設定されるものである、という基本的な構造な違いがありますので、取得したい情報の性質と、それに対応するサービスを合わせるようにしてください。

また、このスクリプトは日本語GUIに合わせて作られていますので、英語GUIでは一部正しく動作しない可能性があります。その際には、141行目の以下の部分を書き換えるようにしてください:

141:    lx.eval( 'mask.setPTag (全て)' )

141:    lx.eval( 'mask.setPTag (all)' )

2014年12月22日