TPのパーティクルの方向について

CINEMA 4DおよびBodyPaint 3Dに関する一般的な議論や情報交換をするフォーラムです。

TPのパーティクルの方向について

投稿記事by nob » 木 3 20, 2014 2:30 pm

はじめて投稿します。
TPかMographを使って、地面を這い回る(クモかネズミ)みたいなアニメーションを作ろうと思っています。

最初、Mographで試していたのですが、動きが同じになってしまうので、TPに切り替えたのですが、
Windなどのフォースを使うと、どうしても動きが段々早くなってしまうので、アニメーションが地面に滑ってしまいます。
色々とネットで探してみると、Curl NoiseというPythonのエフェクターがあり、Yを0にセットするとなかなか良い動きになりました。
https://vimeo.com/65721379

これに進行方向を向かせたいと思うのですが、”位置”でオブジェクトを動かしているため、PAlignmentなどのベクトル系の方向を指定するノードでは、向いてくれません。”値を記憶”Xpressoなどを使い、フレーム間の位置から向きなどを求められる気がするのですが、どうもうまくいかず。

もし何か、アイデアがあれば教えていただければと思います。

ちなみにダイナミクスを使って動かすこともやってみたのですが、これも生物にはうまくいかないようでした。
https://vimeo.com/89574220
添付ファイル
2014-03-20 14.08.06.png
2014-03-20 14.07.57.png
nob
 
記事: 43
登録日時: 火 3 18, 2014 8:23 pm

Re: TPのパーティクルの方向について

投稿記事by tofuji » 木 3 20, 2014 4:37 pm

 TPの向きを決定しているのは「配置(arrangement)」ポートです。

 配置のデータタイプはマトリックスですが、位置は無視して向きの情報だけ使うようになっています。
ここで、マトリックスとは「位置」、「X軸」、「Y軸」、「Z軸」の4個のベクトルをパックにしたものです。

 ノイズで位置だけを動かしたサンプル
http://www2.11moon.com/sample_files2014/20140320/TP_mouse_1.zip

 ノイズを元に配置を計算したサンプル
http://www2.11moon.com/sample_files2014/20140320/TP_mouse_2.zip


---

 ただし、ノイズで位置を変えてその後向きを計算する、という考え方だとリアルなアニメーションは作れません。
 理由は、一瞬で向きが変わるからです。

 現実の生物や機械(自動車等)を考えてみれば、まず現在位置と進行方向があって、
その方向にある速度で移動します。
 そして、速度や進行方向を変えたい場合は、力を加えて少しずつ変化させます。一瞬で変化することはありません。

 ですから、リアルなアニメーションを作るためには、ノイズで直接位置を変えるのではなく、力(加速度)を変えるべきなのです。


---

 また、フォースやイフェクターなどを使うと平面上のアニメーションしか作れません。
立体的な形状に沿ったアニメーションを作るには、個々のパーティクルに対して、
立体との距離を調べる機能と、自分の姿勢を自由に変える機能を追加する必要があります。

 それらの機能は全てXPressoやCOFFEEで書くことになるので、ベースとなる機能はどれを使っても構いません。

 TPで全部作ることもできますし、TPとMoGraphを併用することもできます。
また、MoGraphだけで作る場合はCOFFEEイフェクタを使います。MoGraphとダイナミクスを併用することもできます。

 TPとMoGraphで作ったサンプルが昔の書き込みの中にあります。

https://www.tmsmedia.co.jp/phpbb/viewtopic.php?f=4&t=115&start=0
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 803
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: TPのパーティクルの方向について

投稿記事by nob » 月 3 24, 2014 6:59 pm

tofuji 様

アドバイスありがとうございます。
おっしゃる通り、位置だけでは進行方向を見せるのは違和感があるのがわかりました。
また、あげていただいたサンプルのXpressoを拝見し、回転を”配置”で制御する方法も参考になります。

ご紹介いただいた”Surface Runner”にオブジェクトを変更させていただいてサンプルを作ってみました。
(アニメーションがついているものが”ゾンビ”しかなくてそれで設定していますが、、、)
それぞれに衝突はオブジェクトの周りをローポリで覆い、ダイナミクスで重ならないようにしてます。

https://vimeo.com/89895978

最初の向きをランダムにさせて、Groundの端にくると止まってしまうので回転をいれればと思うのですが、
Coffeeの中身はなかなか難しくて、勉強しなければいけませんね。。。
回転は”配置”からベクトルを抽出して、何らかの処理(ランダム値を足すとか)を配置で戻すという流れでしょうか?ベクトルと位置と回転の関係を学ばなければいけませんね。。。

即出かもしれませんが、CINEMA4DのC.O.F.F.E.E.で検索すると下記のサイトにたどり着きました。
10年以上前のドキュメントですが、大変に詳しく初心者にも優しくC.O.F.F.E.E.について書かれてありますので、ユーザーさんで私みたいにC.O.F.F.E.E.初心者の方は必見だと思いますので、ご紹介いたします。

http://www.gashow.jp/cinemail/cinemail_ ... magic.html
nob
 
記事: 43
登録日時: 火 3 18, 2014 8:23 pm

Re: TPのパーティクルの方向について

投稿記事by shortail » 火 3 25, 2014 3:24 pm

nob様

私もcoffee初心者です。 ご紹介いただいたようなcoffeeのテキストを探していたので、
大変助かります。 

ご存知かも知れませんが、coffee bibleもいい参考になると思います。
ここに添付させていただきます。
添付ファイル
CoffeeBible_Updated 11-13-10.pdf.zip
(359.56 KiB) ダウンロード数: 214 回
shortail
 
記事: 179
登録日時: 火 3 26, 2013 2:33 pm

Re: TPのパーティクルの方向について

投稿記事by tofuji » 火 3 25, 2014 8:08 pm

 オブジェクトの境界で向きを変えるようにしたサンプルです。

http://www2.11moon.com/sample_files/201 ... unner3.mp4
http://www2.11moon.com/sample_files/201 ... ion130.zip


 ポリゴン選択範囲でも制限できるようになっています。
ポリゴン選択範囲を自動生成するためのXPressoも付いています。

 向きを変えるのは簡単で、単に位置の値を変更しないようにすればいいのです。
角度の値は変更され続けるので、正しい向きになればまた走り出します。

 オブジェクトの衝突はダイナミクスでやっていますが、
キャラクター等の複雑なオブジェクトを衝突させる場合は、PPassABノードを使って衝突した時のアクションを詳細に指定する必要があります。

 
---

 なお、今回のサンプルでは普通にCOFFEEを使っています。

 前回これを作った2011年当時は、「COFFEEは判らないのでXPressoで書いてくれ」と多くの人に言われたので、
無理にXPressoノードとXGroupだけで作りました。
 しかし、その結果3年後に開いてみたら、作った本人も判らないほど読みにくいプログラムになっていました。

 入出力部分はXPressoの方が読みやすいですが、論理部分や数式部分はCOFFEEの方が読みやすいです。

 「COFFEEは判らないがXPressoは判る」と思っている人も多いかもしれませんが、それはやっていることが簡単だからです。
 XPressoノードで難しいものは作れないし、作っても誰にも読めません。

 「そういうものだ」と思っておいてください。
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 803
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: TPのパーティクルの方向について

投稿記事by nob » 木 3 27, 2014 5:41 pm

shortail様

coffee bibleありがとうございます。
これままた膨大なサンプル集ですね。操作対称ごとに分かれているので作りたいもののサンプルを調べるのにとても便利ですね。
あとはもう少しコードになれないと、、、

tofuji様

Surface Runner3いいですね!
色々なアニメーションに応用できると思います。こういう目に見えて活用できるサンプルがあると、色々とアイデアも出て、また勉強していこうと思います。僕も正直、簡単なXPressoを触れる程度で、COFFEEに関しては、サンプルコードを拾ってきて、部分的にコピー&ペーストする程度ですが、それではオブジェクトやマテリアル周りでは十分活用できるスクリプトがあって大助かりしています。なので少しずつなれていきたいと考えています。

また、余談ですが、前から気になっていたのですが、Cinema4Dでダイナミクスのマルチジョイントができるようなできないような?
https://vimeo.com/72204241
https://vimeo.com/48351706
作者はオリジナルのscriptを書いているように思いますが、それにしてもこのレスポンスはすごいですね。
https://vimeo.com/14522793
あと、このムービーも気になっていまして、パーティクルの発生はポリゴンの衝突でやっているのか?エミッターを配置しているんだろうか?
nob
 
記事: 43
登録日時: 火 3 18, 2014 8:23 pm

Re: TPのパーティクルの方向について

投稿記事by tofuji » 金 3 28, 2014 8:38 am

 CINEMA 4Dでオブジェクト(クローン等のリジッドオブジェクト)を接続/破断させるには以下の三つの方法があります。

1. コネクタを使う(手で編集)。

2. ソフトボディーをクローンモードで使う。スプリングの強度は頂点ウエイトである程度コントロールできる。

3. ダイナミクスコネクタ状態やスプリング状態ノードを使って、XPressoでコネクタやスプリングを自動生成、コントロールする。

 サンプルのムービーは作者も書いている通り3の方法で作っているのだと思います。


 最後のムービーは、TPのPMatterWavesで作れます。
 一番簡単なのはPMatterWavesの中にProximalを入れる方法ですが、直接Proximalを入れても認識しないので、
一度ビットマップテクスチャに固定する必要があります。

 リアルタイムに動かしたいのであれば、選範囲タグや頂点ウエイトタグをXPressoでリアルタイムに更新し、
それをPMatterWavesの中に入れればいいでしょう。
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 803
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: TPのパーティクルの方向について

投稿記事by tofuji » 土 3 29, 2014 2:27 am

 3.の方法のサンプルです。

 要は、自動でコネクタを大量に生成できればいいわけで、それをやっています。

 コネクタの生成条件は、距離と数です。

 コネクタの「名前」「位置」「リンクA」「リンクB」が自動的に設定されます。

 コネクタの「フォース」と「トルク」フィールドは別のXPressoでまとめてコントロールできます。

 一部のコネクタのフォースやトルクの値を変えれば、そこだけ強くしたり弱くしたりできます。

 計算速度については、コネクタを450個まで増やしてみましたが、問題なくリアルタイムで計算できました。

注意、コネクタを生成するときは破砕オブジェクトをオンに、ダイナミクスを計算する時はオフにしてください。

http://www2.11moon.com/sample_files2014/20140328/auto_connector111.mp4

http://www2.11moon.com/sample_files2014/20140328/auto_connector111.zip


---

 かなり変則的なXPressoになっているので、説明しておきます。

1. まず、オブジェクトを生成しているので、本来ならプラグインとして実装すべき機能です。
 オブジェクトを生成している関数は「GetClone()」です。

2. 次に、COFFEEイフェクタ用の関数をXPressoの中で使っています。そのためにダミーのCOFFEEイフェクタを置いています。
 MoGraphデータを取得する関数は「GeGetMoData()」です。
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 803
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: TPのパーティクルの方向について

投稿記事by tofuji » 土 3 29, 2014 8:05 am

 XPressoでポリゴン選択範囲を書き換える方法、およびそのポリゴン選択範囲を使って選択範囲からTPを出す方法のサンプルです。

http://www2.11moon.com/sample_files2014/20140329b/TP_polygonselection.mp4

http://www2.11moon.com/sample_files2014/20140329b/TP_polygonselection.zip


---

 また、頂点ウエイトを書き換えるXPressoはこんな感じになります。

http://www2.11moon.com/sample_files2014/20140329b/TP_weightmap.zip
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 803
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: TPのパーティクルの方向について

投稿記事by nob » 火 4 01, 2014 3:33 pm

やはりオートコネクションもできるんですね!スゴイ!
だが、すいません。なかなか中身が把握できなくて、、、

最近はどのソフトもダイナミクスがついて、破壊系のエフェクトは簡単にできるようになったのですが
ジョイントエフェクトは、Houdiniか、MAX版Thinking Particlesか、Realflowぐらいなのかな?

少しHoudiniも勉強していまして、Xpressoと似ている部分もあって、これからはプロシージャル(手続き型)の作業構築の中で将来的にも活用できるデータアセット(資産)を作りながら作業をしていかないとと思っております。

polygonselectionのエミッターもありがとうございます。
これは、ターゲットの周りにパーティクルを配置して、そのパーティクルを介してソースモデルのポリゴンセレクションを選択して
そこからパーティクルを発生させているという流れだと思うのですが、
パーティクルを介すのは、単純なオブジェクトの衝突でのポリゴン選択だと、うまく選択されなかったりする為でしょうか?

僕も以前、衝突のみでパーティクルを発生させたときにうまく出すことができなかったので
また、ターゲットのパーティクルがターゲットに接触したときにPstomを配置するというのも手でしょうか?
https://vimeo.com/17252822
こちらを観て、Pstomの複数配置というのもありかなと。。。
nob
 
記事: 43
登録日時: 火 3 18, 2014 8:23 pm

次へ

Return to ユーザフォーラム

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]