久しぶりの
■久しぶりのモデリング
今日はクライアントチェック待ちで久しぶりに時間に空きができたんで、トラックモデリングを。
今まで放置していたインテリアを追加。

トラックは物凄い数の機器類があるので超燃えます。作るのは大変ですけど。
ついで扉もモデリング。まだ窓枠とロック部位が出来てないです。

ほんと車ってのはパーツが多くて大変だ。趣味でも仕事でも車をポンポン作ってる人尊敬しますわ(’Д`)
ついでにレンダリング。フルHDで6時間。それでも若干ノイズが残ってますね。室内をパストレでレンダリングするとやっぱり時間がかかりますねぇ。CPU早く新しくしたいですな。

扉とか歪みがなくて気持ち悪いですな、後で直さないと。
などと色々考えながら、いや考え無しにモデリングしてたら問題発生・・・


うぎゃー、変形したら追加したパーツがめり込んでる! ぬぅ~、パーツのレイアウトを変更しなくては・・・
■Pymel
昨日たまたま話題でPymelの話があがったのですが、恥ずかしながら今までPymelを使ったことがありませんでした。
で、話題ついでに簡単に調べてみたんですが、これは超便利じゃないですか~!
Pymelとは、MayaPython(所謂maya.cmds)がMelの書式をPythonで模倣するだけのものに対し、PymelはPythonの書式でMayaにアクセスできるってモンらしいです。
例えば、maya.cmdsの場合
ところがPymelの場合
余談ですが、上記スクリプトを実行後、GUI上でt2のノード(trs1|trs2)をリネームした後に変数t2にアクセスすると、ちゃんとリネーム後の名前が返ってきます。スゲェェェェ!
今まで名前のブッキングに注意を払いながらスクリプトを記述する必要があったのに、これで相当手間が省けます。
もう一点、一番のポイントはPymelはオブジェクト指向でスクリプティングできる事!
mayaPythonの場合
この場合、戻り値はシーンに存在するtransformノードの文字列のリストが帰ってくるだけです。つまりMelと一緒なんですね。ところがPymelの場合
最初の各例文の4行目が、mayaPythonだと「mc.parent( t2, t1 )」だったのがpymelは「pm.t1.add( t2 )」になっている、ここが最大の違いですね。
うーむ、なんと魅力的な。今まで何故スルーしてたんだろう。今後のスクリプトはPymelで書いていこうかな・・・
今日はクライアントチェック待ちで久しぶりに時間に空きができたんで、トラックモデリングを。
今まで放置していたインテリアを追加。

トラックは物凄い数の機器類があるので超燃えます。作るのは大変ですけど。
ついで扉もモデリング。まだ窓枠とロック部位が出来てないです。

ほんと車ってのはパーツが多くて大変だ。趣味でも仕事でも車をポンポン作ってる人尊敬しますわ(’Д`)
ついでにレンダリング。フルHDで6時間。それでも若干ノイズが残ってますね。室内をパストレでレンダリングするとやっぱり時間がかかりますねぇ。CPU早く新しくしたいですな。

扉とか歪みがなくて気持ち悪いですな、後で直さないと。
などと色々考えながら、いや考え無しにモデリングしてたら問題発生・・・


うぎゃー、変形したら追加したパーツがめり込んでる! ぬぅ~、パーツのレイアウトを変更しなくては・・・
■Pymel
昨日たまたま話題でPymelの話があがったのですが、恥ずかしながら今までPymelを使ったことがありませんでした。
で、話題ついでに簡単に調べてみたんですが、これは超便利じゃないですか~!
Pymelとは、MayaPython(所謂maya.cmds)がMelの書式をPythonで模倣するだけのものに対し、PymelはPythonの書式でMayaにアクセスできるってモンらしいです。
例えば、maya.cmdsの場合
import maya.cmds as mc t1 = mc.createNode( 'transform', n='trs1' ) t2 = mc.createNode( 'transform', n='trs2' ) mc.parent( t2, t1 ) t3 = mc.createNode( 'transform', n='trs2' )上記例ではt2とt3は同じ名前のノードを作成しているので、t2には'trs2'と言うstr文字列が、t3には'|trs2と言う文字列がそれぞれ入っています。しかし、t2はt1の子にしたので最終的にMayaで扱うには'|trs1|trs2'じゃないとダメです。つまり上記例では、t2を見失ってしまう事になります。
ところがPymelの場合
import pymel.core as pm t1 = pm.createNode( 'transform', n='trs1' ) t2 = pm.createNode( 'transform', n='trs2' ) t1.addChild( t2 ) t3 = pm.createNode( 'transform', n='trs2' )とした場合、ちゃんとt2はアクセス可能なパス'trs1|trs2'を保持してくれます。maya.cmdsはノードの名前をだけを返すのに対し、pymelはノードのIDを持っているっぽく、階層や名前の変更をちゃんと追うようになっているようです。これは素晴らしい!
余談ですが、上記スクリプトを実行後、GUI上でt2のノード(trs1|trs2)をリネームした後に変数t2にアクセスすると、ちゃんとリネーム後の名前が返ってきます。スゲェェェェ!
今まで名前のブッキングに注意を払いながらスクリプトを記述する必要があったのに、これで相当手間が省けます。
もう一点、一番のポイントはPymelはオブジェクト指向でスクリプティングできる事!
mayaPythonの場合
mc.ls( type='transform' )
この場合、戻り値はシーンに存在するtransformノードの文字列のリストが帰ってくるだけです。つまりMelと一緒なんですね。ところがPymelの場合
pm.ls( type='transform' )とした場合、帰ってくるのはnt.Transformと言う、transformノードにアクセスするためのメソッドをもったクラスの配列が返ってきます。
最初の各例文の4行目が、mayaPythonだと「mc.parent( t2, t1 )」だったのがpymelは「pm.t1.add( t2 )」になっている、ここが最大の違いですね。
うーむ、なんと魅力的な。今まで何故スルーしてたんだろう。今後のスクリプトはPymelで書いていこうかな・・・
スポンサーサイト