選択セットを作って効率を上げよう!!
作業のたびに選択するのは、一つ二つくらいなら手間ではないが、10,20と増えてくるとそれだけで手間になる、しかも選択を間違える可能性もある。
そんな時、使えるのが選択セット
一度設定すれば、次回からの設定が劇的に早くなる!!しかもミスを減らせる。
設定は簡単で
Create > Sets > Quick Select Set
編集は
Windows > Relationship Editors > Sets
Pythonでこの作業をもっと簡単にできるようにしたいんだけど、
Setsを作ることは出来るんだけど、編集をどうやった出来るかが分からない。。。
Windowを作ってアクセスするだけでいいんだけどな~
プログラミングを教わったことがないから、自主勉強がうまく捗らないorz
もっと効率よく勉強して、もっと成長したいよ~~~
maya Pythonを使ってシェーダーを割り当てる
pythonを使用して
三角ポリゴン、多角形ポリゴンを色分けしようと思いスクリプトを書いてみました。
三角ポリゴンが黄色、多角形が青色です。
import maya.cmds as mc;
material_Tri = mc.shadingNode('lambert',n='Tri',asShader=True);
mc.setAttr('Tri.color',1.0,1.0,0.0,type='double3');
material_Qua = mc.shadingNode('lambert',n='Qua',asShader=True);
mc.setAttr('Qua.color',0.2,0.2,0.2,type='double3');
material_Nsided = mc.shadingNode('lambert',n='Nsided',asShader=True);
mc.setAttr('Nsided.color',0.0,0.0,1.0,type='double3');
if mc.window("PolyFinderWindow",exists=True):
mc.deleteUI("PolyFinderWindow")
Create_Window = mc.window("PolyFinderWindow",t="PolyFinder",w=30,h=50,s=True,mnb=True,mxb=True);
mc.columnLayout(adj=True);
mc.button(l="Tri",c="SetTri()");
mc.separator(h=10);
mc.button(l="Nsided",c="SetNsided()");
mc.separator(h=10);
mc.button(l="Clear",c="SetClear()")
mc.showWindow(Create_Window);
def SetTri():
mc.polySelectConstraint(t=0x008,m=3,sz=1)
mc.hyperShade(a='Tri')
mc.sets(e=True,fe='Tri.SG')
def SetNsided():
mc.polySelectConstraint(t=0x008,m=3,sz=3)
mc.hyperShade(a='Nsided')
mc.sets(e=True,fe='Nsided.SG')
def SetClear():
mc.hyperShade(a='Qua')
mc.sets(e=True,fe='Qua.SG')
頂点にボックスを配置するスクリプトをpythonで書いてみた!!
頂点に配置するスクリプトです。
import maya.cmds as mc;
import random;
mc.polySphere(r=3,sx=16,sy=16);
vtxNum = mc.polyEvaluate(v=True);
vtxList = range(0,vtxNum);
vtxRanNum = random.sample(vtxList,vtxNum);
vtxRanStr = map(str,vtxRanNum);
for a in vtxRanStr:
A1 = 'pSphere1.vtx[000]'
A2 = A1.replace("000",a)
for b in A2:
ver = mc.select(A2)
tvf = mc.polyListComponentConversion(ver,fv=True,tvf=True)
mc.filterExpand(tvf,sm=70,ex=True)
normal = mc.polyNormalPerVertex(q=True,xyz=1)
position = mc.xform(q=True,ws=True,t=True)
box = mc.polyCube(ax=[normal[0],normal[1],normal[2]],w=0.1,h=0.1,d=0.1)
mc.move(position[0],position[1],position[2],box)
mc.rotate(normal[0],normal[1],normal[2],box,ws=True)
勉強中ですので、修正した方が良い箇所などございましたら、コメントいただけると助かります。
あと、出来れば赤ライン上にあるボックスのように、その他のボックスも回転を揃えたいのですが、現状のスクリプトでは上手くいっておりません。。。(法線情報でいけると思ったんだけどな。。。)
こっちの解決策も教えていただけると助かります。