今回は、フェースをミラーコピーするスクリプトの紹介です。
こちらのスクリプトの特徴は、オブジェクト単位ではなく、
選択したフェースを同じオブジェクト内でミラーコピーすること。
オブジェクトを分けなくても任意のメッシュをミラーコピーできるので、
一部が左右非対称になってしまったときやメッシュのパーツ分けが面倒な時に便利かも?
ウィンドウは下の画像のような簡素なもの。
ここでミラーコピーしたい軸を選んで…
対応するボタンを押すと選択中のフェースをコピーできます。
ヒストリに二つほど履歴が溜まるのがたまにキズですが、
こまめに削除する癖のある人なら大丈夫なはず…!
利用したい!という人は、自己責任のもと下記スクリプトを
"MirrorPolygon.mel"の名前でscriptsフォルダに保存していただければと!
command
global proc MirrorPolygon()
{
if ( (`window -ex MirrorPolygon`) == true ) deleteUI MirrorPolygon;
window -title "PolyMirror" MirrorPolygon;
scrollLayout;
columnLayout -w 120 -adj true;
button -l "X" -c "MirrorPolygon_X";
button -l "Y" -c "MirrorPolygon_Y";
button -l "Z" -c "MirrorPolygon_Z";
setParent..;
showWindow;
}
global proc MirrorPolygon_X()
{
string $obj[] = `ls -selection`;
string $oType[] = `ls -selection -showType`;
if($oType[1] == "float3")
{
polyChipOff -keepFacesTogether 1 -duplicate 1 -scaleX -1 -pivotX 0 $obj;
string $dupPoly[] = `ls -selection`;
polyNormal -normalMode 4 $dupPoly;
}
}
global proc MirrorPolygon_Y()
{
string $obj[] = `ls -selection`;
string $oType[] = `ls -selection -showType`;
if($oType[1] == "float3")
{
polyChipOff -keepFacesTogether 1 -duplicate 1 -scaleY -1 -pivotY 0 $obj;
string $dupPoly[] = `ls -selection`;
polyNormal -normalMode 4 $dupPoly;
}
}
global proc MirrorPolygon_Z()
{
string $obj[] = `ls -selection`;
string $oType[] = `ls -selection -showType`;
if($oType[1] == "float3")
{
polyChipOff -keepFacesTogether 1 -duplicate 1 -scaleZ -1 -pivotZ 0 $obj;
string $dupPoly[] = `ls -selection`;
polyNormal -normalMode 4 $dupPoly;
}
}