fc2ブログ
3DCGについての初心者向けTipsなんか
鏡面反射について
2009-12-30 Wed 16:22
よそ様のブログで紹介して頂いたので、記念の鏡面反射の実験(記事書くの忘れてた…)
今まではアバウトでも使えていたんですが、調べてみてわかった事もチラホラ…

(とりあえず)
vidroで鏡や自動車のボディのような映り込みを表現したい場合は、マテリアルの「完全鏡面反射(Reflection)」を設定します。
今回は設定項目「Weight(RGB)」「テクスチャ(UV)」「相対屈折率(RGB)」の3つについて実験してみました。

実験用に球のオブジェクトと背景のHDRIを用意しました。
当たり前といえば当たり前ですが、マテリアルに反射を設定しても周りの空間にオブジェクトがなければ、映り込む像がないので鏡面効果が出ません。
最低でも鏡面設定したオブジェクトの他に一つくらいは映り込むモノを用意した方が良いでしょう。

ref01_0.png
とりあえず「拡散反射」Weight=0.8/0.8/0.8の白い球。

ref01_1-0.png
「完全鏡面反射」Weight=1/1/1 屈折率=0/0/0

これが完全なミラーの設定です。
この場合の屈折率=0は「屈折しない・反射しない」ではなく、全く逆の意味なので注意。
この設定にした時点で「鈍い鏡面反射」「拡散反射」「発光」の入力ボックスが選択不能になることからわかるように、材質が持つ色関係の設定を完全に排除して100%反射します。

※普段私たちが目にしている「物の色」は「光の各要素をどれだけ反射するか」によって決まるので、全ての光を100%反射する物体は色を持ちません(表現としてあってるかどうかはわかりませんが)。



屈折率のパラメタでミラーの強度を調整してみます。
以下、Weight=1/1/1で屈折率だけを変化させたサンプルです。

ref01_0.png ref01_1-1.png
左:鏡面反射なし、右:屈折率=1。ほとんど違いがわかりません…

ref01_1-2.png ref01_1-4.png ref01_1-8.png
左から屈折率=2、4、8

ref01_1-16.png ref01_1-32.png ref01_1-64.png

左から屈折率16、32、64
これ以上は屈折率=0と変わらないと思われます。

パラメタの設定範囲ですが、Weightは「0~1の実数」、屈折率は「実数」です。
鏡面の効果を調整する場合にWeightの調整をメインにするか屈折率をメインにするかですが、個人的には屈折率=0/0/0で固定してWeightを0~1の範囲で増減させた方が把握しやすいかなぁ…と思います。
まぁ、その辺りはいろいろ試して好きな方を使われるとよろしいかと。



たまには色つきのサンプルを出して見ます。

ref01_blue.png
青い球(拡散反射=0/0/0.8)。

ref01_blue_1-2.png ref01_blue_01-0.png
左:Weight=1/1/1 屈折率=2/2/2  右:Weight=0.1/0.1/0.1 屈折率=0/0/0
青い色のまま映り込みが入っています。

ref01_blue_1-8.png ref01_blue_06-0.png
左:Weight=1/1/1 屈折率=8/8/8  右:Weight=0.6/0.6/0.6 屈折率=0/0/0
どちらもミラーの強度が上がると色が薄くなります。



「テクスチャ(UV)」について

とりあえず定番のマスクとして
ref01_earth.pngsima.pngref01_earth2.png
反射させたい部分には白、させたくない部分には黒でマスクすると良いようです。

次に色つきテクスチャ
ref01_grassball.pngref01_glassball01.png=ref01_glassball02.png
中空のガラス球にカラフルなテクスチャで反射を指定したらシャボン玉に
…と思ったけどかなり微妙 (― ―;
もうちょっと設定詰めないとダメですな



ちなみにWeightや屈折率の値は三つ統一する必要はないので、変化をつけると面白い材質表現ができるかも。

ref01_blue_red_05-0.png ref01_black_red_01-16.png
拡散反射=0/0/0.8、Weight=0.5/0/0、屈折率=0/0/0 のピンク光沢の青い球
拡散反射=0/0/0、Weight=0.1/0/0、屈折率=16/0/0 の赤く輝く黒い金属
スポンサーサイト



別窓 | [シーン]について | コメント:0 | トラックバック:0
マテリアル「鈍い鏡面」サンプル
2009-11-16 Mon 12:17
「鈍い鏡面反射」
指数と反射率との関連ですが、設定のたびにトライ&エラーするのが面倒なので、簡単な見本を作りました。
ついでなのでその辺をアップします。

「鈍い鏡面反射」の「指数」
>鈍い鏡面反射の滑らかさ。接線方向の値と従法線方向の値をそれぞれ指定する(異方性反射)。この値が大きいほど物体表面は滑らかになり、小さいほど荒くなる。(以上、マニュアルより)
解説では「32」辺りで大理石の表面程度の滑らかさと言う事です。

specul_XY
「拡散反射」weight(RGB)=0.8、「鈍い鏡面」反射率(RGB)=1.0に固定し、指数のみを変化させてみた例。
天球光源はOFFで、平行光源を1つ置いています。
黒い部分は周囲の光源の無い空間が映っている部分、白は平行光源からの光が当たっている部分です。

値が大きくなるほど「鈍い」鏡面反射ではなく、「完全」鏡面反射に近い質感になっています
(映り込みの設定をしていないのでわかりづらいですが)。
このパラメタで3桁とかの無茶な設定をするよりは「完全鏡面反射」のパラメタを設定した方が良いでしょう。

specul_weight weight=0.0~1.0
specul32 反射率=0.0~1.0

指数32での比較例。
上:weight(RGB)=0.0~1.0、反射率(RGB)=1.0 / 下:反射率(RGB)=0.0~1.0、weight(RGB)=1.0
※左上0.0~右下1.0の0.1刻みで並んでいます。

「反射率固定で適用値が変化する場合」と、「適用値固定で反射率が変化する場合」では意味合い的には同じかな?
…と思ったのですが、結果は違いますね。
特に0.0~0.5の辺りの違いが顕著です。

今回は「鈍い鏡面反射」単品での実験ですが、weightの割合は「完全鏡面反射」や「拡散反射」とも関連してくるハズなので、そのうち実験してみます。



以下、設定のサンプル(weight=1.0、反射率0.0~1.0)

specul04指数4
specul08指数8
specul16指数16
specul32指数32
specul64指数64



まぁ、「艶」の見本程度に考えて下さい。
実際の質感はオブジェクト自体の他パラメタ(拡散反射色etc.)、光源の強度や位置、周囲のオブジェクトによって変わります。
別窓 | [シーン]について | コメント:0 | トラックバック:0
マテリアル 「発光」について
2009-08-18 Tue 07:25
メタセコのモデルをレンダする際に気をつけたいのが、材質設定の「自己照明」です。
表示のメリハリをつけるのに使いがちですが、メタセコから外に持ち出すとあまり良い影響がありません。

「自己照明」のパラメタはvidro上ではマテリアルの「発光」パラメタに変換されます。
その名の通り発光するオブジェクトとして扱われるため、陰影の効果が打ち消される、周囲光に乗算されて白飛びしてしまうetc.リアルに仕上がらない原因になります。

vidroでレンダ結果が白いとか思ったような色が出ないとかいうのは、光源設定がデフォになっているのと自己照明のせいだと思います。



さて、ここで少し実験をしてみましょう。
左は材質に「自己照明」が使用されたモデル(データのまま)。
右は材質の「自己照明」をOFFにし、「周囲光」0.6で統一したものです。
※モデルはかこみき様のフリーデータを使用

Lumi_base.png Lumi_006.png
(左:発光あり、右:発光なし)
平行光源でレンダ。



Lumi_base_ibl.png Lumi_006_ibl.png
天球光源でレンダ。



Lumi_base_ibl_npr.png Lumi_006_ibl_npr.png
NPR(デフォ設定)でレンダ。



Lumi_base_ibl_dark.png Lumi_006_ibl_dark.png
暗めの設定でIBLレンダ。
ちなみにどちらもフォトリアル設定w



試してみましたが、簡単にどちらが良い悪いとは言えませんねw
この娘が二次絵なのか、フィギュアなのかによっても見方が変わってくると思います。

しかし発光している物体というのは、太陽と人工物以外ではほとんど無いはずです。
リアル寄りの絵作りをするなら発光はOFFにすべきで、やはりトゥーン向けの設定になるでしょう。
ですが二次絵用であっても、やり過ぎると陰影が死んで平板な絵になってしまいます
(ベタ塗り系なら良いのでしょうが…)。

まぁ最終的に目指す絵のイメージや方向性によって使い分ければよいのかな、とは思います。
別窓 | [シーン]について | コメント:0 | トラックバック:0
| Aether 「哀愁の昼休みモデラー」のブログ |