« 弐千拾。 | トップページ | 鳩ぽっぽその後 »

2009年8月26日 (水)

倒壊。

ICE で倒壊の実験をしてたんですがね。

Destruction of XSI Man Head from junki the junkie on Vimeo.


いやー、面白いとは思うけど、仕事で使うにはかなり使い方が限定されてしまいますなあ。カメラアングル限定、つまり見せられる部分と見せられない部分があるので、カット割ってごまかす必要がありそうだったり。 まだまだ研究が足りません。 でもまあ、こうやって実験することによってその「ごまかし方」を見つけるのが主目的なので今のところはいいんですがね。

・先に破壊したオブジェクトを用意するのではなく、プロシージャルに破壊できないかしら
・先に破壊しておくにしても、部分ごとの破壊の瞬間に、破壊前のオブジェクトと差し替えるなどできないかしら
・破片の形・断面の形状をもっとリアルにできないかしら
・ヒビ割れの進行などできないかしら
・破壊の進行をマップで制御できたりするとステキ
・Motion Vector 出せるのかしら
・BBox じゃなくて Actual Shape なコリジョンさせてくれよゴルァ
・いつまでも暴れてないで数回バウンドしたらピタリと止まってくれよゴルァ


これ以外にも、まだまだ課題山積み。
一応、以下に作り方を簡単に書いておくので、誰かもっといい方法をどっかで発表して下さい。


1.
あらかじめオブジェクトを Shatter でぶった切っておく

Icedest1

いつもお世話になっている伊太利亜の Michele さんのサイト http://www.motionblur.it/ ms XSI Shatter が落とせますね。今回はこれを使いましたが、Legacy Netview の中にある Shatterでも良いと思います。これは同じスクリプトの、古いバージョンですね。断面をランダムにする機能はなぜか古い方がバージョンにしか付いていない。 確か新バージョンを出すときに、不安定だったランダム断面機能を省いたんじゃなかったっけ。


2.
Shatter でぶった切った破片を Group にぶち込んでおく


3.
Andy さんのサイトから Emit SRT matched instances コンパウンドを落とす
http://andy.moonbase.net/

4.
空っぽの PointCloud を作り、NON-sim な ICETree を作り、Andy さんのコンパウンドをつなぎ、さっきの Group をぶち込み、コンパウンド内の Create Instance Particle をオンにする

Icedest2

コンパウンドの中身が見れなくなっているので想像ですが(まあ見れてもわかんないけど)、NON-sim の ICETree でパーティクルを発生させ、そのパーティクルひとつひとつの SRT を Group 内のオブジェクトにマッチさせ、マッチ後にそのパーティクルにオブジェクトをインスタンス化しているということなのでしょう。かつシミュレーションのイニシャライズをする、つまり Size やらなんやら、その後のシミュレーションに必要な情報を設定する、ってことをやってるんだと思います。


5.
同じ Point Cloud に Simulated ICETree を作成し、Simulated Rigid Body でシミュレーションさせる。重力とかフォースがないと永遠にすっ飛んで行くだけなので、Add Forces で適当に。 バウンドする床とかが必要なら、適当に。

Icedest3


6.
再生すると、倒壊。 以上。


そうそう、このままだとインスタンス元のオブジェクトはその場に居続けるのでよろしくない。ハイドしてしまうとインスタンスだから倒壊する奴らも消えてしまう。 ってことで、コンパウンド内で Translation を Global から Local に切り替えた上で、破片たちは null とかの子供にしておいて、床の下なりカメラに入らない場所に退避させておけばいいでしょう。Local だから親である null との位置関係が変わらない限り、インスタンス後の破片たちはワールド原点に現れる。 
あ、それよりも Visibility の Instance Master Hidden でマスターだけハイドにする方がわかりやすいですね。

コリジョンが Boundary Box なのは、これはもう ICE の制限だと思うので仕方ないんでしょうね。小さい破片はいいけど、大きいのとか形が不均一なやつは困るんだよなあ。

あと、Andy さんのコンパウンド内で Collision Size をある程度小さくしておかないと、シミュレーションが始まった瞬間に破片がすごい勢いですっ飛んで行ってしまいます。おそらく、コリジョンが BBox であるために初期状態で既に隣の破片と BBox が重なってしまっていて、思いっきり反発し合っているのでしょう。0.5 くらいまで下げると、ある程度は反発して爆発っぽく飛びながらも、思いっきりすっ飛ぶというほどでもなく落下してくれると思います。 逆に勢い良く飛ばしたい部分は PointCloud を分けて、そこだけ Collision Size を大きめにしていたりします。この場合は PointCloud をまたいだコリジョンはできないですけどね。 冒頭のムービーでも、主にタイミングをずらしたいという目的のために PointCloud を5~6個に分けています。なので衝突しない破片同士が大量にありますが、数が多いと意外とごまけてしまうという。

コンパウンド内で初速も与えることができるので、特定の方向にぽーんとすっ飛ばすこともできますね。冒頭のムービーでも最初に飛んでいく目のあたりの破片は確かそういうことやってます。

あとはこのリジッドボディとは別に、パーティクルで小さい破片をいっぱい飛ばすともうちょっとそれっぽくならないかしら。 煙とかも足せばさらに。



うー もうちょっとラクに、もうちょっとそれらしくならないですかね。
それ用のプラグインがある Max や Maya に激しく嫉妬しそうになります。
誰か、ICE でシステム作ってくれませんか。
金出しますよ。




あ、Vimeo のダウンロードの方針が変わったんでしたね。登録しないとムービーファイルをダウンロードできないのは多分同じだと思うんだけど、今は、アップロードから1週間経つと登録済みの人でもダウンロードできなくなるんですね。ケチくさいですね。不況の影響でストレージを節約しなきゃいけなくなったんでしょうかね。



.

|

« 弐千拾。 | トップページ | 鳩ぽっぽその後 »

コメント

おおっ!砕けながら崩れ落ちてる感じ出てますね!
いつもながらjunkiさんの研究熱心さには頭が下がります。

投稿: Mitsuhiro Arita | 2009年8月26日 (水) 11時34分

有田さん、いやー研究熱心というより、仕事で必要が出てきちゃって泣きながら実験、という感じですよ。 

仕事への落とし込み方が問題ですよねえ。例えばボックスの中にスフィアが浮いているレンダリングテスト画像とかよく見ますが、アレは基礎実験にはなっても、仕事にはならないじゃないですか。今回の倒壊もまだボックスの中のスフィアみたいなもんです。実際のショットでは色んな都合があるわけで、都合を満たしたりごまかしたりして何とか成立されられる手法にまでは、まだ落としこめてないです。

久しぶりに飲みに行きますか (こればっか)

投稿: junki | 2009年8月27日 (木) 11時55分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/46017754

この記事へのトラックバック一覧です: 倒壊。:

« 弐千拾。 | トップページ | 鳩ぽっぽその後 »