maya Pythonに関しての質問です
選択した頂点の法線情報をpythonを使って取得したいのですが、どのようにしたら出来ますか?
maya Python メモ (エッジスムージング強度)
エッジにスムージング強度を設定する
import maya.cmds as mc;
mc.polyCrease(v=1.0);
v・・・エッジに影響
vv・・・頂点に影響
rv・・・頂点、エッジ双方に影響
maya Python メモ
エッジを基準に頂点をマージする
import maya.cmds as mc;
mc.polyCollapseEdge(ch=True);
頂点を選択した場合
エッジを選択した場合
フェイスを選択した場合
フェイスを基準に頂点をマージする
import maya.cmds as mc;
mc.polyCollapseFacet(ch=True);
頂点を選択した場合
エッジを選択した場合
フェイスを選択した場合
maya Pythonを使って頂点を選択する
任意の頂点を選択
import maya.cmds as mc;
mc.select('オブジェクト名.vtx[頂点番号]')
ランダムに30個選択
import maya.cmds as mc;
import random;
vtxNum = mc.polyEvaluate(v=True);
vtxList = range(0,vtxNum);
vtxRanNum = random.sample(vtxList,30);
vtxRanStr = map(str,vtxRanNum);
for a in vtxRanStr:
A1 = 'pSphere1.vtx[000]'
A2 = A1.replace("000",a)
mc.select(A2,add=True);
maya Pythonを使ってフェイスを選択する
import maya.cmds as mc;
mc.select('オブジェクト名.f[フェイス番号]');
maya Pythonを使ってエッジを選択する
polySelect
edgeBorder (eb)
境界になってるエッジを選択する。
※境界になっているエッジを指定しなくてはならい
引数型 unit
import maya.cmds as mc;
mc.polySelect('オブジェクト名',eb=エッジ番号);
edgeBorderPath (ebp)
境界エッジの間を選択する
※始点エッジと終点エッジを指定しなくてはならない
引数型 [int,int]
import maya.cmds as mc;
mc.polySelect('オブジェクト名',ebp=(始点エッジ番号,終点エッジ番号));
edgeBorderPattern (bpt)
境界エッジを等間隔で選択する
エッジを2本選択しなくいてはならない
import maya.cmds as mc;
mc.polySelect('オブジェクト名',bpt=(エッジ番号(1),終点エッジ番号(2)));
edgeRing (er)
エッジをリング選択する
import maya.cmds as mc ;
mc.polySelect('オブジェクト名',er=エッジ番号);
edgeRingPath (erp)
エッジ間を最短距離でリング選択する
※始点エッジと終点エッジを指定しなくてはならない
import maya.cmds as mc;
mc.polySelect('オブジェクト名',erp=(始点エッジ番号,終点エッジ番号));
edgeRingPattern (rpt)
エッジを等間隔でリング選択する
エッジを2本選択しなくいてはならない
import maya.cmds as mc;
mc.polySelect('オブジェクト名',rpt=(エッジ番号(1),エッジ番号(2)));
edgeLoop (el);
エッジをループ選択する
import maya.cmds as mc;
mc.polySelect('オブジェクト名',el=エッジ番号);
edgeLoopPath (elp)
エッジ間を最短距離でループ選択する
※始点エッジと終点エッジを指定しなくてはならない
import maya.cmds as mc;
mc.polySelect('オブジェクト名',elp=(始点エッジ番号,終点エッジ番号));
edgeLoopPattern (lpt)
エッジを等間隔でループ選択する
エッジを2本選択しなくいてはならない
import maya.cmds as mc;
mc.polySelect('オブジェクト名',lpt=(エッジ番号(1),エッジ番号(2)));
edgeLoopOrBorder (elb)
エッジが境界上に関係なくループ選択する
import maya.cmds as mc;
mc.polySelect('オブジェクト名',elb=エッジ番号);
edgeLoopOrBorderPattern (lbp)
エッジが境界上に関係なく等間隔でループ選択する
※始点エッジと終点エッジを指定しなくてはならない
import maya.cmds as mc;
mc.polySelect('オブジェクト名',lbp=(始点エッジ番号,終点エッジ番号));
shortestEdgePath (sep)
頂点間のエッジを最短距離で選択する
import maya.cmds as mc;
mc.polySelect('オブジェクト名',sep=(始点頂点番号,終点頂点番号));
選択頂点の位置を取得
オブジェクトの頂点にボックスを配置したい!!
どうしたら出来るんだろう?
1)頂点を選択
2)頂点の位置情報取得
3)ボックスを頂点数分作成
4)それぞれのボックスを配置
頂点を選択
選択頂点の位置を取得
xfotm
# WorldSpace
WSvtxPos = cmds.xform(q=True , ws=True , t=True);
print WSvtxPos;
#ObjectSpace
OSvtxPos = cmds.xform(q=True , os=True , t=True);
print OSvtxPos;
このままだと頂点を複数選択していた場合、一つのリストとして取り扱われてしまうので、(x,y,z)に分けていく必要がある
zip(*[iter(S)]*n)
S・・・分割したいリスト
n・・・n個ずつ分割
# WorldSpace
WSvtxPos = cmds.xform(q=True , ws=True , t=True);
list = zip(*[iter(WSvtxPos)]*3);
print list;
リスト内の要素数を調べる
len
# WorldSpace
WSvtxPos = cmds.xform(q=True , ws=True , t=True);
list = zip(*[iter(WSvtxPos)]*3);
print list;
print len(list);