CGらぼ

広く浅くCGを勉強していきます。

選択頂点の位置を取得

オブジェクトの頂点にボックスを配置したい!!

どうしたら出来るんだろう?

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);

 

SubstancePainterで地面を作ってみた!!

f:id:foreverLab:20151004135912j:plain

SubstancePainter面白い!!

3Dビューで描く事もできるし2Dビューで描く事もできる。

個人的には使いいやすいツール

でもSPを使った後にmodoをさわるとビューの操作が違うから、しばらくの間上手くビューを操作できなくなるのがネックかな。。。

 

バットマン(デフォルメ)をモデリングしてみた!!

久々にモデリングしました。

テクスチャ作成でSubstance Painter使ってみたんですけっど、これいいですね!!

テクスチャを描くのが楽しくなる。

 

下絵を描いて

f:id:foreverLab:20151003074937j:plain

モデリング

f:id:foreverLab:20151003133201j:plain

f:id:foreverLab:20151003133915j:plain

テクスチャ込みで3時間ほどかかりました。

melで境界線をマージをする

2ヶ月くらい前のメモを発見したのでアップしておきます。
エッジの切れ目をマージする内容のmelのはず!!
自分でも忘れました
--------------------------------------------------------------------------------------------------
global proc merge()
{
      ConvertSelectionToVertices;
      ConvertSelectionToShellBorder;
float $val;
$val = `floatSliderGrp -q -value radiusSlider`;
      polyMergeVertex -d $val;
 
}
 
window -title "slider1";
columnLayout;
floatSliderGrp -label "距離" -field true
-min 0.0-max 100.0 -step 0.1 -value 1.0 radiusSlider;
button -label "Merge" -command "merge()";
showWindow;
--------------------------------------------------------------------------------------------------
 
//combine
polyUnite -ch 1 -mergeUVSets 1 Blood_vessel_C1 Blood_vessel_C2;
 
//頂点選択
ConvertSelectionToVertices;
 
//境界のみ選択
ConvertSelectionToShellBorder;
 
//マージ
polyMergeVertex -d 0.5;

Pythonを基礎から勉強してみる!!_008

リストにオブジェクトを追加する

append

入力

x = ["a" , "b" , "c" , "d"]

x.append("e")

print x

出力

['a', 'b', 'c', 'd', 'e']

 

リストにリストを追加する

extend

入力

x = ["a" , "b" , "c" , "d" , "e"]

x.extend([1 , 2 , 3])

print x

出力

['a', 'b', 'c', 'd', 'e', 1, 2, 3]

 

リスト内のオブジェクトを値指定して削除する

remove

入力

x = ["a" , "b" , "c" , "d"]

x.remove("c")

print x

出力

['a', 'b', 'd']

 

リスト内のオブジェクトをインデックス指定して削除する

del

入力

x = ["a" , "b" , "c" , "d"]

del x [2]

print x

出力

['a', 'b', 'd']

 

入力

x = ["a" , "b" , "c" , "d" , 1 , 2 , 3 , 4 , 5]

del x [3:6]

print x

出力

['a', 'b', 'c', 3, 4, 5]

 

リスト内のオブジェクトを分ける

pop

( )内を半角スペースにすると最後のオブジェクトが分けられる

入力

x = ["a" , "b" , "c" , "d" , "e"]
y = x.pop( )
print x
print y

出力

['a', 'b', 'c', 'd']
e

 

( )内にインデックスを入れることで任意のオブジェクトを分けられる

入力

x = ["a" , "b" , "c" , "d" , "e"]
y = x.pop(2)
print x
print y

出力

['a', 'b', 'd', 'e']
c

 

文字列とリストでのメソッドの違い

文字列の場合

入力

x = "abcde"

x.upper()

print x

出力

abcde

となり"upperメソッド"を使用しても"x"自体は変化しない

それに対してリストでは

入力

x = ["a" , "b" , "c" , "d"]

x.append("e")

print x

出力

['a', 'b', 'c', 'd', 'e']

となり"x"自体が変化している