-Cycles Displacement ノードを使ってみよう 2-

4. 複数パーツの作成

2日連続での公開になります。 Displace ノードを使った変形の、ちょっとだけ応用になります。

前回は、板から球に変形させるということをしました。
1つの連続したパーツから連続したパーツへの変形になるのですが、
Nodevemver の企画などを見てみる1枚の板から幾つかのパーツに分離したりしているものもありました。

そのような操作は、パーツとパーツの間を透明にすることで実現しています。
多分。(違うやり方ももしかするとあるかもしれませんが…)
デフォルトの板の座標を、4つのパーツに分けるノードを組んでみます。



最初の座標の範囲は [-1, +1] なので、数学の Fraction (少数部) を使うと、[0-1] の 4つのパーツになります。
この範囲は2倍して -1 すれば、[-1, +1] になりますので、ベクトルのマッピングを使ってそのように計算します。
色で、座標の変化の様子を見てみるとこのようになります。



そのままだと、板の Z座標の青成分 0 は 0 のまま、になりそうなのですが、境界ピッタリの場合にどちらに振り分けるのかルールで (> を使うか >= を使うかの違いでしょうかね)
そのままだと青成分が1になって見た目が変わってしまいます。
Z座標は使わないので本当は意味は無いのですが、青成分が0 の色(黄色)をかけて、色を合わせるようにしました。

これらを入力情報に使い、前回の球の変形ノードにつなぎます。
これで、球が4つになる…ような気がしますが、球を作るための式が同じなので、このままだと4つの球が同じ場所に重なることになってしまいます。
作る球の位置を4枚それぞれずらすために、今度は4枚の板がそれぞれ違う色(座標)に分割されるようなノードを組みます。



先ほどは、少数部を使って分割しましたが、今度は整数部を取り出す為に Ceil(天井)やFloor(床)を使います。
日本語は直訳ですが、ちょっと間が抜けたような雰囲気になりますね…

丁度、色の成分が -0.5 や 0.5 になるようにマッピングで調整しました。



作った球の位置を、さらにこの情報を使って平行移動すれば、4つの球が出来上がります。

座標の入力を差し替えます。

出来上がった球を平行移動します。
球のサイズもその分小さくするので、スケールを0.5しました。

これで形状は出来上がったのですが、残念ことに1枚の板をそのまま変形しているので、球と球の間にポリゴンが貼られてしまいます。


4つのパーツの境界を透明にしてやれば、間のポリゴンが見えなくなって、パーツが分離するようになります。
そこで、座標をほんの少し小さくして、一つのパーツの範囲が[-1.1, +1.1]になるようにしてみます。

そして、[-1, 1] の範囲だけ1になるように、Greter Than(大きい) や Less Than(小さい) と Minimum(最小)を組み合わせてやれば良いわけです。


ところで、ここで問題が一つあって、今まで Geometry(ジオメトリ)のPosition(位置)を使ってきたのですが、処理の順番が

1. 変形のための位置の評価、
2. 変形
3. マテリアルの評価のための位置の評価
4. マテリアルの決定


となっているので、透明にする場所を決めるために上のようなノードを組んでも、変形後の位置情報で計算してしまうので、今回みたいな場合はそのままでは使えません。

そこで、位置ではなくて、テクスチャ座標をつかうようにします。
これなら変形の前後で値が変わらないので、変形する前の位置で透明にする場所を決められます。



Generated ソケットの自動作成のテクスチャ座標は、[0, 1]の範囲なので、[-1, +1]の範囲に対応づけるために2倍して-1ずらす処理をしてから、同じような計算をします。
あとは、結果をアルファ値として利用すれば、球の間に貼られたポリゴンが透明になり、4つの球ができました。



最後に、やや大きめに全体図を乗せておきます。
それでも個々の文字を見るには少々狭いですが…


inserted by FC2 system