5/13/2016

Houdini15.5
http://www.sidefx.com/news/sidefx-releases-houdini-155/

_________________________________________

Mirror Weight Map
http://blogs.yahoo.co.jp/max3dc/55903821.html
WeightMapのX=0基準のYZ平面で鏡面コピーを行うスクリプトです。フリー公開します。

頂点数が多くなると起動や実行速度に負荷がかかり処理時間が長くなります。
この負荷を低減する為には、以下の要点を押さえてさい。
実行前にターゲット先にマップが存在しており、且つそのマップが不要であるならば、事前にそのターゲットマップを消去(Map > ClearMap 又は Delete Map)しておいてください。ターゲット先に新規マップを作成する場合であれば、事前にマップ消去を考慮する必要はありません。
次にソースとなるマップの頂点選択を行います。ソースマップ範囲を大雑把にラッソで囲んで選択しても構いませんが、最適の選択は、モデラーのSelect by Mapでソースマップ頂点だけを選択しておきます。この状態で、Mirror Weight Mapを起動すればパネルを最短時間で起動出来き、続けてPre-Clearボタンを無効にして実行することで処理時間の短縮が行えます。


Mirror Wight Mapの補足説明:

右図がソースとなるマップで、左図がターゲットとなるマップの一例です。
ここで注目する点は、事前にターゲットにマップ(図例では100%)が存在していること。又、ソース側にNoMapと0%頂点があることに注意して下さい。図に示されたNoMapはマップが存在しない頂点(NoMap)を示し、0%表記の頂点はウェイト値0%の頂点を表します。NoMapと0%のこれら頂点はウェイトビューのシェーディング表示(見た目)では区別が付きませんが、当スクリプトのPre-Clear of the Target MapボタンのON/OFFによる処理結果には違いが発生します。



先程のソースマップをPre-Clear of the Target Map(以下Pre-Clear)ボタンをONで実行すると、ターゲット側へは図のような鏡面ウェイト値がアサインされます。この結果はソース側のマップを鏡面コピーした結果と同じなので何も気にする必要はありませんが、Pre-ClearボタンONによる内部処理的には以下の手順を踏んでいると理解下さい。
ターゲット側のマップ消去(Pre-Clear)してから→ソースマップ値をターゲット側へ鏡面コピー


一方、Pre-Clearボタンを無効にして実行すると、ソース側のNoMap頂点に対応するターゲット側の頂点ではターゲットにある元の値(図例では100%)がそのまま残ることになります。ソース側の0%頂点ではターゲット側頂点に0%が割り当てられます。つまり、マップが存在しない頂点(NoMap)は=割り当てるべき値が存在しない頂点なので、その頂点では鏡面コピーが行われることは無く、0%頂点では0%のウェイト値(数値0%)が存在する為、0%の値(数値)をターゲット側へ鏡面コピーします。 

_______________________________________

次は、X方向の非対称頂点に対するウェイト鏡面コピー方法を説明します。

まず、モデラーの対称編集モードを有効にして図のように+X(或いは-X)側を全て選択します。
仮に非対称頂点が存在すれば、図のように非対称の頂点だけが選択されていない状態となります。通常、この非対称頂点ではMirror Weight MapのSymmetry Toleranceの値を幾ら上げてもウェイトの鏡面コピーは出来ません。
この非対称頂点でウェイトの鏡面コピーを実現させる為には以下の手順が必要です。


一旦選択を全て解除し、モデラーのオプションパネル(oキー)を開き、パネル内のSymmetry Toleranceの値を上げて(図例では1μm→1mmに上げています)、再度、+X側(或るいは-X側)だけを選択して、図のように非対称頂点が選択されてる状態になれば、次のステップとなります。
(値の設定値には注意下さい。隣接頂点に影響を及ぼす値だと、適切な処理が行えなくなります)。


 最後のステップとして、先程モデラーで設定したSymmetry Toleranceの値をMirror Weight MapのSymmetry Toleranceの欄に入力して実行すれば、図のように非対称頂点に対するウェイトの鏡面コピーが可能になります。

0 件のコメント:

コメントを投稿