クラスタから発射。
また ICE のメモ的なアレなんですがね。
オブジェクトをパーティクルのエミッタとした場合、オブジェクト全体ではなく、クラスタから発射させたい場合はどうしたらいいんだろう? などという、ごく基本的なことを知らないことに気付きましてね、今日もいつものように唖然としたわけです。
で、ちょっと調べてみたら、その昔は、発射してから消すという方式もあったようです。 ICE ではいつも死ぬほどお世話になっている m4g さんのブログにも、昔の記事でこんなのがありました。 2008年ですって。 そんな昔から ICE ってあったんだね。ヤヴァいよ俺 orz
その後、SI-Support Blog にこんな記事があって、これが一番良さそうに見えました。
ただし、コンパウンドの中身に潜っていかなければならないんですね。 潜りさえすれば、そこに必要なパラメータがあってクラスタでフィルタリングできるのですが、じゃあなんでこのパラメータを表に出さないのか(Exposeしないのか)、謎だと思いました。
とか思いながら、何気なくいつもの Emit From Geometry コンパウンドの PPG を見てみると・・・・
あれ? 表に出ているじゃないか。 ちゃんとクラスタなどでフィルタするパラメータが、そこにあります。
正確に追いかけてないので想像ですが、昔はコンパウンドの中にあって表に出ていなかったパラメータを、ユーザの要望が強かったので、最近のバージョンになって表に出したとか、そんな感じなんじゃないでしょうかね?
っていうか、アレか、昔は Emit From Surface だったもんね。 いつの間にかそれが Emit From Geometry に変わってたんだよな。 その時にこうなったのかな。
クリックするとでかい画像が出ます。
シーンファイル(2012)のダウンロード(ZIP)
目のところにポリゴンクラスタを作ってあります。 そのクラスタの IsElement アトリビュート、つまり 「そのポリゴンは、このクラスタに入ってますか?」 の属性を、フィルタのリファレンスとして指定してやるというものです。たぶん。 これに引っかかったポリゴンのみから、パーティクルが発射されます。
この記事はその部分をメモしときたかっただけですんで、ICETree のそれ以外の部分は何がどうというものでもありません。
ってことで、Emission Filter Parameters の Reference に、エミッタにしたいクラスタの IsElement
アトリビュートを指定、ということでファイナルアンサーにしてしまって良いでしょうか? 落とし穴ありますかね? 他にもっと良い方法ありますかね? どうかご教示ください m(_
_)m
問題は、マニュアルに、このパラメータを使えばクラスタで発射位置をフィルタできるとは明記されてない点ですね。
Emit From Geometry のヘルプ(2012)
このパラメータの説明は、「ウェイトマップ」が対象であるという意味のことが書かれています。 クラスタとは書かれていませんね。 これじゃクラスタにも使えるって、読んでもわからないでしょう。 そもそも、ウェイトマップでどういうことができるのかすら、この表記じゃ分かんないなあ。 まあ、所詮 XSI のマニュアルですからね、そんなに親切なわけないですよね。
ちなにみ、最新のマニュアルではどう書いてあるのか確かめようと思って 2013 のヘルプを見てみたら、
Emit From Geometry のヘルプ(2013)
ウェイトマップ「など」 に使えると書いてあります。
おおっ、「など」 が付いたぞ! 表記がバージョンアップしてる! (゚∀゚)
・・・・まあ、なんつうか、「など」 なんて付けても相変わらず意味不明、と言うか更にも増して意味不明ですねぇw この 「など」 に Cluster.IsElement を含めているつもりなのかなあ・・・?w クラスタから発射するなんて、いかにも需要ありそうなことなので、ズバリそう書くとか、サンプルとして出しておけばいいのになあ。 まあ、所詮プラグイン扱いのソフトウェアのマニュアルですからね、そんな親切なわけが
っていうか、上のリンクの 2013 の方、まさにその Reference パラメータの説明ですが、「属性はジオメトリ全体における放出の速度をコントロールするために使用されます」 って書いてありますね。 は? 速度? 量(程度)じゃなくて? 英語のマニュアルを確かめたら、Rate って書いてありますよ? Rate って日本語にすると速度なんですか? 嘔吐デスク様?
まあ、所詮われわれ下層の者どもが使うソフトウェアのマニュア
お、とか言ってたらこんな親切なヘルプのページが・・・・
ICE パーティクル放出をフィルタする
なるほど、ウェイトマップやテクスチャマップで発射場所をフィルタする例が挙げられていますね。 そう、こういうサンプルをまさに載せて欲しいんですよ。やればできるじゃないですか嘔吐デスク様。
でもこれだけ豊富にサンプルを載せておきながら、なぜそこにクラスタから発射という我々下層の者どもでも思いつきそうな基本的な例が無いのかw
まあ、所詮
.
| 固定リンク
コメント
Emit from Geometry にいつの間にそんな項目が…(昔からありましたっけw)?
コンパウンドの中身をみると、Add Pointノードに繋がる発生位置は Generate Sample Set を使っていて、そのノードのフィルタリング部分が Emit from Geomerty のパラメータとして見えているという事のようです。
そんなわけで、ちょっと前にフィルタリングのためのカスタム属性を設定してのテストをしてみたのが以下でございます。
http://blog.goo.ne.jp/m4g/e/a11cf064a2b03bd431dd9e22c108c9be
しかし、昔は無駄なことをしておりましたorz (自分の仕事じゃないけど、人の仕事のためにくんだコンパウンドが、リンクしていただいた「発生させてから消す」というやり方で、今考えるとその人に非常に申し訳ないことをしたなぁ、と )
投稿: m4g | 2012年7月 6日 (金) 09時29分
どうもどうも。KCityは今日も快適ですか。ICEと関係ないけど。
>Emit from Geometry にいつの間にそんな項目が…(昔からありましたっけw)?
記事中に書いたように、昔はなかった、というか、Emit From Geometry が無くて Emit From Surface だった時代はなかったはずで、Emit From Geometry が出てきた時に最初からこの項目があったかどうかは、忘れました。どうでしたっけね。
>コンパウンドの中身をみると、
>Add Pointノードに繋がる発生位置は Generate Sample Set を使っていて、
>そのノードのフィルタリング部分が Emit from Geomerty のパラメータとして
>見えているという事のようです。
はい、記事中に載せた SI-Support Blog のリンクが、まさにそれです。コンパウンドに潜って行って、Generate Sample Set のフィルタにクラスタの IsElement を指定しろという内容だったので、それを見てクラスタでフィルタできること自体は分かったんですが、記事中に書いたように「じゃあなんでそのパラメータを Emit From Geo コンパウンドの表パラメータとして Expose しないのか謎」というのが、まさにこの Generate Sample Set の中のフィルタリングの部分のことです。
そう思って、じゃあ自分で Expose してコンパウンドにでもするかな、とかなんとか考えながら Emit From Geo を眺めてたら、あれ? もう表に出てるじゃん? という話を書いたのが、この記事なのでした。
m4gさんのブログを、クラスタとかそういうキーワードで検索してみたところ、その Generate Sample Setの記事には巡り合えず、出してから消す方式の記事に巡り合いました。海外の記事を見ても、ICE初期の頃はみなさんそうしていたようですね。
しかし、m4g さんが emitFlag という独自アトリビュート(ブール)を Generate Sample Set に食わせてフィルタした記事を俺が見たとしても、ならクラスタの IsElement でも可能だな、という発想にはまず至りませんw 今こうしてこの会話をした後ならわかりますが、次に似たような問題が出てきた時にも、まだこの感じを応用できない気がしますw まだまだ体が ICEy になってないです。
ICEy になるためには、ガッツリ ICE な仕事を連続でやらないといけないんですが、なかなかそうもいかず・・・・
投稿: 潤樹 | 2012年7月 6日 (金) 11時33分