外掛實在太多了,整理一下到目前為止用過覺得不錯的。
1. Advanced Skeleton
不用多做介紹了,就是一個骨架神器,沒用過不要說有學過MAYA。
之前寫的介紹文章連結在此。
超神骨架
2. Substance Live Link
基本上要處理從SP匯進來的貼圖一定少不了這個外掛,除非你想要自己手動把每張貼圖都連回材質球....
有興趣點這裡
3. Interactive Bool Tool
這時一個可以即時預覽布林的script,只要把程式碼複製貼上到script Editor就能用了。
效果大概是這樣。
底下是程式碼
$window = `window -title "Interactive Bool Tool" -s off -widthHeight 320 95 -tb on -mnb off -mxb off
-tlc 185 310`;
//moditfy the values for flag -tlc to change where the window is located
//window setup
formLayout -numberOfDivisions 55 myForm;
string $command = ("deleteUI " + $window);
iconTextButton -h 55 -w 100 -style "iconAndTextVertical" -i1 "polyBooleansDifference.png" -label "Difference" -bgc .3 .3 .3 -command "DiffComm" myBtn1;
iconTextButton -h 55 -w 100 -style "iconAndTextVertical" -i1 "polyBooleansIntersection.png" -label "Intersection" -bgc .3 .3 .3 -command "InterComm" myBtn2;
iconTextButton -h 55 -w 100 -style "iconAndTextVertical" -i1 "polyBooleansUnion.png" -label "Union" -command "UnioComm" -bgc .3 .3 .3 myBtn3;
iconTextButton -h 25 -w 155 -style "iconAndTextHorizontal" -i1 "WireFrame.png"-label "Toggle Visibility" -bgc .3 .3 .3 -command "VisTogCom" myBtn4;
iconTextButton -h 25 -w 150 -style "iconAndTextHorizontal" -i1 "polyQuad.png" -label "Quadify" -bgc .3 .3 .3 -command "TriQuad" myBtn5;
formLayout -edit
-attachForm myBtn1 "top" 5
-attachForm myBtn1 "left" 5
-attachForm myBtn2 "top" 5
-attachForm myBtn2 "left" 110
-attachForm myBtn3 "top" 5
-attachForm myBtn3 "left" 215
-attachForm myBtn4 "top" 65
-attachForm myBtn4 "left" 160
-attachForm myBtn5 "top" 65
-attachForm myBtn5 "left" 5
myForm;
showWindow;
//difference procedure
proc DiffComm () {
string $selection[] = `ls -os`;
//calculate size of selection for loop operation below
int $selectionsize = `size($selection)`;
//boolean operation
polyCBoolOp -op 2 -ch 1 -preserveColor 0 -classification 1 -name $selection[0];
//loop that goes through the objects used to cut into geometry and change
//attributes so they are visible
for($L = 1; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
//these are the attributes which reveal the geometry
setAttr ($getshape[1]+".visibility") 1;
setAttr ($getshape[2]+".intermediateObject") 0;
//these settings make the object a wireframe
setAttr ($getshape[2]+".overrideEnabled") 1;
setAttr ($getshape[2]+".overrideShading") 0;
//this setting removes the boolean objects from rendering in the scene
setAttr ($getshape[2]+".primaryVisibility") 0;
//this sets the color index value of the wireframe, change the colours here if you want
setAttr ($getshape[2]+".overrideColor") 21;
}
}
//intersection procedure
proc InterComm () {
string $selection[] = `ls -os`;
int $selectionsize = `size($selection)`;
polyCBoolOp -op 3 -ch 1 -preserveColor 0 -classification 1 -name $selection[0];
//loop similar to the difference protocol although all objects will be effected
for($L = 0; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
setAttr ($getshape[1]+".visibility") 1;
setAttr ($getshape[2]+".intermediateObject") 0;
setAttr ($getshape[2]+".overrideEnabled") 1;
setAttr ($getshape[2]+".overrideShading") 0;
setAttr ($getshape[2]+".primaryVisibility") 0;
setAttr ($getshape[2]+".overrideColor") 18;
}
}
//union
proc UnioComm () {
string $selection[] = `ls -os`;
int $selectionsize = `size($selection)`;
polyCBoolOp -op 1 -ch 1 -preserveColor 0 -classification 1 -name $selection[0];
for($L = 0; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
setAttr ($getshape[1]+".visibility") 1;
setAttr ($getshape[2]+".intermediateObject") 0;
setAttr ($getshape[2]+".overrideEnabled") 1;
setAttr ($getshape[2]+".overrideShading") 0;
setAttr ($getshape[2]+".primaryVisibility") 0;
setAttr ($getshape[2]+".overrideColor") 16;
}
}
//toggle visibility
proc VisTogCom () {
string $selection[] = `ls -os`;
int $selectionsize = `size($selection)`;
string $listofobjectsinscene[] =`ls -g`;
int $selectionsize2 = `size($listofobjectsinscene)`;
//an if statement for if nothing is selected to make all visible
if ($selection[0]==""){
for($Lo = 0; $Lo < $selectionsize2; $Lo++) {
setAttr ($listofobjectsinscene[$Lo]+".visibility") 1;
}
}
//a loop to toggle visibility for selected
for($L = 0; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
int $checkforvis = `getAttr ($getshape[1]+".visibility")`;
if ($checkforvis==1){
setAttr ($getshape[1]+".visibility") 0;
}
if ($checkforvis==0){
setAttr ($getshape[1]+".visibility") 1;
}
}
}
proc TriQuad () {
//a procedure that checks if there are ngons and will try to turn them into quads otherwise will turn the whole mesh into quads
string $reselect[] =`ls -sl`;
string $ngonq[] = `polyCleanupArgList 3 { "0","2","0","0","1","0","0","0","0","1e-005","0","1e-005","0","1e-005","0","1","1" }`;
int $selectionsize = `size($ngonq)`;
if ($selectionsize==0){
select -r $reselect[0] ;
}
polyTriangulate -ch 1;
polyQuad -a 30 -kgb 1 -ktb 1 -khe 1 -ws 1 -ch 1;
select -r $reselect[0] ;
}
4. Cosmos
無意間發現的小外掛,基本上是一個集合體,幫你把所有外掛跟內鍵指令都整合在一起,還滿好用的,因為最近發現tool bar都快塞滿各種外掛了。
重點是還是免費的!!!
附上網址
http://cosmos.toolsfrom.space/
安裝後在MAYA 裡面按 ctrl+TAB就能打開了
5. Copy UV
其實應該是很簡單的東西但不知道為什麼MAYA沒有內建這個功能,基本上就是複製貼上UV這樣。
這是某個神人寫的程式碼,只要貼在script Editor做成按鈕就能用了,先選UV好的再選沒UV的。
{
string $allObj[] =`ls -sl`;
string $source[];
$source[0] = $allObj[0];
string $target[] = stringArrayRemove($source,$allObj);
for($each in $target)
{
if(`polyCompare -fd $each $source[0]`==4 || `polyCompare -fd $each $source[0]`==12)
{
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $each;
polyTransfer -v 0 -vc 0 -uv 1 -ao $source[0] $each;
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $each;
}
else if(`polyCompare -fd $each $source[0]`==0 || `polyCompare -fd $each $source[0]`==8)
{
polyTransfer -v 0 -vc 0 -uv 1 -ao $source[0] $each;
}
}
}
1. Advanced Skeleton
不用多做介紹了,就是一個骨架神器,沒用過不要說有學過MAYA。
之前寫的介紹文章連結在此。
超神骨架
2. Substance Live Link
基本上要處理從SP匯進來的貼圖一定少不了這個外掛,除非你想要自己手動把每張貼圖都連回材質球....
有興趣點這裡
3. Interactive Bool Tool
這時一個可以即時預覽布林的script,只要把程式碼複製貼上到script Editor就能用了。
效果大概是這樣。
底下是程式碼
$window = `window -title "Interactive Bool Tool" -s off -widthHeight 320 95 -tb on -mnb off -mxb off
-tlc 185 310`;
//moditfy the values for flag -tlc to change where the window is located
//window setup
formLayout -numberOfDivisions 55 myForm;
string $command = ("deleteUI " + $window);
iconTextButton -h 55 -w 100 -style "iconAndTextVertical" -i1 "polyBooleansDifference.png" -label "Difference" -bgc .3 .3 .3 -command "DiffComm" myBtn1;
iconTextButton -h 55 -w 100 -style "iconAndTextVertical" -i1 "polyBooleansIntersection.png" -label "Intersection" -bgc .3 .3 .3 -command "InterComm" myBtn2;
iconTextButton -h 55 -w 100 -style "iconAndTextVertical" -i1 "polyBooleansUnion.png" -label "Union" -command "UnioComm" -bgc .3 .3 .3 myBtn3;
iconTextButton -h 25 -w 155 -style "iconAndTextHorizontal" -i1 "WireFrame.png"-label "Toggle Visibility" -bgc .3 .3 .3 -command "VisTogCom" myBtn4;
iconTextButton -h 25 -w 150 -style "iconAndTextHorizontal" -i1 "polyQuad.png" -label "Quadify" -bgc .3 .3 .3 -command "TriQuad" myBtn5;
formLayout -edit
-attachForm myBtn1 "top" 5
-attachForm myBtn1 "left" 5
-attachForm myBtn2 "top" 5
-attachForm myBtn2 "left" 110
-attachForm myBtn3 "top" 5
-attachForm myBtn3 "left" 215
-attachForm myBtn4 "top" 65
-attachForm myBtn4 "left" 160
-attachForm myBtn5 "top" 65
-attachForm myBtn5 "left" 5
myForm;
showWindow;
//difference procedure
proc DiffComm () {
string $selection[] = `ls -os`;
//calculate size of selection for loop operation below
int $selectionsize = `size($selection)`;
//boolean operation
polyCBoolOp -op 2 -ch 1 -preserveColor 0 -classification 1 -name $selection[0];
//loop that goes through the objects used to cut into geometry and change
//attributes so they are visible
for($L = 1; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
//these are the attributes which reveal the geometry
setAttr ($getshape[1]+".visibility") 1;
setAttr ($getshape[2]+".intermediateObject") 0;
//these settings make the object a wireframe
setAttr ($getshape[2]+".overrideEnabled") 1;
setAttr ($getshape[2]+".overrideShading") 0;
//this setting removes the boolean objects from rendering in the scene
setAttr ($getshape[2]+".primaryVisibility") 0;
//this sets the color index value of the wireframe, change the colours here if you want
setAttr ($getshape[2]+".overrideColor") 21;
}
}
//intersection procedure
proc InterComm () {
string $selection[] = `ls -os`;
int $selectionsize = `size($selection)`;
polyCBoolOp -op 3 -ch 1 -preserveColor 0 -classification 1 -name $selection[0];
//loop similar to the difference protocol although all objects will be effected
for($L = 0; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
setAttr ($getshape[1]+".visibility") 1;
setAttr ($getshape[2]+".intermediateObject") 0;
setAttr ($getshape[2]+".overrideEnabled") 1;
setAttr ($getshape[2]+".overrideShading") 0;
setAttr ($getshape[2]+".primaryVisibility") 0;
setAttr ($getshape[2]+".overrideColor") 18;
}
}
//union
proc UnioComm () {
string $selection[] = `ls -os`;
int $selectionsize = `size($selection)`;
polyCBoolOp -op 1 -ch 1 -preserveColor 0 -classification 1 -name $selection[0];
for($L = 0; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
setAttr ($getshape[1]+".visibility") 1;
setAttr ($getshape[2]+".intermediateObject") 0;
setAttr ($getshape[2]+".overrideEnabled") 1;
setAttr ($getshape[2]+".overrideShading") 0;
setAttr ($getshape[2]+".primaryVisibility") 0;
setAttr ($getshape[2]+".overrideColor") 16;
}
}
//toggle visibility
proc VisTogCom () {
string $selection[] = `ls -os`;
int $selectionsize = `size($selection)`;
string $listofobjectsinscene[] =`ls -g`;
int $selectionsize2 = `size($listofobjectsinscene)`;
//an if statement for if nothing is selected to make all visible
if ($selection[0]==""){
for($Lo = 0; $Lo < $selectionsize2; $Lo++) {
setAttr ($listofobjectsinscene[$Lo]+".visibility") 1;
}
}
//a loop to toggle visibility for selected
for($L = 0; $L < $selectionsize; $L++) {
string $getshape[] = `ls -dag $selection[$L]`;
int $checkforvis = `getAttr ($getshape[1]+".visibility")`;
if ($checkforvis==1){
setAttr ($getshape[1]+".visibility") 0;
}
if ($checkforvis==0){
setAttr ($getshape[1]+".visibility") 1;
}
}
}
proc TriQuad () {
//a procedure that checks if there are ngons and will try to turn them into quads otherwise will turn the whole mesh into quads
string $reselect[] =`ls -sl`;
string $ngonq[] = `polyCleanupArgList 3 { "0","2","0","0","1","0","0","0","0","1e-005","0","1e-005","0","1e-005","0","1","1" }`;
int $selectionsize = `size($ngonq)`;
if ($selectionsize==0){
select -r $reselect[0] ;
}
polyTriangulate -ch 1;
polyQuad -a 30 -kgb 1 -ktb 1 -khe 1 -ws 1 -ch 1;
select -r $reselect[0] ;
}
4. Cosmos
無意間發現的小外掛,基本上是一個集合體,幫你把所有外掛跟內鍵指令都整合在一起,還滿好用的,因為最近發現tool bar都快塞滿各種外掛了。
重點是還是免費的!!!
附上網址
http://cosmos.toolsfrom.space/
安裝後在MAYA 裡面按 ctrl+TAB就能打開了
5. Copy UV
其實應該是很簡單的東西但不知道為什麼MAYA沒有內建這個功能,基本上就是複製貼上UV這樣。
這是某個神人寫的程式碼,只要貼在script Editor做成按鈕就能用了,先選UV好的再選沒UV的。
{
string $allObj[] =`ls -sl`;
string $source[];
$source[0] = $allObj[0];
string $target[] = stringArrayRemove($source,$allObj);
for($each in $target)
{
if(`polyCompare -fd $each $source[0]`==4 || `polyCompare -fd $each $source[0]`==12)
{
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $each;
polyTransfer -v 0 -vc 0 -uv 1 -ao $source[0] $each;
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $each;
}
else if(`polyCompare -fd $each $source[0]`==0 || `polyCompare -fd $each $source[0]`==8)
{
polyTransfer -v 0 -vc 0 -uv 1 -ao $source[0] $each;
}
}
}
0 留言