なんだろ?ノード遊び geometryVarGroup 第二弾!
前回geometryVarGroupについて触れておきながらあまり詳しいことがわからないまま終わってしまい、放置しておくのが気持ち悪かったのでちょいちょい調べてみました。
■transformとしてgeometryVarGroupが作成させるのは
DagNode
∟ trandform
∟ baseGeometryVarGroup
∟ geometryVarGroup
という分類になっていて親の親にtransformがいるので、多分transformとしてgeometryVarGroupが作成されるのではないかと考えました。
また、前回のブログでコメントくださっていた内容の通り一時的にジオメトリの情報を格納するノードなのかと思います。
コメントしてくださった方ありがとうございます!
(前回のブログのコメント)
私の経験からすると、ノード名にヒントがありますね。
VarはMaya内ではVariable(スペル合ってるかな汗)の略な事が多いので、一時的にジオメトリを格納する為のノードなのかなぁと思ったり思わなかったりするかもしれないししないかもしれない様な気がしないでもない。
■使い道(多分ね、たぶん。。。)
もしgeometryVarGroupが一時的にジオメトリの情報を格納するノードではなく、継続してジオメトリの情報を格納するノードつまり、geometryVarGroupのcreateに一度コネクトして切り離しても情報が格納されている状態であれば重たいハイモデルなんかの情報をgeometryVarGroupに格納してノードだけを保存すれば、データ要領が軽くなるのでは?
と考えました。
ですが、デフォルトのgeometryVarGroupやgeometryVarGroup単独では出来そうに無いのでプラグインや他のノードと連携して使う必要があるかもしれません。
なんだろ?ノード遊び geometryVarGroup
MAYAでセットアップを行なう時にやりたいことがあっても、組み方がわからなくて戸惑ってしまいます。
どうしてかな?と考えてみると一つの理由はノードをどうやって使うかわからないということです。
ですので、ぼちぼちノードで遊んで使い方を学ぼうと思いました!
題して なんだろ?ノード遊び!
今日のノード遊びは geometryVarGroup です。
初めにコマンドラインでgeometryVarGroupを作成します。
createNode geometryVarGroup
ノード作成しをアウトライナーで表示させるとtransformとしてgeometryVarGroupが作成されています。ってことはDAGノードなのかしら。。。
MAYAのヘルプを見てみるとこのノードはinputの種類に応じて、メッシュ/ NURBS曲線/ NURBSサーフェスタイプの子形状を作成することができます。(グーグル翻訳)とのっていました。多分メッシュ/ NURBS曲線/ NURBSサーフェをまとめることのできるノードなのかと思います。(自己推理なので間違ってたらすいません!)
試しにMeshのShapeをコネクトしてみると、geometryVarGroupの子供としてコネクトしたMeshと同じ形状のShapeを持つtransformが自動で作成されていました。
しかも、複数のMeshをコネクトしても子供が個別に階層下にあったので、個別に動かすことができました。
ほんとの使い道はわかりませんが。。。(明日誰かに聞いてみよ。。)
これで何かできないか考えてみます。。。。
おやや(ーoー)/
pythonでHelpLineにメッセージ出したくて。。。pythonでmel文実行!どーん
最近melを触ってなかったので、やり方をすっかり忘れていました。
忘れないうちに 。。。Let'sメモ!どーん!
スクリプトの実行結果を確認するためにいちいちスクリプトエディタを開くのがめんどくさくて、HelpLine(MAYAの下の箱?)に表示したいなと思っていました。でもPythonではただprintを行うだけだと表示されないみたいです。
でも、以下の方法で実行すると表示されました。
方法1、pythonでmel文を実行
import maya.mel as mel mel.eval( u'print "test";')
import maya.melでmelモジュールをインポートし、melコマンドを呼び出します。
melでprintするとかってにHelpLineに表示できます。
方法2、pythonでHelpLineに表示させる。
print u'puthon',
最後に , を付けるとHelpLineに表示させることができます。
SyntaxHighlighterができない!っておもったら出来た python
はてなブログ更新に伴いSyntaxHighlighterを導入しました。
とりあえず、私はこの方面の才能がないので大変でしたww。
でも親切なサイトを見ながら行ったところ、うまく行きました。
なので今後迷わないようにやり方をメモっときます。
かなり初心者用なのです。
手順1
まず以下のサイトからSyntaxHighlighterのVersion 3.1.3をダウンロードします。
http://wordpress.org/extend/plugins/syntaxhighlighter/
解凍すると、localization、syntaxhighlighter2、syntaxhighlighter3、third-party-brushes、readme、screenshot-1、screenshot-2、syntaxhighlighter、syntaxhighlighter_mceのファイルが入っています。
手順2
syntaxhighlighter > syntaxhighlighter3 > styles > shCoreDefault.css
ディレクトリにあるshCoreDefault.cssを全文コピーし、
はてなブログ > デザイン > カスタマイズ > デザインCSS
にペーストします。
手順3
はてなブログ > デザイン > カスタマイズ > サイドバー で
サイドバーを新しく追加し、新しく作成したサイドバーのHTMLに以下の文をペーストします。
<script type="text/" src=""></script>
手順4
http://www.undermyhat.org/blog/2009/09/list-of-brushes-syntaxhighligher/
から自分の使用したい言語のjsを開き(フロッピーディスクのアイコンをクリックするとjsのページに飛びます。)コピーします。
そして、手順3の文の下にペーストし<script></script>で囲みます。私はpythonを使いたかったので、shBrushPython.jsをコピーしました。
手順5
手順4の文の下に以下の文をコピーします。
<script type="text/">SyntaxHighlighter.all();</script>
手順6
はてなブログの設定を見たまま編集に設定し、記事のHTML編集で使用したい文(SyntaxHighlighterを適応させたい部分)を以下の文で囲んで下さい。
<pre class="brush: python"></pre>
(<pre class="brush:言語名"></pre> にして下さいね!)
公開するとSyntaxHighlighterが適応されています。
私は以前別のスクリプトでやろうとしたところうまくいかなかったので、
以前のスクリプトをちゃんと消しこの手順でやったところうまくいきました。
以前のスクリプトが残っていると、AとBのスクリプトがあるけど、どっちをやるの状態になりスクリプトがぶつかってエラーが出まくってしまいます。
なので、やるときは気をつけてくださいね!
Mayaでshaderのタイプを取得するスクリプト
shaderを取得するときにまず、頭に浮かぶ方法は
cmds.ls( typ=u'shader' )
で取得できるのでは?と思いますが、これでは取得できないようです。
シェーダーを選択しアトリビュートエディタのノード名の横に表示されているタイプ名(たぶんタイプ名だと思いますが、確信はありません。)
を見るとわかると思うのですが、shaderとは書かれてなくblinnやlambertととなっています。
ですので、shaderという分類であってもblinnやlambertがshaderというタイプではないのかと思います。(間違っていたら教えてください!)
なので、リストするときは以下のようになるわけです。
cmds.ls( typ=u'blinn' ) cmds.ls( typ=u'lambert' )
でもこれではいろんな種類のshaderを使用している場合、ひとつひとつのタイプ名を取得する文を書かなくてはいけなくなり、
大変になってしまいます。
そこで登場するのが
cmds.listNodeTypes()
です。
これを使ってshaderのノードタイプをリストします。
shaders = cmds.listNodeTypes( u'shader' ) # Result:[u'adskMaterial', u'anisotropic', u'blinn', u'cMuscleShader', u'cgfxShader', u'displacementShader', u'envFog', u'fluidShape', u'hairTubeShader', u'lambert', u'layeredShader', u'lightFog', u'materialFacade', u'oceanShader', u'particleCloud', u'phong', u'phongE', u'rampShader', u'shadingMap', u'surfaceShader', u'useBackground', u'volumeFog', u'volumeShader'] #
ずらーっとshaderのタイプがでてきました。
これを利用してshaderのタイプを取得すれば短い文で済むことが出来ました。
shaderType = cmds.listNodeTypes( u'shader' ) for sT in shaderType: cmds.ls( u'%s'%sT )
ここでひとつ注意点。。。
blinnとlambertのshaderを取得するとなぜかlambertの中にblinnのshaderが入っていたのでご注意ください。
(blinnとlambertのshaderをかぶることなく取得できる方法がわかりませんでした。もし、やり方があれば教えてください!)
また、分類文字列は以下の通りに取得するみたいです。
cmds.getClassification( u'lambert' ) # Result: [u'shader/surface'] #
これまでのイラスト達!新しいブログへいらっしゃい!
海の中の妖精
原住民っぽい作品
ダックスフントをイメージした作品
CCレモンのコンペ作品
こうやって今まで描いてきた作品を見ると、共通してしているのが。。。
背がちゃんと描かれていない!ということ。。。
なんとまあ、かなりキャラ(主要となるもの)に力を入れすぎて背景を描いてないなんて、まだまだですねww
今後はキャラだけではなく、キャラの生える背景も描けるように頑張らなくては!
頑張れ自分!