20141103久しぶりに更新かなりバグってました。
(さらに141104更新またバグってました。)
変数名がテキトウで、マージもしないし、レンダリングしたらフェース反転してる。
変更内容
VertexCenterボタンで選択した頂点で反転軸の位置を決める事ができます。
UVのセンターも一緒に取得します。
ボーダーエッジのみマージする機能追加
UVの反転機能も追加
UVもマージしてます。
マージした時に法線もソフトにしちゃいました。
SeparateMirrorが不安定で左右対称の移動回転をしたかった様子。
そんなに使わないので切りました。
そこでdetachSeparateという拾い物のMELを使わしてもらってます。
すいません。手を抜きました。Maya2015が届いているのに2013ばっかりいじっている。
こんな機能は実装されているだろうし
探せば同じ機能は沢山の方が作っているだろう。
まあ勉強です。
/* yjp_Mirror2.0
*
* NAME
*
*
* SYNOPSIS
* 指定する原点を境にミラーコピーさせる機能を2種類
* 1:オブジェクトの反転コピー
* 2:同メッシュの反転コピー
* 2007/12/16
* 2014/11/03
*
* INPUTS
* Nothing
*
* RETURNS
* Nothing
*
* detachSeparate
*/
global proc yjp_PartsMirror()
{
string $selobj[] = `ls -sl`;
print ($selobj[0] +"\n");
if(`size$selobj` == 0){return ;}
float $pivpos[];
string $rootnode[];
//親ノード取得
$rootnode = `listRelatives -p $selobj[0]`;
print ($rootnode[0] +"\n");
//トランスフォームのピボット情報取得
$pivpos = `xform -q -a -ws -piv $selobj[0]`;
yjp_PartsMirrorMesh;
detachSeparate;
string $dsobj[] = `ls -sl`;
//XYZの選択
if(`radioButtonGrp -q -sl yjpMirrorBox` == 1)
{
$pivpos[0] = $pivpos[0] * -1;
}
else if(`radioButtonGrp -q -sl yjpMirrorBox` == 2)
{
$pivpos[1] = $pivpos[1] * -1;
}
else if(`radioButtonGrp -q -sl yjpMirrorBox` == 3)
{
$pivpos[2] = $pivpos[2] * -1;
}
xform -ws -piv $pivpos[0] $pivpos[1] $pivpos[2] ;
DeleteHistory;
return ;
}
global proc yjp_PartsMirrorMesh()
{
string $selobj[] = `ls -sl`;
if(`size$selobj` == 0){return ;}
float $xyz[];
float $centerV[] = `floatFieldGrp -q -v yjp_MirrorwinCenterField`;
float $centerUV[] = `floatFieldGrp -q -v yjp_MirrorwinUVCenterField`;
int $Merge = `checkBoxGrp -q -value1 mergeCeck`;
int $mirrorUVu = `checkBoxGrp -q -value1 UVmirrorCeck`;
int $mirrorUVv = `checkBoxGrp -q -value2 UVmirrorCeck`;
if(`radioButtonGrp -q -sl yjpMirrorBox` == 1)
{
$xyz = {-1.0,1.0,1.0};
}
else if(`radioButtonGrp -q -sl yjpMirrorBox` == 2)
{
$xyz = {1.0,-1.0,1.0};
}
else if(`radioButtonGrp -q -sl yjpMirrorBox` == 3)
{
$xyz = {1.0,1.0,-1.0};
}
ConvertSelectionToFaces;
polyChipOff -ch 1 -kft 1 -dup 1 -off 0 -pvt $centerV[0] $centerV[1] $centerV[2] -s $xyz[0] $xyz[1] $xyz[2];
polyNormal -normalMode 0;
//select -r $selobj;
$selobj = `ls -sl`;
string $temp[];
tokenize $selobj[0] "." $temp;
if ($Merge == 1 )
{
select -r $temp[0];
polySelectConstraint -t 0x0001 -w 1 -bo 1 -m 3;
polyMergeVertex -d 0.01;
SoftPolyEdgeElements 1;
resetPolySelectConstraint;
}
select -r $selobj;
if (($mirrorUVu == 1) || ($mirrorUVv == 1))
{
PolySelectConvert 4;
$tempUV = `ls -sl`;
}
if ($mirrorUVu == 1 )
{
polyEditUV -pu $centerUV[0] -pv $centerUV[1] -su -1.0 -sv 1.0 ;
}
if ($mirrorUVv == 1 )
{
polyEditUV -pu $centerUV[0] -pv $centerUV[1] -su 1.0 -sv -1.0 ;
}
GrowPolygonSelectionRegion;
polyMergeUV -d 0.01;
select -r $temp[0];
DeleteHistory;
select -r $selobj;
return;
}
global proc yjp_MirrorCenter()
{
string $selobj[] = `ls -sl`;
if(`size$selobj` == 0){return ;}
float $vc[] = `xform -q -a -ws -t $selobj[0]`;
floatFieldGrp -e -value1 $vc[0] -value2 $vc[1] -value3 $vc[2] yjp_MirrorwinCenterField;
PolySelectConvert 4;
$selobj = `ls -sl`;
$vc = `polyEditUV -q $selobj[0]`;
floatFieldGrp -e -value1 $vc[0] -value2 $vc[1] yjp_MirrorwinUVCenterField;
}
global proc yjp_Mirror()
{
if(`window -q -ex yjp_Mirrorwin`)
{
deleteUI yjp_Mirrorwin ;
}
window -wh 210 200 -tb 1 -tlb 0 -t "yjpMirror2.0" yjp_Mirrorwin ;
columnLayout -w 130;
floatFieldGrp -numberOfFields 3
-label "center"
-pre 4
-cw4 40 50 50 50
-value1 0.000 -value2 0.000 -value3 0.000 yjp_MirrorwinCenterField;
floatFieldGrp -numberOfFields 2
-label "UVcenter"
-pre 4
-cw3 50 50 50
-value1 0.500 -value2 0.000 yjp_MirrorwinUVCenterField;
rowColumnLayout -nc 2 -cw 1 100 -cw 2 100 ;
button -w 100 -h 25 -l "VertexCenter" -c "yjp_MirrorCenter" ;
button -w 100 -h 25 -l "center 0"
-c "floatFieldGrp -e -value1 0 -value2 0 -value3 0 yjp_MirrorwinCenterField;floatFieldGrp -e -value1 0.5 -value2 0 yjp_MirrorwinUVCenterField" ;
setParent..;
radioButtonGrp -cw 1 40 -cw 2 40 -cw 3 40 -sl 1
-numberOfRadioButtons 3
-labelArray3 "X" "Y" "Z"
yjpMirrorBox;
checkBoxGrp -numberOfCheckBoxes 1 -cw2 60 50 -label "merge" -value1 true mergeCeck;
checkBoxGrp -numberOfCheckBoxes 2 -cw3 60 50 50
-label "UV mmirror"
-l1 U
-l2 V
-value1 0 -value2 0 UVmirrorCeck;
rowColumnLayout -nc 2 -cw 1 100 -cw 2 100;
button -w 100 -h 25 -l "FaceMirror" -c yjp_PartsMirrorMesh ;
button -w 100 -h 25 -l "SeparateMirror" -c yjp_PartsMirror ;
setParent..;
button -w 200 -h 25 -l "Close" -c ("deleteUI -window yjp_Mirrorwin") ;
setParent..;
showWindow yjp_Mirrorwin ;
window -e -wh 210 180 yjp_Mirrorwin ;
}
0 件のコメント:
コメントを投稿