日々適当

hibitekitou

一年越しの宿題を

xsi |2006-01-05
およそ1年前にやっていた仕事で、球の表面に小さな球がびっしりと並んでいるようなオブジェクトを作りました。
ご想像のとおり、割と重いオブジェクトになるので、背景になるものはディスプレイスメントで済まそうと、そのためのテクスチャを作ろうと思ったわけです。

そこで、小さな球の各ポイントからベースとなる球の中心までの距離を元に、白黒の濃淡で表現できれば、後はそれをレンダーマップで球にマッピングしてやれば出来上がると考えました(MOMOで助力を頼んだりしたのね)。

でまぁ、ワールドの原点からの距離は出せたのだけど、「球の中心から」という命題をついに達することが当時は出来ませんでした(ワールド原点からである以上、球が原点から動いたら困っちゃうのよね。まぁ、当時の仕事をこなすとき、ワールド原点からであっても問題なかったので、仕事は完了させることが出来たんだけど)。

ってことで、今回改めて取り組んでみました。

とりあえず、ワールドの原点から評価する点へのベクトルは Vector state の Intersection point で得られます。
Vector state を Vector math scalar につなぎ、Vector math scalar の Operation を Length of V1 にしたれば、ワールドの原点への距離が得られるってわけです。

で、です。命題を達成するには、座標系の変換、ってのをしてやればよかったのですね。つまり、Vector state と Vector math scalar の間に Vector coordinate convertor をはさんでやる。Vector coordinate convertor の Type を Point に、 Transform を to Object にしてやれば、命題の達成です。下図は、上の並びが命題達成版。下が不達成版。

Render Tree


下図、結果。
上が命題を達成したもの。オブジェクトの位置に関係なくオブジェクトセンターからの距離に応じた濃淡がついている。下はワールドの原点からの距離しか見ていないため、ワールドの原点にいるもの意外は白く飛んでしまっている。

結果


識者の方には「けっ」って内容だろうけど、一年越しの宿題を片付けた気分はちょっといいですね(^^;
コメント ( 0 )|Trackback ( )

角度に応じて色を変化

xsi |2006-01-05
まぁ無駄な思考ではあるんだけど(苦笑)
Vector State を理解するための第一歩としてやってみております。

やることは、カメラからのレイと法線の角度に応じて色が変化する、みたいな。
素直にIncidenceを使っとけ、みたいな。

とりあえず、単純にカメラと法線のなす角度だけを見る、ってのを考えてみました。

ベクトル同士の角度は、arccos(A・B/|A||B|)っす。つまり、二つのベクトルの内積を二つのベクトルの大きさをかけたもので割る、ってところですね。

問題は、Render Tree 上で三角関数ってどうやって扱うの?、ってところなんですが、今回の件については、それが無くても何とかなるので、分からないままです。

結果、以下のような感じになりました。

RenderTree例


MaterialにつながるGradientのinputに0度から90度の角度に対応する0から1の値をぶち込めばいいので、実際に角度を出さなくてもいい=三角関数は使わなくてもいい、ってことです(cosの値は-1から1の値をとり、絶対値を取ればそれは0から1だから。ん?しかしリニアな値になるのかな…?。ま、いいや)。

以下、レンダリング例。

レンダリング例


Cellを使ってディスプレイスメントさせた状態の球に適用してあります。
コメント ( 0 )|Trackback ( )
  ・