這小工具尤其適用於臉部表情rig製作。當你想把幾個Joint布置在嘴部或眼部的上下方,就可以用它來快速把 Joint 產生出來。
使用方法 :
- 先選一個或多個點/線,然後執行以下的程式。選點的話,Joint會產生在點的位子上。選線的話,Joint會產生在線的中間位子。
{
$verts=`filterExpand -ex 1 -sm 31`;
$edges = `filterExpand -ex 1 -sm 32`;
for($vtx in $verts)
{
select -cl;
$pos = `pointPosition -w $vtx`;
$newJoint = `joint -p $pos[0] $pos[1] $pos[2]`;
}
for($edge in $edges)
{
select -cl;
string $toVtx[]=`polyListComponentConversion -fe -tv $edge`;
$toVtx = `ls -fl $toVtx`;
$p0 = `pointPosition -w $toVtx[0]`;
$p1 = `pointPosition -w $toVtx[1]`;
float $center[];
$center[0] = ($p0[0]+$p1[0])/2;
$center[1] = ($p0[1]+$p1[1])/2;
$center[2] = ($p0[2]+$p1[2])/2;
$newJoint = `joint -p $center[0] $center[1] $center[2]`;
}
}
我是初學,有些看不明白。
回覆刪除string $toVtx[]=`polyListComponentConversion -fe -tv $edge`;
// 上面是把 edge convert 做點,這個理解。
$toVtx = `ls -fl $toVtx`;
// 但這個就不明白了。
// 上面已把 $toVtx 定義為`polyListComponentConversion -fe -tv $edge`;
// 但馬上又 $toVtx = `ls -fl $toVtx`;
豈不是雙重了嗎?
因為 polyListComponentConversion -fe -tv $edge 可能會回傳類似 pCube.vtx[3:4] 這種東西, 接下來的 pointPosition 就會錯了. 因此先把有可能的 pCube.vtx[3:4] 利用 ls -fl 轉為 pCube.vtx[3],pCube.vtx[4] 再做下一步.
回覆刪除