![]() |
環境マップ | |
|
http://f11.aaa.livedoor.jp/~hige/index.php?%5B%5B%B4%C4%B6%AD%A5%DE%A5%C3%A5%D7%5D%5D |
(注意: このページより古い翻訳ページが有るので誤解しないよう注意 →環境マッピング )
←テクスチャ / 原文 / ディスプレイスメントマップ→
v2.31向け
Blenderが生成する光沢のあるサーフェイスはスペキュラハイライトを見せます。しかし、これらのスペキュラシェーダの皮肉な点は、それが光源しか感知しないという事です。特に、スペキュラシェーダのサーフェスは、鏡面のように光源の反射像を見せます。
これは、あなたには見えない光源に、カメラを直接向ける場合以外には意味があります!光が直接ではなく、スペキュラシェーダによって反射された場合にだけ、その光をハイライトとして見ることができます。その一方で、ランプ以外の、シーン中にある非常に明るく見える(多くの光をカメラに向かって反射している)オブジェクトは、そのハイライト内には現れません。
炎や太陽といった適当な光源のように見える、レンダリング可能なオブジェクトをシーン中に置くことで、直接見ることのできる光源を作るのは簡単な事です。しかし、それらの周辺のオブジェクトが、スペキュラハイライト内に現れないという事実に対する直接的な対策はありません。
一言で言えば、反射が欠けているのです。これが、私たちが環境マッピングのテクニックによって対処する種類の問題です。
私たちが、カメラをビューポートの定義に使うことでビューイングプレーンに到達する光をレンダリングするのと同じく、オブジェクトの表面に到達する光をレンダリングすることも可能です(そしてつまり、その光は最終的にカメラに向かって反射されます)。 Blenderの環境マッピングは、あらゆる点から6つの軸方向へ、シーンの立方体イメージマップをレンダリングします。6つの画像のタイルがRefl入力座標を使用してマッピングされると、光沢のある反射からそう見えるだろうと目が予想するとおりの、視覚的な複雑さを作り出します。
環境マップを作るときに最初にするべきことは、マップのビューポイントを設定することです。初めに、Empty(空)オブジェクトをシーンに追加し、反射面に対してカメラのスペキュラ位置に配置します。(これは、厳密に言えば、平面の反射面についてのみ可能です。)
理想的には、マップされるポリゴンのなす平面に関して、Emptyの位置がカメラ位置の鏡像になります。緻密なメッシュのポリゴンそれぞれに別々の環境マップを作ることは馬鹿げて難しいでしょうから、私たちは、人間の目が非常に騙されやすいという事実を利用します。
特に、比較的小さくて複雑なオブジェクトには、その中心近くにEmptyを置くだけで済ませる事ができます。そのEmptyを、環境マップのセッティング中に名前で参照するために、envと名づけます。
図21の配置を使って、反射性の球(Sphere)を反射性の平面(Plane)の上に作ります。
図21 環境マップの使用例
Emptyの'env'は正確にカメラの下、反射平面から3単位だけ離れて置かれています。これはその平面からのカメラの高さと同じです。
さて、いくつかの光源を配置し、球にマテリアルを設定せずに、平面を他のレイヤに移動します。例えば、平面をレイヤ2に、それ以外の全てのものをレイヤ1に置きます。
平面に低めのRefとSpecのマテリアルを設定し、テクスチャをチャンネル2に図22のようなパラメータで設定します。
図22 反射面のマテリアル
ReflマッピングとCmirエフェクトに注意してください。この例の後ほどでチャンネル1が必要になるので、チャンネル1を使わずに2を使います。(※訳注 CmirはMap Toパネル内)
図23 反射面の環境マップ設定(※訳注 多分ここはマテリアルボタンのテクスチャパートのパネルの図)
ここで、Textureボタン([F6])で新しく環境マップ(EnvMap?)として割り当てたテクスチャを定義します(図23)。Envmapパネル内のOb:フィールドが、環境マップを計算する対照となるEmptyの名前を含んでいることに注意してください。また、環境マップが計算される立方体の解像度(CubeRes?:)、最も重要な、Don't render layer:(レイヤをレンダリングしない)ボタンにも注意します。
環境マップはEmptyの位置から計算されるため、障害物の無いシーンの視界が必要になります。反射平面は球を完全に隠してしまうので、環境マップの計算時には'レンダリングできない'、とマークされているレイヤに置いておかなければなりません。
↓↓↓訳者補足↓↓↓ 原文の説明ではMapTo?パネルなど図(スクリーンショット)に載っていない設定が有るため、補足画像を作ってみました。 (不適切ならばこの部分は修正/削除して結構です)
↑↑↑訳注補足 ここまで↑↑↑
[F12]を押すとレンダリング処理が始まります。最初に、環境マップを構成する6つの異なった正方形のイメージが計算され、その後、球が平面上に反射した最終イメージが作られます。
図24 反射するサーフェイス上の球
より視覚的に魅力を与えるために、全シーンを取り巻く巨大な球を追加し、リアルな曇った世界に見せかけるために空(そら)のイメージをマッピングします。そして、球の中心に新しいEmptyを追加し、球をレイヤ3に移動します。次に、ちょうど平面に対して行ったのと同じように球に環境マップを与えます(ただし今回はレイヤ3をレンダリングしてはいけません!!)。
さて、環境をより面白いものにするためにシリンダをいくつか追加します。そして、[F12]を押す前に、平面のテクスチャに戻ってFree Dataボタンを押してください。これはBlenderに対して、新しく異なった環境のために、環境マップを再計算することを強制します。
今回のレンダリングは12個のイメージを処理します。それぞれの環境マップについて6つが計算されます。結果が図25です。マテリアルの少しの違いによって、球は平面よりも明るくなっています。
図25 反射平面上の反射球
ちょっと待って、問題があります。球は平面を反射していますが、平面は鈍いグレーの球を反射しています!これは平面の環境マップが球の環境マップよりも前に計算されたからです。球の環境マップが計算されるとき、平面はすでに反射を持っている一方、平面が計算されるとき、球はまだ鈍いグレーなのです。
これを直すため、平面と球の両方のテクスチャパートのEnvmapパネルのDepth数値ボタンに行き、1に設定してください。これは環境マップの再帰的な計算を強制します。それぞれの環境マップが計算され、そして'Depth'に設定された回数だけ常に代わるがわる再計算が行われます。結果は図26のように修正されます。
図26 複数の反射による反射平面上の反射球
ここで、もしもあなたがまだ平面のマテリアルの最初のテクスチャチャンネルがなぜ空のままなのか疑問でしたら…平面のマテリアルの最初のチャンネルに新しいテクスチャを追加してください。それをGlobにして、Norを0.25の強さで影響させます(図27)
図27. バンプマッピングのための追加のテクスチャ設定
この新しいテクスチャはStucciタイプにすべきです。Noise Sizeを0.15かそこらにしてください。ここでレンダリングを行うと、平面がさざめく水のようにに見えるでしょう(図28)。
図28. 複数の反射による反射平面上の反射球
テクスチャは順番に適用されるので、バンプマップは環境マップよりも前に置かなければいけません。これ以外の方法で反射に関することを行うと、反射が波で壊されて見えるでしょう。
テクスチャパートの適切なボタンを使って、環境マップを後の使用のために保存することができます。あなた自身で環境マップを作ることもできます。標準的には、図29のように、立方体に2行の3つのそれぞれがマップされる6つのイメージを作ることです。
図29 格納されている状態の環境マップ
ブレンダーは、図23にあるような3つの環境マップを提供します。
他の設定は:
←テクスチャ / ↑目次 / ディスプレイスメントマップ→
コメント