Pythonを基礎から勉強してみる!!_010
id
『id』はオブジェクトの識別値を返す。
値が同じ場合は、同じ『id』になる。
v1 = 10;
v2 = 10;
print ('v1 id',id(v1));
print ('v2 id',id(v2));
>>>
('v1 id', 427880128L)
('v2 id', 427880128L)
v1 = 10;
v2 = 5;
print ('v1 id',id(v1));
print ('v2 id',id(v2));
>>>
('v1 id', 427880128L)
('v2 id', 427880248L)
v1 = 3 + 7;
v2 = 5 + 5;
print ('v1 id',id(v1));
print ('v2 id',id(v2));
>>>
('v1 id', 427880128L)
('v2 id', 427880128L)
del
オブジェクトを削除する
v1 = 10;
print v1;
del(v1);
v2 = v1;
print v2;
>>>
10
# Error: NameError: file <maya console> line 4: name 'v1' is not defined #
Pythonを基礎から勉強してみる!!_009
Pythonのキーワード一覧
import keyword;
for kw in keyword.kwlist :
print (kw);
で全てのキーワードが表示される。
and
aとbが共にtrueの場合にtrue
a and b
as
aをbとする
a as b
assert
aが期待通りのbかを確める
a = b
assert a == c
break
最も内側の[while],[for]などのループを抜ける
for a in b :
if a == 5 :
break
print a
class
クラスを作成
continue
最も内側のwhile,forなどのループ処理を繰り返す
for a in range(10) :
if a == 5 :
continue
print a
def
関数を作成
del
オブジェクトを削除
a = 1 ;
del a ;
elif
if式がfalseの場合にelif式を実行、if式,elif式がfalseの場合にはeles式を実行
if a > 5 :
print "BIG"
elif a ==5 :
print "EQUAL"
else :
print "SMALL"
else
ifの式がfalseの場合にelse以下の式を実行
if a > 5 :
print "BIG"
else :
print "SMALL"
whileのループ終了後にelse式を実行
n = 0
while n < 5 :
print n
n += 1
else :
print "END"
forのループ終了後にeles式を実行
for a in b :
print a
else :
print "END"
例外を扱う
except
exec
引数の文字列をpythonスクリプトとして実行
finally
例外を扱う
for
繰り返し実行する
for a in b
print b
from
global
グローバル変数
if
式がtrueの場合、以下の式を実行
if a > 5 :
print "BIG"
import
パッケージの中からモジュール、識別子をインポートする
in
is
lambda
名前のない小さな関数を定義
関数の引数に指定することができる
not
aがtrueのときにfalse、falseのときにtrue
not a
or
aかbの少なくとも1つがtrueの場合にtrue
a or b
pass
空の関数、クラスを作る
def myfun() :
pass
class mycla() :
pass
print
出力する
raise
例外を扱う
return
try
例外を扱う
while
while式を満たす間は実行
n = 0
while n < 5 :
print n
n += 1
with
yield
イテレータを返すジェネレータを定義する
まずは使ってみないと、どう使って良いのか分からないなぁ
SubstanceDesignerでタイルを作ってみた!!
久々にSDをさわりました!!
めっちゃ動作が重くなっていたw
タイムラグ多発でストレスが半端ないので、しばらくさわらないようにします。
次回のアップグレードに期待します。
全ての模様をSD内部で作りました。
作り方は簡単で『シェイプ』と『ブレンド』を駆使して模様を作り、『Splatter』で円形配置して完成。
作業環境とうの関係で作業時間が3~4時間かかりました。
Ai使えば1時間くらいで完成しそうな模様ですね。。。
しばらくはPythonに集中します!!
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')
maya Python メモ
ポリゴンを三角形化する
import maya.cmds as mc ;
mc.polyTriangulate();
ポリゴンを選択する
import maya.cmds as mc ;
mc.polySelectConstraint(t=0x008,m=3,sz=1);
sz=1・・・三角形
sz=2・・・四角形
sz=3・・・多角形
シェーダーを作成する
mc.shadingNode('lambert',n='Tri',asShader=True);
mc.setAttr('Tri.color',0.0,1.0,0.0,type='double3');
一行目でLambertシェーダーを作成
二行目で色を指定
シェーダーを割り当てる
mc.hyperShade(a='Nsided')
mc.sets(e=True,fe='NsidedSG')
一行目で割り当てたいシェーダーを選択
二行目で割り当てる
頂点にボックスを配置するスクリプトを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)
勉強中ですので、修正した方が良い箇所などございましたら、コメントいただけると助かります。
あと、出来れば赤ライン上にあるボックスのように、その他のボックスも回転を揃えたいのですが、現状のスクリプトでは上手くいっておりません。。。(法線情報でいけると思ったんだけどな。。。)
こっちの解決策も教えていただけると助かります。