2012年10月29日

modo601が来た! その65 modo601SP3

今回も前回に引き続きソフトボディとリジッドボディを接続するアンカーアイテムについて調べてみたい。

アンカーのプロパティには下の画像のように3つの項目がある。

fig01

「有効」はONにすることでアンカーが接続するソフトボディとリジッドボディのコンストレイントを有効にするスイッチ。これに説明はいらないね。

「subCollisions」はマニュアルに以下のように書かれている。

SubCollisions (下位衝突):このオプションを 有効 にすると、コンストレイントされる側 (チェーンの構成要素。見た目が 数珠つなぎ になっているという意味ではなく、階層が入れ子になっている子アイテム同士) の衝突検出が行われるようになります。無効 (デフォルト) にすると、計算量は大きく減少しますが、子アイテム同士がぶつかったときに、互いに突き抜けてしまうようになります。子アイテム同士が衝突する可能性のあ る場合は、これを 有効 にしておいてください。

何度読んでもよくわからないので、たぶんこういう事じゃないかなと予想をつけて実験してみることにした。

そこでまず思いついたのが下の画像のようなシーンで、1本のロープ化したカーブとパッシブリジッドボディ化した球体とアクディブリジッドボディ化した2つのBOXを3つのアンカーで結びつけたものだ。BOXはロープに「コンストレイントされている側」なので「子アイテムどうしの衝突」は2つのBOXの衝突と見なせるのかな?と思ったわけだ。

fig02

アイテムとしてはRopeに対して3つのAnchorが子アイテムになっているけど、BOXや球体は子アイテムじゃない。マニュアルの「見た目が 数珠つなぎ になっているという意味ではなく、階層が入れ子になっている子アイテム同士」を考えると、まったく逆の状態かも・・・。

fig03

で、実際やってみたらsubCollisionsの設定に係わり無く、2つのBOXは衝突検出されてしまった。

fig04

そこで今度はBOXを増やしてピンコンストレイントで繋いで、BOXの下の階層のBOX(アクティブリジッドボディ化したもの)を作ってみた。

fig05

だがやっぱりsubCollisionsの設定によって衝突の状態が変わる事は無かった。

fig06

よくわからないのでさらに原文をあたって見た。

SubCollisions: The 'SubCollisions' option, when enabled, allows constrained objects (especially those within a chain, not a literal chain but subsequent groupings) to collide with one another. When disabled (the default state), fewer calculation are required, however, constrained items may inter-penetrate each other. If this occurs users will want to enable SubCollisions.

カッコの注釈を外してみると「constrained objects to collide with one another.」なので、コンストレイントされているものどうしの衝突検知らしい事はわかる。そして within a chainで、not a literal chainであって、subsequent groupingsなので、これはもしかしてチェーンで繋がっていても、対象となるのはチェーンの隣どうしの話なのかな?と考えてみた。となればアンカーはソフトボディとリジッドボディの間でしかつなげないから、この設定はアンカーで繋がれたソフトボディとリジッドボディの間の衝突を検知するかどうかのスイッチと考えればいいのかなと思ったわけだ。

そこでまず、アクティブリジッドボディの球体と四隅をピンマップで留めたソフトボディの平面を用意して、両者が衝突するのを確認した。

fig07

次にソフトボディの1ポイントと球体の間にアンカーを設定して、subCollisionsをONにした。

fig08

そしてシミュレーションしてみたのがこれ。2つのアイテムは衝突しているのがわかる。

fig09

次にsubCollisionsをOFFにしてみた。すると、両者は衝突しないですり抜けた。

fig10

ところが、もう一度subCollisionsをONにしても今度は衝突しない。キャッシュが効いているのかと思っていろいろキャッシュがクリアされるような事を試しているうちに衝突が復活した。

結局のところ一番簡単に設定を確かめられたのは、一度アンカーを削除して、再設定するか、一度保存して閉じてからまた開く方法だった。

上の手順のうち、アンカーを設定した後でシミュレーションを行う前にsubCollisionsをONにしなかったときは、やはり両者は衝突しないですり抜けて、アンカー作成後にシミュレーションを行う前にsubCollisionをONにしたら両者は衝突するようになった。

と言うわけで、どうやらsubCollisionはこういうものらしいと言う結論だ。subCollisionをON/OFFにした2つのシーンをアップしておいたよ。

それではまた次回。

カテゴリー別ページ



take_z_ultima at 12:05│Comments(0)TrackBack(0)modo | CG

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives