CG News

LightWave用の Normal Maps プラグイン

LightWaveでNormal Mapsをレンダリングするプラグインが公開されています。

http://amber.rc.arizona.edu/lw/normalmaps.html

 

Normal Maps

 

概要:Lightwaveユーザーが法線マップを作成・使用するためのプラグイン。

このページで紹介するオリジナルのグランプオブジェクトは、David Maasによって作成されました。彼のAge with Dignityチュートリアルは、このオブジェクトを作成するための「ディテールアップテクニック」を紹介しています。

 

背景

最近、Lightwaveのユーザーで、バーチャルリアリティアプリケーション用に低解像度のオブジェクトを作成している人を手伝っています。もともとは高解像度オブジェクトを作成し、Surface Bakerとその「Bake Illumination」機能を使って、高解像度オブジェクトの詳細なシェーディングをキャプチャするUVテクスチャマップを作成していました。qemLOSS3を使ってオブジェクトの低解像度バージョンを作成した後、彼らは低解像度オブジェクトにベイクされたUVテクスチャマップを使い、高解像度オブジェクトと同じように詳細に見えるようにしました。このバーチャルリアリティ環境での主な欠点は、ライトの位置が変わったり、ライトの位置に対してオブジェクトの向きが変わったりしても、オブジェクトのシェーディングが新しい向きに合わせて変化しないことでした。そこで私は、一般的に法線マップと呼ばれているものに興味を持ったのです。

ATI Technologiesは、ハイレゾとローレゾの3Dオブジェクトを取得し、ハイレゾオブジェクトから法線マップを作成し、そのサーフェス法線をローレゾオブジェクトにマッピングするNormalMapperと呼ばれるツールとアプリケーションのセットをリリースしました。これは、単なるテクスチャ・マップではなく、マッピングされるサーフェス法線ベクトルなので、オブジェクトのシェーディングは、光とオブジェクトの向きによって変化します。これらの法線マップを実験したかったので、最初はLightwave用のNMFエクスポートプラグインを書きました。これは、NormalMapperユーティリティが必要とするファイル形式でした。そこで最初のテストでは、ハイレゾとローレゾのLightwaveオブジェクトをNMFフォーマットにエクスポートし、NormalMapperアプリケーションを使って、ATIのNMFViewアプリケーションでローレゾオブジェクトを表示できるノーマルマップTGAファイルを作成しました。これらの結果は非常に心強いものだったので、Lightwaveユーザーがより簡単に法線マップを作成し、それらの法線マップを使ってオブジェクトをレンダリングできるようにするために、以下のセクションで説明する法線マップ・プラグインの作成を進めました。

 

 

ノーマルマップ プラグイン

このリリースに含まれる4つのプラグインについて、ウェブページのドキュメントを書くのにあまり時間をかけませんでした。これらは主に、私が一緒に作業しているユーザーや、これらのプラグインを試してみたい人のための、プラグインの簡単な説明に過ぎません。幸運なことに、Basilio Noris (別名 dies-irae)が、プラグインの使い方について図解やより詳細な説明を含むPDFドキュメント(3ヶ国語)を作成してくれました。英語のマニュアル、フランス語のマニュアル、イタリア語のマニュアルが、他のライトウェーバーのために利用できるようになりました。dies-iraeさん、これらのドキュメントの作成にご尽力いただき、本当にありがとうございました!

 

NormalMapCreate

ATI NormalMapperアプリケーションをModelerプラグインに変換したものです。これは、Modelerから法線マップを作成する方法を提供し、NormalMapperのすべてのオプションのためのLWパネルインターフェイスを完備しています。

プラグインを実行する前に、Modelerの前景レイヤーに低解像度のオブジェクトを、背景レイヤーに高解像度のオブジェクトを配置してください。どちらのオブジェクトもポリゴンのみで構成されているはずなので、サブディビジョンサーフェスが含まれている場合はフリーズさせてください。

プラグインのLo-res Model ParametersセクションのImage typeパラメータで、LWの標準24ビットフォーマットのいずれかを選択できます。ユーザーがこれらのイメージセーバーをインストールしていない場合、プラグインはイメージを保存しようとしたときにそれを検出し、タルガセーバーをデフォルトにします(これはLWにビルトインされているので、常に利用できるはずです)。Lo-resのUVマップオプションは、ユーザーが法線マップ画像を作成するために使用するマップを決定するために使用したい既存のUVマップを選択することができます。UVマップは、ローレゾモデルのすべての頂点がマップのどこかに表現されている必要があります。何らかの理由でATI NormalMapperツールを使いたい人のために、ローレゾ(およびハイレゾ)オブジェクトをNMFフォーマットにエクスポートするオプションがあります。

ヒント:デフォルトでは、ATI NormalMapperルーチンはUVマップのポリゴンの境界領域を越えてレンダリングします。これは特にアトラスUVマップでは問題になることがあります。これは、それらの領域のサーフェス法線ベクトルが正しくないため、低解像度オブジェクトの最終的なレンダリングに不具合が現れます。この問題は、最初に 「Relative Gap Size 」をデフォルトの20%ではなく、約100%(またはそれ以上)に設定してローレゾオブジェクトのアトラスマップを作成することで解消できます。

Hi-res Model Parameters セクションの Bumpmap イメージはオプションです。Hi-resオブジェクトのバンプチャンネルを法線マップに含めたい場合は、あらかじめHi-resオブジェクトのサーフェスのバンプの高さを表すグレースケール画像を作成しておく必要があります。Hi-resオブジェクトのバンプマップが既存の単一画像である場合、NormalMapCreateプラグインを実行する前に、画像がImage Editorにロードされていることを確認し、NormalMapCreateインターフェイスのHi-res Model Parameterセクションから適切なUVマップを選択します。NormalMapCreateプラグインが実行される前に、バンプマップ画像がすでにImage Editorにロードされている必要があることを忘れないでください(少し不便なのは分かっていますが、画像を選択するためのLWpanelマクロは、ほとんどのLW画像プルダウンが可能にするように、そのプルダウンに「load image」 オプションを供給していませんでした。) 他のすべてのハイレゾパラメーターはかなり明白なはずです。

ヒント:ハイレゾオブジェクトのバンプチャンネルが画像、プロシージャ、グラデーションで構成されている場合、LayoutのSurface Bakerを使用して、使用可能な画像をベイクする方法がいくつかあります。BumpMapCreateプラグインはこれを助けるために書かれましたが、バンプテクスチャにアルファブレンドされたレイヤーがある場合、厳しい制限があります(このプラグインの使い方は後述します)。そこで、LayoutのSurface Baker機能を使ってディフューズチャンネルをベイクしてバンプマップを作成するもう1つの方法を紹介します(Surface Bakerシェーダにはすでにある程度慣れているはずですが、そうでなければNewtekのLW_Bakerを実行してSurface Bakerプラグインを理解しましょう): Surface Baking the Cowのチュートリアルを参照してください)。

  1. テクスチャエディタで、サーフェスのバンプチャンネルからすべてのレイヤーをコピーします。
  2. サーフェスのDiffuseパラメータを0%に設定します。
  3. コピーしたバンプレイヤーをディフューズチャンネルのテクスチャエディタに貼り付け、既存のレイヤーをすべてコピーしたバンプレイヤーに置き換えます。
  4. 次に、Bake Diffuseオプションだけを選択してSurface Bakerシェーダを追加します。
  5. フレームをレンダリングし、Surface Bakerは、あなたが望むバンプマップを与え、アルファレイヤーを含むすべてのブレンドモードを考慮するはずです。

Advanced Parametersセクションは、ATI NormalMapperアプリケーションと同じオプションをLightwaveユーザーに提供するだけです。このページでは、これらのパラメータについて説明するつもりはありません。これらのパラメータに本当に興味がある場合は、ATI NormalMapper ディストリビューションをダウンロードし、同梱の Readme ファイルを参照してください。ここで一つ小さな問題があります。NormalMapCreateプラグインは、ATI NMFViewアプリケーションで使用される座標空間であるタンジェント空間で法線マップを生成することができます。しかし、エクスポートしたNMFファイルとタンジェント空間の法線マップをNMFViewアプリケーションで使用したい場合、NMFViewで使用する前に法線マップのTGA画像を垂直方向に反転させる必要があります。この画像反転の問題は、ビューアのTarga読み込みの問題です。TGAのヘッダー部分には、ピクセルの順序とエンコーディングに関するいくつかのことを示す「タイプ」フィールドがあります。LightwaveのTGAは最終行から第1行の順番になっており、アプリケーションがそれに従って読み込まない限り、画像を「上下逆さま」に読み込んでしまいます。ですから、何も心配する必要はありません。NMFViewで使おうとする前に、画像を反転させるだけです(実際には、TGAを開いてからフォトショップでそのまま再保存すると、「タイプ」が変わり、ビューアが正しく読み取ります)。

NormalMapCreateプラグインによって作成された法線マップは、NMFViewアプリケーションと同様に、OpenGLまたはDirectXアプリケーションで使用できるようになりました。また、NormalMapShaderプラグイン(下記参照)により、LightwaveユーザーはLightwave内から法線マップ画像を使用することができます。

 

ノーマルマップカラー

このプラグインは、ノーマルマップ画像を作成する別の方法を提供します。Layoutでは、Surface Bakerシェーダプラグインとともに使用されます。ModelerのNormalMapCreateプラグインとは対照的に、このプラグインを使用することには利点と欠点があるので、両方の方法を試して、どちらが自分にとって最適な代替方法かを決めることができます。

LayoutのSurface Editorで、法線をベイクしたいハイレゾオブジェクトのすべてのサーフェスにこのシェーダーを追加します。このプラグインのインターフェイスはないので、サーフェスに追加するだけで十分です。次に、これらのサーフェスの1つに、Surface Bakerを以下のオプションで追加します。

  • Continuous Map: On
  • Bake Entire Object: On
  • Bake to: Image
  • Bake Color: Off
  • Bake Diffuse: Off
  • Bake Illumination: Off
  • Bake Shaders: On

UVマップ、解像度、イメージタイプを選択します(24ビットフォーマットが最適です。そうでない場合は、他のサーフェスベーカーと同様に、イメージを使用する準備ができたらアルファチャンネルを無効にする必要があります)。

ハイレゾオブジェクトをレンダリングすると、Surface Bakerはハイレゾオブジェクトのバンプチャンネルからバンプを含む法線マップを保存します。これはこのプラグインを使う利点の1つで、NormalMapCreateプラグインで作成した法線マップにハイレゾバンプを含めたい場合に必要だった追加のバンプマップを作成することなく、法線マップにハイレゾバンプが自動的に含まれます。

この方法の主な欠点は、マップがNormalMapCreateが使用するローレゾオブジェクトのUVマップ技術ではなく、ハイレゾオブジェクトのUVマップに基づいてベイクされることです。ローレゾとハイレゾ両方のオブジェクトのUVマップがあまり違わない場合、これは大きな問題ではありませんが、それでもNormalMapCreateで作成されたノーマルマップよりは精度が劣ります。この違いは、極端にポリ数の少ないオブジェクトを扱うときに最も顕著になります。

 

バンプマップ作成

NormalMapColorとまったく同じようにSurface Bakerで使用するシェーダプラグインです。このプラグインが作成する画像は、NormalMapCreate Modelerプラグインと一緒に使うことで、ハイレゾオブジェクトのバンプチャンネルをローレゾモデルの法線マップに追加することができます。これは、ハイレゾモデルのすべてのサーフェスに適用する必要があり、Surface Bakerと連動して、各ピクセルがハイレゾサーフェスのバンプハイト値となるグレースケール画像を保存します。

しかし、アルファブレンドされたレイヤーは、ベイクされたバンプに影響しません!これはLightwaveとプラグインSDKで利用可能なLWShaderAccessデータ構造内の問題です。このシェーダーがやっていることは、LWShaderAccess構造体のbumpHeightフィールドを読むことだけで、その値はアルファブレンデッドレイヤーによって変更されることはありません。しかし、アルファブレンデッドレイヤーを使っていない場合は、バンプマップを生成する方法が少し簡単になるかもしれないので、とりあえずこのプラグインを配布物に残しておきました。アルファブレンデッドレイヤーを使用している場合は、このWebページのNormalMapCreateセクションで説明されている5ステップのディフューズチャンネルベイクテクニックを使用してください。

 

ノーマルマップシェーダ

このシェーダを使うと、NormalMapCreate または NormalMapColor を使ってハイレゾオブジェクトから作成した法線マップを使ってローレゾオブジェクトをレンダリングすることができます。NormalMapShaderプラグインをLo-resオブジェクトのサーフェスの1つに追加した後、シェーダリストのエントリをダブルクリックすると、イメージマップの設定を変更するためのテクスチャエディタが表示されます。NormalMapCreateまたはNormalMapColorで作成した法線マップ画像を選択する必要があります。また、UV Projectionタイプと適切なUVMapを選択する必要があります。

NormalMap Texture Editorでこれらの値を設定したら、そのサーフェスのシェーダをコピーして、Lo-resオブジェクト上の必要な他のサーフェスに貼り付けることができます。あとは、Lo-resオブジェクトをレンダリングするだけで、サーフェスの法線は法線マップイメージに保存されたサーフェスの法線に基づいて変更されるはずです。

 

ノーマルマッププラグインのダウンロード

現在のところ、Windows版のプラグインのみが利用可能です。LW7でしかテストしていないので、LW6で動くかどうかはわかりません。もしMacユーザがこのプラグインが便利だと感じたら、そのプラットフォームへの移植を試みます。

コメントを残す