ThinkingParticlesのサンプル

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

ThinkingParticlesのサンプル

投稿記事by tofuji » 金 2 20, 2015 7:47 pm

 
 ThinkingParticlesのサンプルを作ったので、それを作る過程を説明します。

 MoGraphやダイナミクスが登場した結果、ThinkingParticlesを使う機会は減りました。
 しかし、現在でもThinkingParticlesでないと作れない表現というのは存在します。

 ところが、ThinkingParticlesのサンプルというとどうしても難しくなりがちで、初心者にはとっつきにくいものになっています。
 もちろん、あまり簡単なものをThinkingParticlesで作っても意味がないのですが、
今回作ったサンプルは実用性と難しさのバランスがちょうどよくまとまっていると思います。


1. はじめに(5分33秒)
http://www2.11moon.com/sample_files2015 ... ole2_1.mp4

 このサンプルで何を作るかを説明します。


2. ThinkingParticlesを作る(29分52秒)
http://www2.11moon.com/sample_files2015 ... ole2_2.mp4

 必要なオブジェクトを作成し、ThinkingParticlesを生成します。
 次に、生成したThinkingParticlesの初期位置をVolumeオブジェクトの内部に指定し、
Mole_Aオブジェクトを適用します。
 次に、反射ノードによってThinkingParticlesをVolumeオブジェクトの内部に閉じ込め、
風ノードによってランダムな動きを与えます。


3. ThinkingParticlesを増やす(5分43秒)
http://www2.11moon.com/sample_files2015 ... ole2_3.mp4

 作成したXPressoタグをコピーし、Mole_AをMole_Bに差し替えます。


4. ThinkingParticlesに条件を設定する(18分39秒)
http://www2.11moon.com/sample_files2015 ... ole2_4.mp4

 holeの上に近づいたパーティクルを捕獲します。


5. COFFEEを使ってThinkingParticlesを動かす(19分16秒)
http://www2.11moon.com/sample_files2015 ... ole2_5.mp4

 COFFEEを使って、捕獲したパーティクルを穴に向かって吸い寄せます。


6. 条件に応じてThinkingParticlesの動きを変える(21分56秒)
http://www2.11moon.com/sample_files2015 ... ole2_6.mp4

 COFFEEを使って、穴に到達したパーティクルを下に押し出します。
 さらに、ある程度下に押し出したパーティクルはflowグループに移します。
 次に、flowグループのThinkingParticlesを風ノードで右に流します。

 穴が一つの場合はこれで完成です(サンプルファイル)。
http://www2.11moon.com/sample_files2015 ... _hole2.zip



7. 穴が干渉しないようにCOFFEEを拡張する(20分05秒)
http://www2.11moon.com/sample_files2015 ... ole3_1.mp4

 穴が複数ある場合、穴が干渉するのでそれを軽減するためのプログラムをCOFFEEに追加します
(サンプルファイル)。 
http://www2.11moon.com/sample_files2015 ... _hole3.zip
---

Toshio Fuji<gtofuji@gmail.com>

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

Re: ThinkingParticlesのサンプル

投稿記事by shortail » 月 2 23, 2015 8:27 am

もしよければ、P PASS ABノードについてのサンプルとそのご解説してはいただけないでしょうか?

添付のファイルは 単純なサンプル例として作成したものにです。Attract_coffee.c4dはTPを使わずに
基本的にはcoffee scriptのみでアニメーションを作っています。 

一方、particles_coming_together.c4dはcoffeeの使用は最小限に、基本的にはTPだけでアニメーションを作っています。

Attract_coffee.c4dのアニメーションの内容としては、シーン内には6つの球があり、それぞれの球は自分自身と他者との距離を
測定し、その距離が指定した任意の距離よりも短い場合、それらの球の間でベクトルを形成し、お互いに引き寄せ合う。
というものです。 このプログラムで最も計算の負荷が掛かるのはお互いの距離を計ることで生じる Iteration (繰り返し)です。 
まあ codeが泥臭く、簡潔でないこともありますが、とにかくcoffee一本で この手のシーンを作るのはムリがあります。

particles_coming_together.c4dでも、基本的なアニメーションとしては同様なシーンを作成しました。particleの数はcoffeeのものと比べかなり増やしましたが、
負荷を感じる事もなくサクサク動きます。 非常に有用で強力なノードだと実感しました。

そこで勝手ながら、もしP PASS ABノードの実用例などをご存知でしたら、お教え頂きたいのです。

宜しくお願い致します。
添付ファイル
particles_coming_together.c4d
(364.54 KiB) ダウンロード数: 339 回
attract_coffee.c4d
(127.5 KiB) ダウンロード数: 325 回
shortail
 
記事: 179
登録日時: 火 3 26, 2013 2:33 pm

Re: ThinkingParticlesのサンプル

投稿記事by tofuji » 火 2 24, 2015 4:25 am

 PPassABは、パーティクル同士の衝突を表現するためのノードです。
 衝突計算専用のノードはないので、COFFEEを使って自分で運動量の保存則を書く必要があります。

 その他いろんなことに使えますが、パーティクル同士の衝突が分かっていれば自然と応用できるはずです。

 ただし、現在ではダイナミクスとMoGraphでもっと簡単に複雑なことができるようになっているので、この機能を使って衝突を計算することはほとんどありません。


解説ムービー
http://www2.11moon.com/sample_files2015 ... lision.mp4

サンプルファイル
http://www2.11moon.com/sample_files2015 ... lision.zip


---

 添付ファイルの方は、一応見ましたが、何をやりたいのかわからなかったので省略します。

 現在のコンピューターは速いので、TPを使わず全部COFFEEで衝突計算をやらせても、数百個程度までなら動くと思います。
 また、衝突系で複雑なことをやらせたい場合は、ダイナミクスを直接COFFEEでコントロールするのが普通です。
---

Toshio Fuji<gtofuji@gmail.com>

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

Re: ThinkingParticlesのサンプル

投稿記事by shortail » 金 2 27, 2015 4:06 pm

tofuji様

ありがとうございました。
PPassABの衝突判定用ノードとして作用機序は、つまるところ、A、Bのそれぞれのパーティクルの距離の測定し、指定した距離よりもパーティクル同士の
距離が短ければ衝突したと判定、 長ければ衝突していないと判定する。 こんなところですよね。 この機序で衝突判定が成立するのはオブジェクトが球である場合のみですね。

こういう前提を踏まえて、tofuji様は、

『現在ではダイナミクスとMoGraphでもっと簡単に複雑なことができるようになっているので、この機能を使って衝突を計算することはほとんどありません。』

と言っておられているのだと思います。

ちなみに私が前回添付したファイルでは、A, B のパスの中で指定した距離に入ったパーティクル同士はお互いに引きつけ合う というもので、
私はむしろ PPassABの衝突判定用ノードととして捉えるより、『指定した距離に入った A, Bのパーティクル同士になにかしらのアクションを付加する』ノードと考えてみた方が
応用がきくのではないかと思います。 
shortail
 
記事: 179
登録日時: 火 3 26, 2013 2:33 pm

Re: ThinkingParticlesのサンプル

投稿記事by nob » 水 3 04, 2015 1:55 am

PPASS ABについて、私も色々と試行錯誤していたことがあります。
添付のファイルは、群衆のベースにしようと思ったTPのファイルですが、赤い矢印と青い矢印のチームに分かれて、ベクトルで向きを変えることで、同じチームでは反発するようにし、違うチームは引き寄せ合うようにしたのですが、PPASS ABで近いものだけ作用させていても、その作用が次々に広がって全体に作用してうまく見えないですね。
それでもっと特定に作用できないかと思いshortailさんのようにスクリプトで個々で距離を測ってやろうかと思っていたのですが、やはり総当たり戦になってしまうので、結構時間がかかってしまうのですね。
添付ファイル
TP_popuration_AB.c4d
(478.12 KiB) ダウンロード数: 311 回
nob
 
記事: 43
登録日時: 火 3 18, 2014 8:23 pm

Re: ThinkingParticlesのサンプル

投稿記事by tofuji » 水 3 04, 2015 10:13 am

 添付ファイル見ましたが、汚すぎです。
 このプログラムが正常に動くとは思えません。
---

Toshio Fuji<gtofuji@gmail.com>

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

Re: ThinkingParticlesのサンプル

投稿記事by shortail » 水 3 04, 2015 6:00 pm

サンプル 拝見させていただきました。
私のパソコンデスク周辺のたこ足配線並です。
あれだけ複雑でも 動くもんなんですね。 
shortail
 
記事: 179
登録日時: 火 3 26, 2013 2:33 pm

Re: ThinkingParticlesのサンプル

投稿記事by nob » 木 3 05, 2015 5:46 pm

ですよねー

Xpressoで、スクリプト的なことを始めて、最初はわかりやすくて初心者には最適だったのですが。
使えてくると、色々と機能を乗せていくと、ちょっとしたことでも、画面の面積がどんどん取られてしまって、、、、

それでcoffeeとかPythonを勉強する切欠にもなっているので、それはそれで良かったのかも。。。。。
nob
 
記事: 43
登録日時: 火 3 18, 2014 8:23 pm


Return to ユーザフォーラム

オンラインデータ

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