Pfragmentについて

CINEMA 4DおよびBodyPaint 3Dに関する一般的な議論や情報交換をするフォーラムです。
BUTTON_POST_REPLY
syota.yamamoto
記事COLON 15
登録日時COLON 2013年4月22日(月) 15:46

Pfragmentについて

投稿記事 by syota.yamamoto » 2013年4月22日(月) 15:51

ThinkingParticlesのPfragmentで断片化したパーティクルを
それぞれのパーティクルの寿命にそって透明度・マテリアルカラーを変更することって出来ますか?
オブジェクトを割り当ててる訳じゃないのでPshapeのオブジェクトの表示タグなどでは出来なさそうです。。

tofuji
記事COLON 828
登録日時COLON 2011年3月10日(木) 10:41
お住まいCOLON 東京都渋谷区

Re: Pfragmentについて

投稿記事 by tofuji » 2013年4月23日(火) 00:17

 ThinkingParticlesでマテリアルの透明度やカラーを変えたい場合、
一般的には「異なったマテリアルを適用した10〜20個ぐらいのオブジェクトを差し替える方法」で対応できます。

 しかし、PFragmentはポリゴンを内部で勝手に分割し、新規パーティクルに割り当てるので、
分割した後に別のオブジェクトを割り当てると、内部で分割されたポリゴンが失われてしまいます。
表面的には、「分割された断片」が「分割前の塊」に戻るように見えます。
 つまり、オブジェクトを差し替える方法が使えません。


 というわけで、以下の二つの方法を説明します。
 ただし、両方ともこの問題を完全に解決するものではありません。またそれなりに難しいです。


1. シェーダで対応する方法。

 「Proximal」シェーダを使うと、「ターゲットからの距離」で透明度やカラーを変更できます。
したがって、年齢と距離が対応している場合はこれで代用できます。

http://www2.11moon.com/sample_files2013 ... shader.mp4
http://www2.11moon.com/sample_files2013 ... shader.zip


2. MoGraphを使う方法。

 MoGraphの「Color」シェーダを使うと、「オブジェクトのカラー」で透明度やカラーを変更できます。
したがって、パーティクルの年齢とオブジェクトのカラーをリンクしてやれば、年齢で透明度やカラーを変更できます。

http://www2.11moon.com/sample_files2013 ... oGraph.mp4
http://www2.11moon.com/sample_files2013 ... oGraph.zip


 ここで、「オブジェクトのカラー」というのは、「オブジェクト -> 基本 -> 表示色」を意味します。
また「オブジェクト」というのは、「そのPGroupが適用された、パーティクルジオメトリオブジェクト」を意味します。

 ただし、パーティクルジオメトリオブジェクトは「パーティクルグループに対して一個」なので、
個々のパーティクルの寿命に応じて色を変えることはできません。一番最後のパーティクルの寿命がグループ全体の寿命となり、
それに対応した透明度やカラーでそのグループに含まれる全てのパーティクルが表現されます。

 もし、グループ内部で透明度やカラーをばらつかせたい場合は、グループを3〜5個に細分化し、
各グループに異なった設定をしてやれば、事実上問題ないレベルでばらつかせられると思います。
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html

syota.yamamoto
記事COLON 15
登録日時COLON 2013年4月22日(月) 15:46

Re: Pfragmentについて

投稿記事 by syota.yamamoto » 2013年4月24日(水) 01:11

ありがとうございます!
しきい値にアニメーションをつけていたのでProximalでやってみます!

BUTTON_POST_REPLY