Maya用のスクリプトを作ったのでせっかくなのでこちらで配布しようと思います。

TrM_PolyNormalPackage Ver0.21 ダウンロード
TrM_PolyNormalPackage Ver0.20 ダウンロード

更新履歴
Ver0.21
  • 法線の座標変換に関するバグの修正
  • 法線表示の切り替えをコンポーネント単位で行えるようにした
Ver0.20
  • 公開

このスクリプトには以下の2つのツールが入ってます。
  1. 頂点平面化ツール
    ac6b2480.png
  2. 法線設定ツール
    732d89fd.png
無駄に英語対応です。
しかし英語力が全く無いのでそこら中間違ってると予想されます。(ダメじゃん)
もし何処かおかしい所があればコメ欄等でご連絡いただけると幸いです。

ちなみに言語は環境をチェックして自動で切り替わるので特に設定する必要はありません。

インストール

  1. Mayaの自動読み込みフォルダに環境パスを通します。
    フォルダは、例えばMaya2013-x64日本語版なら
    "\Documents\maya\2013-x64\ja_JP\scripts"
    のような場所にあります。
    環境パスの通し方については各自調べてください。

  2. 本スクリプトをMaya自動読み込みフォルダへ移動します。

  3. フォルダ内にuserSetup.pyが無ければ、新規に作成します。
    userSetup.pyは空のテキストファイルです。

  4. フォルダ内にある、userSetup.pyに以下の一文を書き加えます。
    import TrM_PolyNormalPackage
    これで、Mayaを再起動すればスクリプトが自動的に読み込まれるようになります。

  5. Maya起動後、以下のPythonコマンドを実行することで起動することができます。

    1. 頂点平面化ツール
      TrM_PolyNormalPackage.MakePlanarMainWindow()
    2. 法線設定ツール
      TrM_PolyNormalPackage.PolyNormalMainWindow()
    このままだと毎度入力が面倒なので、コマンドを中クリックドラッグでシェルフに登録しておくと後々楽です。
スクリプトファイル内にも起動引数等の簡単な説明があります。

頂点平面化ツール 使い方

63157da8.png

選択した頂点、エッジ、フェース等から平面を定義することができます。
定義された平面は画面には表示されませんが、数値上で定義されたことが確認できます。

fabe1f3b.png

平面化したいコンポーネントを選択し・・・

d4645ea7.png

実行すると平面化されます。

平面定義の
「法線」は整列する平面の向き
「オフセット」は原点からの距離
「ベクトル」は頂点を整列する際の移動方向
を表しています。
移動方向も制御出来るので、機械系モデル等で、XYZ平面以外の角度で平面出ししたいときにも綺麗に整列することができます。

※注意点として、平面の定義の際、選択したコンポーネントが「頂点3つ」だった時のみ、使用されるアルゴリズムが違うため動作が異なります。
頂点3つのときは、その3つの頂点を通る平面が定義されるのに対し、それ以外のときは法線の平均が使用されることに注意してください。

法線設定ツール 使い方

dd18fa94.png

選択した頂点・エッジ・フェースから法線を取得。
(使用されるアルゴリズムは頂点平面化ツールと同じです)

48f36f6c.png

設定したいコンポーネントを選択し・・・

2b44263b.png

適用。
基本的には標準の法線設定ツールと同じ感じですが、一旦法線をグローバル空間に変換するため、異なるオブジェクト間でも見た目そのままに再設定することができます。

その他補助的に、法線ディスプレイを切り替える機能なども付けています。

こちらも機械系モデルで、所謂ぶっ刺しモデルの誤魔化しに使えると思います。
図の通り、根本の法線を、下のフェースの法線と一致させることにより、継ぎ目が見えなくなります。


大体こんな感じです。

今のところひとまずこれで完成としますが、何か要望や問題があれば修正を検討しますので、気軽にコメント等いただけると幸いです。