« 頂点上にパーティクルを発生させる。 | トップページ | 頂点上にパーティクルを発生させる。 その3。 »

2012年6月 6日 (水)

頂点上にパーティクルを発生させる。 その2。

前回の続きで、まずはパーティクルの方向を法線方向に向かせたかったので、なんとか自力でやってみたら、こんなになりました。



よくわからないままやっているので、頓珍漢だったり、無駄があったりしたら、どうか指摘して下さいませ m(_ _)m

Normal1b_2
クリックするとでかい画像。

早く他の人の植林系コンパウンドを見ればいいんだけど、そこで膨大なエネルギーを使う前に自前であがいておいた方が「正解」を見たときに理解も深まるであろう、などという理屈は言い訳です調べるのめんどくさいだけですすいません orz




一応、やりたいことはできているように見える。 オブジェクトを動かしても、回転やスケールをしても、どんな親子関係にあっても、パーティクルは常に頂点位置に追従し、かつ、頂点の法線方向に向かっているように見えます。

でもどんな場合でもその関係が崩れないのかの検証はもちろんまだ浅過ぎて、これで良いとは断言できません。 と言うより、あてずっぽうでやってみたらとりあえずの結果はOKに見える、というのが本当のところです。


まず疑問なのは、Aの流れでは、MAN の PointPosition をそのまんま AddPoint に突っ込めるのに、法線方向を取得する部分 PointNormal では、Bのように一度アレイを構築してやらねばならないように見えることです。 

A1 から AddPoint に直でつなげます。
A2 からも、画像にあるように可能です。 

PointPosition なら直でぶち込むことが可能で、PointNormal だと、直接つなぐのはダメということ? 

いや、それは何に突っ込むかによって変わるんですよね?  ううむ、どういう場合は直でOKで、どういう場合はアレイが要るのか、あるいはその背後にあるロジックをちゃんと理解していれば、こんなどうでもいい部分でつまずくこともなくなりそうです。

そもそも、「アレイを構築すればOK」という観察結果そのものに確証があるわけでもなんでもありません。 「それまでコンテクスト違いでつながらなかったのに、以前に教えてもらったツリーを参考に意味もわからず真似してみたら、つながっちゃった」 というだけ なんですよね。  つまり、背後にあるロジックを分かってないだけでなく、議論の前提としている「アレイを構築すればOK」がそもそも正しいのかどうかすら、分かってないのです。 すいません。 どなたかスカッと上手く説明してくれないかなあ。



あと、Cの部分、Direction to Rotation を使う妥当性というか理由も、あまり上手く言えません。 なんとなくこれを選んでつないでみたら法線方向に向いてくれた、というだけです。 後付けでもいいからその理由を解説できれば理解につながるのですが、残念ながらしどろもどろ・・・・。 そしてそのパラメータである UpVector は、デフォルト値のまま放置しています。どういじってもコーンのY方向(尖った方向)は変わらず、ロールだけが変わるように見えます。とりあえず深く考えずに放置しています。







それともうひとつ、法線方向なのですが、ビューポートの目ん玉アイコンで Normals をオンにすると青い線で法線が見えますよね。 その青い線の方向と、ICE が返す PointNormal の方向が、メッシュ変形後にズレているのは何故なのか。そこが疑問でした。

Normal

まず PointNormal を Show Value して ICE が返す法線方向を可視化します(図の赤印)。  すると緑色の矢印で法線方向がわかります。 メッシュをいじる前は、青い線と一致しています。


しかし、メッシュを変形させた後は、なぜかこの青い線と一致しません。ズレています。 パーティクルであるコーンは、緑色の矢印=つまり ICE が返す PointNormal の方と一致していますね。 まあ、ICE の法線情報を使って向きを決定しているのだから、当たり前です。



ともかく、なぜこの不一致が起きるのか、よくわかりませんでした。 不一致だからと言って何か不都合があるのかと言えばそうでもないんですけどね。 でもまあ、ICE が示す法線方向と、ICE とは別でインプリされている法線表示機能が示す方向にズレがあるのは、なんとも気持ち悪いものです。 っていうか、その仕組みを理解できていない自分が気持ち悪いということです。


ちなみに、メッシュを変形させた履歴が残っているせいで、変形前の Normal を拾ってしまっているのかしら? とか思ってメッシュを Freeze して MoveComponent オペレータが残ってない状態にしてみましたが、やはりズレたままなんですよね。




そもそも法線というものがどういう仕組みで計算されているのか、もっと言えばそもそも法線とはなんぞや、ということを俺は明快に説明できません。 つまり、根本の理解が欠如したまま表層だけでなんとかしようとしていることになります。それがいかんのかも知れぬ。

でも、まあ、あまり求道的なCGを目指してもなあ。。。。 俺はCGを生業にしているわけであって、CG道を歩いているわけではないからなあ。



とかなんとか。

そんなこたどーでもいいですねすいません。

ICE をもうちっと気持ちよく乗りこなしたいって思ってるだけでーす

life goes on.....




.

|

« 頂点上にパーティクルを発生させる。 | トップページ | 頂点上にパーティクルを発生させる。 その3。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 頂点上にパーティクルを発生させる。 その2。:

« 頂点上にパーティクルを発生させる。 | トップページ | 頂点上にパーティクルを発生させる。 その3。 »