« 誰か教えてくれないかな?・・・何もあげれないけれど・・・ | トップページ | 言葉はいらない…?否!必要だッ! »

2012年10月 2日 (火)ICEを使ってみる 第7回 コンパウンドの中

おはようございます、本日の当番モーションデザイナーのY.Nです。
今日もまたICEを取り上げます。

今回は、この間発見した不具合の報告です。

syflexのノードの中にsyflex Nailなるものがあります。
シミュレート対象の頂点(クラスター)をコンストレイントオブジェクトに
吸着させるノードで、布の一部を引っ張っるときなどに使います。

このノードがちゃんと働くと動作は下のような感じになります。
赤い丸(null)にクロスオブジェクトの一点が追従しています。
2012_1001_01




では、実際にICEツリーを組んでみましょう。

ユーザガイドを見る限り使い方は簡単そうです。
Objectポートにコンストレイントオブジェクトを突っ込めばコンストレイントの効果が
Forceとして出力されるので、それをForceのポートに刺すだけです。
後はパラメータの調整だけで済みそうです。

ということで、早速実験。

布の一点をつかんで、そのままちょっとめくるという感じの動作を作ってみます。

準備として…
・布のクラスターを設定(クラスター名:point)
・コンストレイントオブジェクトとして赤い丸で表示されたnullを用意
・パラメータ調整として
 nullがクロスに接触するまで、StiffとDampを0、Distanceを1に設定して
 接触時にStiffとDampを1、Distanceを0に設定します。
・結果が分かりやすく表示できるよう、Syflex Collide Planeを使って地面を設定



で、結果はというと…
うまく動きません。
接触時に布がオブジェクトから弾き飛ばされるような動作になります。
2012_1001_02




アイスツリーは下のとおり。
2012_1001_03

原因はなんなのか。
怪しそうなところとして、ノードのつなぎ方やパラメータの設定の仕方など
ありそうですが、今回これらは無関係です。
答えはこれ。
ノードの中身でした。
2012_1001_04

SyflexINailというノードが接続の最後尾に見えています。
このノードの使い方をユーザガイドで引いてみると次のように書かれています。

position コンストレイント オブジェクトの XYZ グローバル位置です。

他のポートの説明もありますが、ここでは問題のポートにだけ注目しています。

もう一度、ICEコンパウンドの中を見てみましょう。
SyflexINailのpositionポートには
クロスオブジェクトの各頂点のローカル座標とクロスオブジェクトの座標位置の積、
つまり、クロスオブジェクトの各頂点のグローバル座標が入力されています。
ここは本来は、コンストレイントオブジェクトつまりnullの座標を入れるべきところです。

ということで下のように変更してみましょう。
2012_1001_05

これで冒頭の図のように正しく動くようになります。

こんな感じで、動作異常の追及に行き詰ったときは、コンパウンドの中を診てみるのもいいかもしれません。
ということで、今回はこの辺で。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2012/10/post-9725.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 誰か教えてくれないかな?・・・何もあげれないけれど・・・ | トップページ | 言葉はいらない…?否!必要だッ! »

モーションデザイナー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ICEを使ってみる 第7回 コンパウンドの中:

« 誰か教えてくれないかな?・・・何もあげれないけれど・・・ | トップページ | 言葉はいらない…?否!必要だッ! »