今回は、動画でチュートリアルを作ってみました。
試験的にささっと作ったので見にくかったり、
分かりにくかったりするかもしれませんがご容赦下さい。
さて今回は、フェースにコンストレインするという事ですが
用途は、服にボタン等のオブジェクトが付いている場合等に使えると思います。
服のボタンはスキンウェイトを振るとオブジェクトが伸びてしまうが
骨にコンストレインすると位置がずれる・・・
なんて状況ありますよね?
ちなみに先に書いておきますが今回の肝は
アトリビュートの転送です。
これを使ってUV座標からワールド座標に追従させます。
まぁ見てもらえば分かると思いますが。
ただ今回は最近発見したばっかりで簡単な検証しかおこなっておりません
もし不具合などありましたらコメント頂けると嬉しいです。
face constraint tutorial from Takayuki Yanagisawa on Vimeo.
質問や感想等ありましたらコメントお願いします!
2013年6月1日土曜日
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が崩壊してしまうことも・・・
少々、脆弱性が気になるところが隠されている所以なのでしょうか・・・
まぁ一度、試してみる価値アリです!!
サスペンションのバネは現在、記事作成中です。
まぁそのうち書きます・・・
タイトルの通り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段目の中心
③一番下の中心
配置出来たらロケーターをトランスフォームのフリーズをして
それぞれ上から順にロケーターとクラスタをペアレントコンストレインします。
※順番は ロケーター → クラスタ です
そして、ハイパーシェードのユーティリティからプラスマイナス平均を押し作業領域に表示させ
アウトライナでロケーター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のちょうど真ん中のポジションに動いてくれます!
あとは他オブジェクトにペアレント化したり、エイムコンストレインすれば
向きなども自由自在になると思います。
(ここは少し考えないともしかしたら難しいかも;)
まぁ分かりにくかったらコメント下さい。
また今度、この記事の内容を使ってサスペンションにばねを付けていみたいと思います。
ではでは
サスペンションのリギングをご紹介します。
毎度ですがこれはあくまで一つの方法ですので他にもたくさんの方法があると思いますし
もっとスマートなセットアップがあかもしれませんので悪しからず。
さて何はともあれモデルを作成しましょう。
こんな感じでしょうか?
今回は見て分かる通り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のちょうど真ん中のポジションに動いてくれます!
あとは他オブジェクトにペアレント化したり、エイムコンストレインすれば
向きなども自由自在になると思います。
(ここは少し考えないともしかしたら難しいかも;)
まぁ分かりにくかったらコメント下さい。
また今度、この記事の内容を使ってサスペンションにばねを付けていみたいと思います。
ではでは
登録:
投稿 (Atom)












