現実のサーフェイスは完全に滑らかであることもありますが、通常は凹凸があり完璧ではありません。サーフェイス上にこれらの隆起をつける最も基本的な方法は、バンプ マップを使用することです。
バンプ マップは、テクスチャに従ってシェーディング法線を動かして乱すことにより、オブジェクト上に凹凸をシミュレートします。これにより、隆起、尾根、へこみなどの視覚効果が生まれますが、 オブジェクトのジオメトリ自体は変わらないため、オブジェクトのシルエットや投影される影は変わりません。
A |
使用しているテクスチャ。 |
B |
トンボの胴体には昆虫のようなテクスチャが作成されていますが、バンプ マッピングが 0 に設定されているため、エフェクトは表れていません。 |
C |
このイメージでは、バンプ マッピングが有効で、バンプ係数の値が 20 に設定されています。正の値を入力すると外側に突き出し、負の値を入力すると内側にへこみます。 |
バンプ マップとして使用するイメージを作成、選択する際に、グレースケール イメージや白黒イメージを使うと作業が楽になります。つまり、目的のサーフェイス上でバンプ マップがどのように表示されるかをすばやく確認できます。
バンプの作成方法によっては、明るい領域が高くなったり低くなったりします。
バンプマップ ノードを使用する場合、明るい領域が高くなり、暗い領域が低くなります。
バンプマップ ジェネレータ ノードまたはテクスチャ シェーダのバンプ コントロールを使用する場合、明るい領域が低くなり、暗い領域が高くなります。
どちらの場合も、バンプマップ ノードのバンプ スケールの値を負に設定したり、バンプマップ ジェネレータ ノードまたはテクスチャ シェーダの係数の値を負に設定して効果を反転させることができます。
Render Tree でバンプマップ シェーダを使用して、テクスチャやカラーのオブジェクトのサーフェイスにバンプ マップを個別に適用することができます。ジェネレータにより、オブジェクト カラーとは別にオブジェクトのバンプ マップを制御できるようになります。
メニューから[ノード](Nodes) [バンプ](Bump) [バンプマップ](Bumpmap)を選択して、バンプマップシェーダをRender Treeの作業領域に追加します。
[Bumpmap]シェーダをマテリアル ノードの[Bumpmap](Bump Map)入力に接続し、イメージやシェーダ ツリーをバンプマップの[入力](input)に接続します。Render Tree は下図のようになります。
[バンプ スケール](Bump Scale)パラメータを調整しながら凹凸の強さを指定します。この係数を大きくするほど、テクスチャの凹凸が大きくなります。正の値を入力すると外側に突き出し、負の値を入力すると内側にへこみます。
必要に応じて、[サンプルの間隔](Sample Spacing)の値を調整します。この値を大きくするほどマップがぼやけ、小さくするほどくっきりと鮮明になります。
バンプマップ シェーダを使用する代わりに、別の方法でバンプ マップを適用することもできます。
特別なプロジェクションを作成している場合は、バンプマップ ノードの代わりにバンプマップ ジェネレータを使用することができます。イメージ クリップをバンプマップ ジェネレータに直接接続することができます。これは、バンプマップ ジェネレータには独自のプロジェクション オプションが備わっているためです。
バンプ マップをオブジェクトに適用するときに、オブジェクトの UV 座標の非連続性が原因で、レンダリングされたオブジェクトに不自然な部分を生じる場合があります。Bumpmap_generator シェーダには 2 つ目のプロジェクションを指定できるオプションがあり、その独自の UV 座標はバンプ マップの計算にだけ使用されます。これらのオプションは、[Bumpmap_generator]シェーダのプロパティ エディタの[バンプ バイアス計算用プロジェクション方法](Projection Method for Bump Basis Computation)オプション内で確認できます。
以下のパラメータで、バンプ単位の計算の UV 座標を制御します。
最初の[テクスチャ プロジェクション]リストは、使用するプロジェクションのタイプを指定します。次のいずれかを選択します。
[エクスプリシット UV: 変形されたサーフェイス用(シェイプ/エンベロープ)](Explicit UV: for deformed surfaces (shape/envelope)は、エクスプリシットテクスチャプロジェクションを使用します。このオプションを選択すると、2 番目の[オプション]リストが有効になり、そのリストからエクスプリシット プロジェクション タイプを選択できます。
[インプリシット UV: NURBS のみ](Implicit UV (Nurbs only)は、UVタイプのインプリシットプロジェクションを使用して、バンプマップを計算します。プロジェクションがインプリシットであるため、UV 座標はレンダリング時に計算されます。また、エクスプリシット プロジェクションの場合とは異なり、オブジェクトには追加されません。このプロジェクション タイプは、[NURBS]オブジェクトのみに機能します。
[インプリシット平面(XY/XZ/YZ)/球状/円柱状/ロリポップ](Implicit Planar (XY/XZ/YZ)/ Spherical/ Cylindrical/ Lollipop)は、指定したタイプのインプリシット プロジェクションを使用して、バンプ マップを計算します。プロジェクションがインプリシットであるため、UV 座標はレンダリング時に計算されます。また、エクスプリシット プロジェクションの場合とは異なり、オブジェクトには追加されません。
[Mix 8 Colors]シェーダを使用すれば、バンプ マップを扱うテクスチャのカラー値を無効にすることもできます。これは、バンプ マップの作成に複数のテクスチャを使用するときに役立ちます。
テクスチャ イメージ シェーダを使ってバンプ マップを作成する
テクスチャを適用し、そのテクスチャに組み込まれているバンプ マップ オプションを使用します。この方法ではバンプ マップを最もすばやく適用できますが、他の方法ほどには柔軟性がありません。たとえば、テクスチャのアルファ チャンネルにバンプ マップ情報が含まれている場合などに役立ちます。
[取得](Get) [テクスチャ](Texture)を選択して、オブジェクト、グループ、または階層にテクスチャシェーダを適用します。選択したテクスチャのプロパティ エディタが表示されます。
イメージ ファイルを選択する場合は、バンプ マップとして使用するイメージ クリップを選択します。使用可能になっているイメージ クリップから選択するか、または[新規]ボタンをクリックして新しいバンプ マップを作成します。
テクスチャ用にテクスチャ プロジェクションを定義するか([新規]ボタンをクリックします)、または[テクスチャ プロジェクション]メニューから既存のテクスチャ プロジェクションを使用します。
バンプマップをアクティブにするには、テクスチャシェーダのプロパティエディタで[バンプマッピング]セクションの[有効](Enable)を選択します。
イメージのアルファチャンネルを使用してバンプマップを制御するには、[アルファをRGBにコピー](Copy Alpha to RGB option)オプションを有効にします。これにより、[テクスチャ]シェーダは RGB 値ではなくアルファチャンネルを計算します。
[バンプ マッピングの係数](Bump Map Factor)を調整しながら凹凸の強さを決定します。
この係数を大きくするほどテクスチャの凹凸が大きくなります。正の値を入力すると外側に突き出し、負の値を入力すると内側にへこみます。
必要に応じて[ステップ](Step)値を調整します。[ステップ]値は UV オフセットを定義する値です。このオフセットの範囲内でオブジェクトのサーフェイスが計算され、サーフェイスの向きが判定されます。
使用するテクスチャが大きいほど、[ステップ]値を小さくする必要があります。一般的に、[ステップ]値の設定範囲は 0.001 から 0.05 までです。値を大きくするとバンプ マップの品質が低下し、多数のノイズが発生します。
法線マップは、赤、緑、および青の各チャネルが X、Y、および Z の各方向に対応するように、オブジェクトの法線をカラー値として格納するイメージです。法線マップ イメージの各ピクセルは、オブジェクト サーフェイス上の対応するポイントの向きを示します。この情報を使用して、精度の高いバンプ マップを作成できます。
法線マップ シェーダを使用すると、法線マップをバンプ マップとして使用できます。
オブジェクトの法線マップは、[RenderMap]プロパティ エディタ(「法線マップを生成する」を参照)、または[Ultimapper]ツールを使用して(「サーフェイス属性(Ultimapper)を転送する」を参照)作成できます。
メニューから[ノード](Nodes) [バンプ](Bump) [法線マップ](Normal Map)を選択し、[XSI Normal Map]シェーダをRender Treeのワークエリアに追加します。
[tspaceid]オプションから、法線マップ イメージのテクスチャ プロジェクションを選択するか、[新規](New)をクリックして、新しいテクスチャ プロジェクションを作成します。
[タンジェント](Tangents)オプションから、オブジェクトの正接(タンジェント)を格納する[頂点のカラー]プロパティを選択するか、[新規](New)をクリックして新しいプロパティを作成します。正接(タンジェント)はバンプ マップの計算に必ず必要です。
テクスチャが繰り返される場合に、バンプ マッピングが正常にレンダリングされない
反復するテクスチャを使用してバンプ マップを制御する場合は、バンプ マップの[ステップ]値を反復回数で除算し、サンプリングで必要な精度を確保する必要があります。
この問題を解決するには、スクリプトを使用して、現在の[バンプマッピング](Bump Mapping) [ステップ](Step)値を各軸の反復回数で除算します。
バンプマッピングはスケーリングされたオブジェクトでは正常にレンダリングされない
バンプ マッピングは、スケーリングの影響を受けます。バンプ マッピングされたオブジェクトをスケーリングしてからレンダリングすると、スケーリングの値が極端になるほど問題が大きくなるのがわかります。
この原因は、スケーリングによってオブジェクトのサイズはその親のセンターを基準にして増えるものの、そのポイントはオブジェクトのセンターからの距離が変化しないためデフォームされないことにあります。スケーリングは、ジオメトリを変更しないオブジェクトの拡大であると考えることができます。
その結果、拡大されたオブジェクト上で、バンプ マップの各ステップがカバーする割合が変わらないため、位相が粗いバンプ マップになります。
スクリプトを使用して、[バンプマッピング](Bump Mapping) [ステップ](Step)値をスケーリングされた各軸のスケーリング係数で除算します。
これで、バンプ マップが調整され、拡大されたオブジェクト上で各ステップがカバーする割合が小さくなるため、誤差が少なく、位相が細かいバンプ マップになります。
オブジェクトのスケーリングをフリーズできます。これで、その XYZ スケーリング値がその親のセンターを基準にして 1,1,1 にリセットされます。オブジェクトのポイントはデフォームされて補正され、オブジェクトのサイズは変化しないように見えます。
この場合は、[バンプマッピング](Bump Mapping) [ステップ](Step)値を調整する必要はありません。拡大されたオブジェクト上で各ステップがカバーする割合が小さくなるため、誤差が少なく、位相が細かいバンプマップになります。