日々適当

hibitekitou

いい才能

movie/anime |2009-11-10
楽画喜堂経由Tete

シンプルで動いてなんぼなこの内容に惚れました。
コメント ( 0 )|Trackback ( )

ポイントクラウドのプリミティブのID

xsi |2009-11-10
ポイントクラウドなプリミティブって、出しただけだと各粒子固有のIDは保有していないのですよね。
たとえば、空のポイントクラウドにAdd PointとかEmit from ~とかで発生させた粒子には固有のIDがふられるわけですけど、プリミティブには無い。それはマニュアルに明記されているのだけど、IDが使えたら便利なわけです。

下図はプリミティブなポイントクラウドに対して Get DataでIDを取得させてみたもの。IDが存在しないからノードが赤くなっちゃってます。



で、今日初めて知ったのですけど、Add Pointノードをつなぐと具合がよさそうなんですよ。



Add PointノードをICE Treeのエディタに配置するだけでSet Dataは黄色になるし、また、Add Pointのノードを開くとプリミティブのジオメトリをいじれます(上図はポイントクラウドのCubeの情報)。なかなかよさそうです。
ということで、Add PointノードをICE Treeに接続します。



おおぅ、見事IDが振られたことがわかるというものですよ。
ということで、ポイントのIDがわかったし、ポイントのポジションでもいじってみましょうか。ってことで、Set Point Positionノードを配置してみます。



配置してみました。まだ、つないでいません。しかし、…あれ?



各粒子のIDが8程増えちゃいました。

IDを初めて表示させたとき(3つ上の図の状態)、すでにIDの0から7が存在しない状態であり、Set Point Positionを加えたタイミングで8から15が消えて16から23番のIDの粒子が現れた、って状況になってしまっております。
ノードをいじるたびに数字が変化する(増えていく)ために、たとえば、Instanse Shapeノードを使ってIDとインスタンスを対応させるようなことをしたとき、ある位置にある粒子に割り振られたインスタンスシェイプが、ICE Tree内の何かノードをいじるたびに、その粒子には違うインスタンスシェイプが割り振られてしまうというようなことが起こってしまいます。

むぅ、困った。
何か言い方法があればいいのだけど、無理だとするなら、空のポイントクラウドに対してプリミティブを構築するツリーを組まないといけないわけで、面倒だなぁ…。

追記
コメントの方で、Get Point IDというコンパウンドをの存在を教えてもらいました。
これ使うと、IDとして利用できる整数値を取り出せる感じです。



上のような感じでツリーを組んでみて、Randomize around Value の値をアニメーションさせてみました。
Add PointでポイントにIDを発生させてやると、何せ、Randomize around Valueの値が変化するたびにその位置のポイントのIDの値が変わってしまうために、割り当てられている形状(IDを見て形状を設定している)がころころ変わってしまっていたのだけど、これは、同じポイントには同じ形状が渡り続けているらしいことが確認できました。

これは助かりますね。
コメントをくださった方に大感謝です。
コメント ( 2 )|Trackback ( )
  ・