2013年5月22日水曜日

membrane node

今回は面白いmayaの隠しノード(?)を見つけたのでご紹介します。

サスペンションのバネは現在、記事作成中です。
まぁそのうち書きます・・・


タイトルの通りmayaの隠しノードとはmembrane nodeのことです。

mayaの隠しノードは私の知っている限りいくつかあります。
例えばimplicit nodeです。
これは形のあるnullのようなもので3つの形状があり
更に形状を変更するアトリビュートがあります。

maya2013以降であればノードエディタで簡単に作れますが
それ以前ならMELで

//球体
createNode implicitSphere;

//立方体
createNode implicitBox;

//円錐
createNode implicitCone;

とそれぞれ作ることができます。
まぁ使い道があるのかは知りませんが。


さて、本題のmembrane nodeですが直訳で『皮膜』という意味だそうです。
mesh同士のコリジョンや、布っぽい動きを非シュミレーション、
リアルタイムで動かすことが出来ます。

まぁイメージしにくいと思いますので実際に作ってみましょう。

















まずは、どんな形でも構いませんがメッシュの細かなオブジェクトを用意します。

次にそのオブジェクトを選択し
createMembrane;
とMELを実行します。

すると勝手にmembraneノードがコネクションされたり
meshがコネクションされたりします。

この状態でアトリビュートを弄っても面白いのですが
他のオブジェクトとコリジョン(衝突)させてみましょう。

















先ほどのオブジェクトは置いといて
コリジョンさせたいオブジェクトを新しく作ります。

先ほどのオブジェクトと新しく作ったオブジェクトを選択し
ハイパーシェードでコネクションを見てみます。






















このようにシェイプが表示されると思います。

これをコリジョンさせたいオブジェクトのシェイプノードからmembrane1へ
中ボタンドラッグで引っ張り、その他を選択しコネクションエディタを開きます。






















そしてこのようにworldMeshとcollideMeshをコネクションします。


これで完成です!

あとはお好みでアトリビュートを弄ってみてください。


















するとこんな感じで動かしながらリアルタイムで
コリジョンができたと思います。



単純に乱気流や風圧を弄ってワイヤーフレームをレンダリングして
モーショングラフィックスとかも作れそうですね。

まぁ色々使い道はありそうですが、法線の反転等
弄っているとmeshが崩壊してしまうことも・・・

少々、脆弱性が気になるところが隠されている所以なのでしょうか・・・


まぁ一度、試してみる価値アリです!!

2013年5月6日月曜日

Suspension setup

今回は車やロボットのセットアップの時に使えそうな
サスペンションのリギングをご紹介します。

毎度ですがこれはあくまで一つの方法ですので他にもたくさんの方法があると思いますし
もっとスマートなセットアップがあかもしれませんので悪しからず。


さて何はともあれモデルを作成しましょう。






















こんな感じでしょうか?

今回は見て分かる通り2段階になっております。
段階ごと別オブジェクトでやる方法もありますが今回はくっついています。






















まずハイライトになっている部分をクラスタ化します。
ちなみにクラスタ化の方法は
コンポーネントを選択している状態で
アニメーションタブ → デフォーマの作成 → クラスタ
で出来ます。






















お次はここです。






















最後に残ったここです。

次に三か所にロケーターを配置します。
これは位置を取得する目的と
もしもの時の為のかませです。



場所は画像参照です。
①一番上の中心
②2段目の中心
③一番下の中心

配置出来たらロケーターをトランスフォームのフリーズをして
それぞれ上から順にロケーターとクラスタをペアレントコンストレインします。
※順番は ロケーター → クラスタ です

次にこのようにロケーターを上のロケーターが親になるようペアレント化します。
(上の①、②、③はそれぞれlocator1、2、3になっています)




















そして、ハイパーシェードのユーティリティからプラスマイナス平均を押し作業領域に表示させ
アウトライナでロケーター3つを選択し中ボタンドラックで作業領域に表示させてください。
(↑みたいな感じ)
※一気に3つを持ってくと重なって表示されるのでずらしてください。






















次にlocator1のtranslateYをplusMinusAverage1のinput1D[0]にコネクションします。
※input1Dをクリックしたら自動的にinput1D[0]にコネクションされます。

同様にlocator3のtranslateYをplusMinusAverage1のinput1D[1]にコネクションします。
が!
コネクションエディタではinput1D[1]が表示されずコネクションできません!
色々と原因はありますが今回は別のコネクション方法で・・・


ハイパーシェードの作業領域を見てください。

locator3の右下に右向きの▲があるのでそこを右ドラックしてtranslateYを選択してください。
そのまま、plusMinusAverage1の左下の右向き▲で
また右ドラックしてinput1D[0]を選択してください。

これでコネクションが出来ます。


そして、plusMinusAverage1のoutput1Dからlocator2のtranslateYとコネクションします。

最後にplusMinusAverage1のアトリビュートエディタの操作から平均を選択します。

これで完成です。
試しにlocator1やlocator3のtranslateYを動かしてみてください。
locator2が1と3のちょうど真ん中のポジションに動いてくれます!


あとは他オブジェクトにペアレント化したり、エイムコンストレインすれば
向きなども自由自在になると思います。
(ここは少し考えないともしかしたら難しいかも;)
まぁ分かりにくかったらコメント下さい。



また今度、この記事の内容を使ってサスペンションにばねを付けていみたいと思います。

ではでは

2013年5月4日土曜日

transform node等

前回しれっと使ってしまった『transform node』という単語みなさん理解していたでしょうか。


そもそもMayaはnode(ノード)で出来ています。
そしてノードは大きく分けて二つの種類に分けられます。
DAGノードと、DGのノードです。
詳しくは↓
http://mukaimame-cg.jugem.jp/?eid=100

今回は、その中でもオブジェクトを作る上でかかせない
DAG ノードで DG ノードの一種でもあるtransform nodeとshape nodeについて書きます。










まず、ポリゴンの球を作ってハイパーシェードの入出力コネクションをしてみます。
上のような関係が出ると思います。

左から説明すると、
create node
shape node
shading group node
transform node
となっています。

まず、create nodeですがこれが今回で言う球の形状を決めています。
この中に半径、分割数といった値が入っています。

そしてcreate nodeのoutputからshape nodeのinMeshに繋がれています。
shape nodeではcreate nodeからきた形状を
私達がUI上で見れるように形作ってくれます。
他にもレンダリングの詳細やスムースメッシュなどの値が入っています。
ちなみにUI上でヒストリの削除をすると
このshape nodeのoutMeshの前に繋がれていたノード達が消えていきます。

そしてshading group nodeはおおまかにいうとshape nodeで形作ったものに色を付けています。
ここではディスプレイメントやレンダリングの設定等様々な値が入っています。

そして最後transform nodeですがこれら設定がされたオブジェクトが
どこに配置されるのかどこにピボットがあるのかなどの値が入っています。























さてお次はアウトライナです。
ディスプレイ → シェイプ にチェックを入れています。

見て分かるようにpSpere1には二つのノードによる階層が出来ています。
ちなみに上がtransform node下がshape nodeです。

つまり何が言いたいかというとtransform nodeとshape nodeは親子関係があるということです。

では試しにUI上でpSpere1を選択し、↓キーを押してみて下さい
ちなみに↓キーはpick workのdownのショートカットでひとつ下の階層を選択します。

右下のスクリプトエディタに
// 結果: pPlaneShape1 //
と表示されshape nodeが選択できたかと思います。



・・・と、このような意外と基礎知識は見落としがちです。
これを知っていたら何ができるという具体例はあまり浮かびませんが
これを知っているのと知っていないのとでは制作において大きく違うと思います。

とくにバインド時のshape nodeの繋がりは理解しておくと
後からブレンドターゲットを追加したりなど活用できると思います。


なんか今回は活字ばっかになってしまいましたが参考になればと思います。