バンプマップ

 
 
 

現実のサーフェイスは完全に滑らかであることもありますが、通常は凹凸があり完璧ではありません。サーフェイス上にこれらの隆起をつける最も基本的な方法は、バンプ マップを使用することです。

バンプ マップは、テクスチャに従ってシェーディング法線を動かして乱すことにより、オブジェクト上に凹凸をシミュレートします。これにより、隆起、尾根、へこみなどの視覚効果が生まれますが、 オブジェクトのジオメトリ自体は変わらないため、オブジェクトのシルエットや投影される影は変わりません。

A

使用しているテクスチャ。

B

トンボの胴体には昆虫のようなテクスチャが作成されていますが、バンプ マッピングが 0 に設定されているため、エフェクトは表れていません。

C

このイメージでは、バンプ マッピングが有効で、バンプ係数の値が 20 に設定されています。正の値を入力すると外側に突き出し、負の値を入力すると内側にへこみます。

バンプ マップ イメージを選択する

バンプ マップとして使用するイメージを作成、選択する際に、グレースケール イメージや白黒イメージを使うと作業が楽になります。つまり、目的のサーフェイス上でバンプ マップがどのように表示されるかをすばやく確認できます。

バンプの作成方法によっては、明るい領域が高くなったり低くなったりします。

  • バンプマップ ノードを使用する場合、明るい領域が高くなり、暗い領域が低くなります。

    A

    ライトの位置を確認します。

    B

    X、Y 方向に 5 回反復されたバンプ マップ テクスチャ

    C

    テクスチャが白い円形であるため、テクスチャを反復させるたびにそこが盛り上がり、周囲の黒い領域は沈みます。

    D

    X、Y 方向に 5 回反復されたバンプ マップ テクスチャ

    E

    テクスチャが黒い円形であるため、テクスチャを反復させるたびにそこが沈み、周囲の白い領域は盛り上がります。

  • バンプマップ ジェネレータ ノードまたはテクスチャ シェーダのバンプ コントロールを使用する場合、明るい領域が低くなり、暗い領域が高くなります。

どちらの場合も、バンプマップ ノードのバンプ スケールの値を負に設定したり、バンプマップ ジェネレータ ノードまたはテクスチャ シェーダの係数の値を負に設定して効果を反転させることができます。

レンダツリーのバンプマップの作成

Render Tree でバンプマップ シェーダを使用して、テクスチャやカラーのオブジェクトのサーフェイスにバンプ マップを個別に適用することができます。ジェネレータにより、オブジェクト カラーとは別にオブジェクトのバンプ マップを制御できるようになります。

Render Tree でバンプ マップを作成するには

  1. バンプ マップを適用するオブジェクトを選択します。

  2. Render Tree を開き(7キーを押す)、コマンドバーの[更新](Update)ボタンをクリックします。

  3. メニューから[ノード](Nodes) [バンプ](Bump) [バンプマップ](Bumpmap)を選択して、バンプマップシェーダをRender Treeの作業領域に追加します。

  4. [Bumpmap]シェーダをマテリアル ノードの[Bumpmap](Bump Map)入力に接続し、イメージやシェーダ ツリーをバンプマップの[入力](input)に接続します。Render Tree は下図のようになります。

       
  5. [Bumpmap]をダブルクリックして、プロパティ エディタを開きます。

  6. [バンプ スケール](Bump Scale)パラメータを調整しながら凹凸の強さを指定します。この係数を大きくするほど、テクスチャの凹凸が大きくなります。正の値を入力すると外側に突き出し、負の値を入力すると内側にへこみます。

  7. 必要に応じて、[サンプルの間隔](Sample Spacing)の値を調整します。この値を大きくするほどマップがぼやけ、小さくするほどくっきりと鮮明になります。

バンプ マップを追加する

より正確またはより詳細なバンプ マップを作成するために、2 つ以上のバンプ マップを同じオブジェクト上で結合する必要があることがあります。これは、2 番目のバンプ マップの追加と同じように簡単にできます。

複数のバンプ マップを組み合わせるには、別のバンプマップ ノードをバンプマップの[バンプ](bump)入力に接続します。最初のノードは、2 番目のノードを呼び出す前に法線を変形させます。これにより、たとえば、あるマップを粗い効果用に、また別のマップを詳細なノイズ用に使用するなど、バンプをより詳細かつ正確に作成することができます。

   

その他のバンプ マップの適用方法

バンプマップ シェーダを使用する代わりに、別の方法でバンプ マップを適用することもできます。

  • バンプマップ ジェネレータを使用して、そのプロジェクション オプションを利用することができます。

  • イメージ シェーダの組み込みバンプ コントロールを使用できます。たとえば、テクスチャ イメージのアルファ チャンネルにバンプ マップ情報が含まれている場合などに役立ちます。

バンプ マッピングに対して異なるプロジェクションを使用する

特別なプロジェクションを作成している場合は、バンプマップ ノードの代わりにバンプマップ ジェネレータを使用することができます。イメージ クリップをバンプマップ ジェネレータに直接接続することができます。これは、バンプマップ ジェネレータには独自のプロジェクション オプションが備わっているためです。

バンプ マップをオブジェクトに適用するときに、オブジェクトの UV 座標の非連続性が原因で、レンダリングされたオブジェクトに不自然な部分を生じる場合があります。Bumpmap_generator シェーダには 2 つ目のプロジェクションを指定できるオプションがあり、その独自の UV 座標はバンプ マップの計算にだけ使用されます。これらのオプションは、[Bumpmap_generator]シェーダのプロパティ エディタの[バンプ バイアス計算用プロジェクション方法](Projection Method for Bump Basis Computation)オプション内で確認できます。

以下のパラメータで、バンプ単位の計算の UV 座標を制御します。

  • [有効](Enable)は、バンプ単位の計算のプロジェクションを有効にします。

  • 最初の[テクスチャ プロジェクション]リストは、使用するプロジェクションのタイプを指定します。次のいずれかを選択します。

    • [エクスプリシット 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]シェーダを使用すれば、バンプ マップを扱うテクスチャのカラー値を無効にすることもできます。これは、バンプ マップの作成に複数のテクスチャを使用するときに役立ちます。

テクスチャ イメージ シェーダを使ってバンプ マップを作成する

テクスチャを適用し、そのテクスチャに組み込まれているバンプ マップ オプションを使用します。この方法ではバンプ マップを最もすばやく適用できますが、他の方法ほどには柔軟性がありません。たとえば、テクスチャのアルファ チャンネルにバンプ マップ情報が含まれている場合などに役立ちます。

バンプマップを作成するには

  1. バンプ マップを適用するオブジェクトを 1 つ以上選択します。

  2. [取得](Get) [テクスチャ](Texture)を選択して、オブジェクト、グループ、または階層にテクスチャシェーダを適用します。選択したテクスチャのプロパティ エディタが表示されます。

    イメージ ファイルを選択する場合は、バンプ マップとして使用するイメージ クリップを選択します。使用可能になっているイメージ クリップから選択するか、または[新規]ボタンをクリックして新しいバンプ マップを作成します。

  3. テクスチャ用にテクスチャ プロジェクションを定義するか([新規]ボタンをクリックします)、または[テクスチャ プロジェクション]メニューから既存のテクスチャ プロジェクションを使用します。

    レンダ領域を開いておけば、テクスチャがオブジェクトに適用されたことがわかります。

  4. バンプマップをアクティブにするには、テクスチャシェーダのプロパティエディタで[バンプマッピング]セクションの[有効](Enable)を選択します。

  5. イメージのアルファチャンネルを使用してバンプマップを制御するには、[アルファをRGBにコピー](Copy Alpha to RGB option)オプションを有効にします。これにより、[テクスチャ]シェーダは RGB 値ではなくアルファチャンネルを計算します。

    • テクスチャにアルファ チャンネルがない場合は、シェーダが RGB チャンネルをアルファ チャンネルに変換します。

    • イメージにアルファ チャンネルが存在していても、値が指定されていなければ効果は見えません。

  6. [バンプ マッピングの係数](Bump Map Factor)を調整しながら凹凸の強さを決定します。

    この係数を大きくするほどテクスチャの凹凸が大きくなります。正の値を入力すると外側に突き出し、負の値を入力すると内側にへこみます。

  7. 必要に応じて[ステップ](Step)値を調整します。[ステップ]値は UV オフセットを定義する値です。このオフセットの範囲内でオブジェクトのサーフェイスが計算され、サーフェイスの向きが判定されます。

    使用するテクスチャが大きいほど、[ステップ]値を小さくする必要があります。一般的に、[ステップ]値の設定範囲は 0.001 から 0.05 までです。値を大きくするとバンプ マップの品質が低下し、多数のノイズが発生します。

法線マップを使ったバンプマッピング

法線マップは、赤、緑、および青の各チャネルが X、Y、および Z の各方向に対応するように、オブジェクトの法線をカラー値として格納するイメージです。法線マップ イメージの各ピクセルは、オブジェクト サーフェイス上の対応するポイントの向きを示します。この情報を使用して、精度の高いバンプ マップを作成できます。

法線マップ シェーダを使用すると、法線マップをバンプ マップとして使用できます。

オブジェクトの法線マップは、[RenderMap]プロパティ エディタ(「法線マップを生成する」を参照)、または[Ultimapper]ツールを使用して(「サーフェイス属性(Ultimapper)を転送する」を参照)作成できます。

法線マップからバンプ マップを作成するには

  1. バンプ マップを適用するオブジェクトを選択します。

  2. Render Treeを開き(7キーを押す)、コマンドバーの[更新](Update)ボタンをクリックします。

  3. メニューから[ノード](Nodes) [バンプ](Bump) [法線マップ](Normal Map)を選択し、[XSI Normal Map]シェーダをRender Treeのワークエリアに追加します。

  4. [XSI Normal Map]シェーダを[Material]ノードの[Bump Map]入力に接続します。

  5. [XSI Normal Map]をダブルクリックして、プロパティ エディタを開きます。

  6. [マップ](Map)オプションから、バンプ マップに使用する法線マップ イメージを選択します。

  7. [tspaceid]オプションから、法線マップ イメージのテクスチャ プロジェクションを選択するか、[新規](New)をクリックして、新しいテクスチャ プロジェクションを作成します。

  8. [タンジェント](Tangents)オプションから、オブジェクトの正接(タンジェント)を格納する[頂点のカラー]プロパティを選択するか、[新規](New)をクリックして新しいプロパティを作成します。正接(タンジェント)はバンプ マップの計算に必ず必要です。

    ヒント:[Render]ツールバーから[取得](Get) [プロパティ](Property) [タンジェント](Tangents)を選択すれば、オブジェクトの正接(タンジェント)のセットをいつでも作成できます。

バンプマップのトラブルシューティング

テクスチャが繰り返される場合に、バンプ マッピングが正常にレンダリングされない

反復するテクスチャを使用してバンプ マップを制御する場合は、バンプ マップの[ステップ]値を反復回数で除算し、サンプリングで必要な精度を確保する必要があります。

この問題を解決するには、スクリプトを使用して、現在の[バンプマッピング](Bump Mapping) [ステップ](Step)値を各軸の反復回数で除算します。

バンプマッピングはスケーリングされたオブジェクトでは正常にレンダリングされない

バンプ マッピングは、スケーリングの影響を受けます。バンプ マッピングされたオブジェクトをスケーリングしてからレンダリングすると、スケーリングの値が極端になるほど問題が大きくなるのがわかります。

この原因は、スケーリングによってオブジェクトのサイズはその親のセンターを基準にして増えるものの、そのポイントはオブジェクトのセンターからの距離が変化しないためデフォームされないことにあります。スケーリングは、ジオメトリを変更しないオブジェクトの拡大であると考えることができます。

その結果、拡大されたオブジェクト上で、バンプ マップの各ステップがカバーする割合が変わらないため、位相が粗いバンプ マップになります。

この問題を解決するには、以下の 2 つの方法があります。

  • スクリプトを使用して、[バンプマッピング](Bump Mapping) [ステップ](Step)値をスケーリングされた各軸のスケーリング係数で除算します。

    これで、バンプ マップが調整され、拡大されたオブジェクト上で各ステップがカバーする割合が小さくなるため、誤差が少なく、位相が細かいバンプ マップになります。

  • オブジェクトのスケーリングをフリーズできます。これで、その XYZ スケーリング値がその親のセンターを基準にして 1,1,1 にリセットされます。オブジェクトのポイントはデフォームされて補正され、オブジェクトのサイズは変化しないように見えます。

    この場合は、[バンプマッピング](Bump Mapping) [ステップ](Step)値を調整する必要はありません。拡大されたオブジェクト上で各ステップがカバーする割合が小さくなるため、誤差が少なく、位相が細かいバンプマップになります。