スポンサーサイト

Category : スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Normal Mappingを使ってみる

Category : Tips
DAZ Studio 3(以下DS3)からSurfacesタブNormal Mappingという項目が加わりました。これはバンプマッピングやディスプレイスメントなどのように、テクスチャによってサーフェイスに凹凸を生じさせ、オブジェクトのディテールをアップさせる要素の一つです。
バンプマップがテクスチャの輝度によって凸凹の高さを表現しているのに対し、ノーマル(法線)マップはRGBの色で法線(サーフェイスの向きを示すベクトル)の方向を直接定義します。どちらもジオメトリは変化させず擬似的な表現になる(輪郭は変わらないのがわかります)のですが、ノーマルマップの方がよりダイナミックに見え方を変化させます。下の画像のようなテクスチャがノーマルマップです。
今回はDSでのノーマルマップの効果的な使い方を探ってみます。

ノーマルマップ テクスチャサンプル

※サンプルノーマルマップへのダウンロードリンクを追加しました。また、キャラクターモーフ込みのノーマルマップ作成について追記しました。
※LODデータについての項目を加筆・修正しました。

■LODデータ

ノーマルマッピングで検索してみると多く出てくるのが、ZBrushというソフトと、PS3やPCなどのゲームソフトの開発に関する情報です。どうやら、ローポリゴンモデルに対してノーマルマッピングを行いオブジェクトのディテールをアップさせて使うのは、ゲーム分野でよく使われている手法のようです。

ローポリゴンモデルで思い出したのがVictoria4フィギュアに用意されていたLODデータです。
これは標準のV4が約66K(66,000)ポリゴンで作られているのに対し、およそ1K、2K、4K、17Kそれぞれのポリゴン数にまで削減した4つのモデルデータです。DSアプリケーションに付属していましたが、最近のバージョンには付いていないのか、私の現環境には入っていませんでした。
ノーマルマップ V4LODメッシュ

2010年6月のバージョンアップにより、V4およびM4フィギュアにそのLODデータが付属するようになりました!!
新たな使い方をここにまとめておきます。

LODデータを読み込むには、フィギュア読み込み時にPower LoaderのMesh Resolutionタブ内、「Load Level(s) of Detail」にチェックを入れ、読み込むLODデータにもチェックしておきます。
Power Loaderについてはこの記事をご参照下さい。

また、メインメニューのEdit > Figure > Geometry > Add Level of Detailを実行してobjファイルを直接指定することでも読み込む事ができます。LODデータがインストールされている場所はフィギュアがインストールされているランタイムのGeometries\DAZPeopleフォルダ内に、V4用ならblMilWom_v4b_LODフォルダ、M4用ならblMilMan_m4b_LODフォルダが用意され、その中に入っています。

※DAZ Studio 4.5.1.56でチェックしたところ、PowerLoaderではLODモデルを追加することはできませんでした。
フィギュア読み込み後に上の通りにメニューから指定してやれば追加できます。
その際のオプションのFromは「Poser」を指定しAccept、次に出現するダイアログで名称(LOD4Kなど)を決めてやればOKです。
また、Dynamic LOD Settingsはありませんでした。

LODを読み込んだフィギュアは、ParametersタブのGeneral>Mesh Resolution欄でいつでもメッシュを切り替える事ができます。また、Dynamic LOD Settingsを使えば、カメラからの距離で自動に切り替わるようにしたり、3Dビューの操作中だけ切り替わるようにしたりもできてしまいます。
この仕組み、モーフを追加してもすべてのLODモデルに対して有効ですし、ポージングの制限などもないのでとても優秀です。Carraraなどでも使えるように今回のバージョンアップが入ったのでしょうね。

さて、今回はこのLODデータを使って、4KポリゴンのV4にノーマルマッピングを施すことで、66Kポリゴンのものへディテールを近づけようと思います。


■ノーマルマップの作り方

ノーマルマップを作るにはどうしたらいいのでしょうか?次の3つが候補に挙がりました。

(a) Photoshop(またはGIMP)のプラグインを使ってバンプマップから変換する。
(b) ZBrushを使って作成する。
(c) xNormalを使って作成する。

まず試したのは(a)なのですが、ビデオチップメーカーのnVidiaがPhotoshop用のプラグインを配布しています。しかし元がバンプマップなのでほとんどクオリティアップが見込めません。それに、ローポリとハイポリの間のディテール差を埋めるほどのテクスチャを作るのは無理そうです。次に(b)はソフトを持っていないのでパスしました。最後の(c)、なじみの無い名前ですが、ハイポリモデルとローポリモデルを参照してノーマルマップが作成できるフリーソフトです。今回はこのソフトを使ってみましょう。


■xNormalを使う

さっそくxNormalのサイトからソフトをダウンロードし、インストールしてみました。英語なのですがサンプルをいじっているだけでもノーマルマップの力を見ることが出来ておもしろいです。
xNormalのサンプルをDS3でレンダリングしたのが次の画像です。左がノーマルマップをバンプマップに変換したものを使ったもの、右がノーマルマップを使ったものです。
ちなみにこのモデル、肩から上のみでポリゴン数にして1.7K(Triangle)です。
ノーマルマップ サンプルdiablo
Model & Texture created by Pablo Hoyos.

66KのハイポリV4を参照して、4KのローポリV4に張り付けるノーマルマップを顔、胴、手足の3枚作成するのがこのソフトでの目的です。工程はこのようになりました。

(1) High definition meshesをクリック。リスト上で右クリックし、メニューからAdd meshesを選択、ハイポリモデル(blMilWom_v4.obj)を指定。
(2) Low definition meshesをクリック。リスト上で右クリックし、メニューからAdd meshesを選択、ローポリモデル(V4_LOD_4K.obj)を指定。リスト上のMatch UVsにチェックを入れる。
(3) Baking optionsをクリック。Output Fileに出力するノーマルマップのパスとファイル名を入力。さらにSizeで出力解像度を選択。Maps to render欄でNormal Mapにのみチェックを入れる。
(4) Generate Mapsをクリック。

ただしこのソフト、出力できるテクスチャは1枚のみのようです。そのため、UVを操作できる3Dモデラーでノーマルマップ製作用のモデルを作らないといい結果は出ません。私はMetasequoiaを使って、マテリアルグループを1つに統合し、それと共に必要ないパーツのUVは空いているスペースに避けました。また、オブジェクトも1つに統合して近接する頂点をくっつける事で、テクスチャのつなぎ目が浮き出さないようにしました。結果的には、顔、胴、手足の3枚のノーマルマップを作成するために、6つの変換用モデルを用意する必要がありました。
また、Sizeは(DSで使う上では)大き目のほうが良いようです。小さいとアップにした時に階段状になっているのが分かってしまいます。Displacementでも感じる事ですが、スムージングができればいいのにと思います。

Generate Mapsを実行した時に、「The highpoly model radius is less than two units(2.0), please scale it a bit up if you get bad results.」という警告が出ます。ハイポリモデルのスケールが小さいと、良い結果が出ないという意味のようです。この場合は、ハイポリ、ローポリ両方のリストのMesh scaleを4にすると警告が出なくなりました。


■フィギュアへのノーマルマッピング

それでは、作成したノーマルマップをDS3上で実際に使ってみましょう。
シーンにV4を読み込み、LODを適用します。ハイポリ(Base)の状態でレンダリングしたのが、この画像です。ライトのShadow Biasを1.2まで上げないと、ローポリの時にポリゴンの形が浮き出てきてしまいました。
ノーマルマップ V4 ハイポリ
Character:Victoria 4.2
Skin:V4 Ranger
Hair:Angel for V4
Shader:UberEnvironment2

LODを4Kに設定し、レンダリングするとこのようになります。細部のディテールが失われているのが分かります。ポリゴン数にしておよそ16分の1になってしまったので、しょうがないところです。
ノーマルマップ V4 ローポリ

4Kモデルにノーマルマップを適用します。SurfacesタブNormal Mapプロパティをクリックして、テクスチャを指定します。頭に1_のついたサーフェイスには顔のノーマルマップを、2_には胴のものを、3_には手足のものを使います。このプロパティ、バンプなどと違って調整プロパティなどがないのですが、その性質上必要ないのかもしれません。
ノーマルマップ プロパティ
ノーマルマップを適用してレンダリングした4Kモデルがこれです。
ノーマルマップ V4 ローポリ+ノーマルマップ
輪郭はそのままですが、細部のディテールが復活しているのが分かります。耳やまぶた、鎖骨、それに腹などが分かりやすいでしょうか。バンプマッピングだとここまではっきりとした凹凸は作れません。

せっかく製作したものですので、興味を持っていただけた方に試してもらえるように、ファイルをアップロードしました。
アイコン NormalMap_V4LOD4K_DS3
Download(SkyDrive)


追加調査として、今度はキャラクターモーフごとノーマルマップに落とすようにしてみました。
ノーマルマップ モーフ込みノーマルマップ
左から、ハイポリMHRainモーフ、ローポリモーフデフォルト、ローポリモーフデフォルト+MHRainノーマルマップ

さすがに輪郭や顔のパーツの配置などはごまかせませんが、ボディの起伏や鼻のフォルムなどは結構ハイポリに近づいている気がします。

ノーマルマッピングの効果は分かっていただけたでしょうか?ただ、ローポリモデルを使ってレンダリングすることはそう無いでしょうし、現状ノーマルマップを作成する手順が面倒すぎます。ZBrushのデータをDSへ持って来たいという場合には使えるかもしれませんね。実際にDSのノーマルマッピングを活用しているという方がいらっしゃれば、ぜひお話をお聞きしたいです。

というわけで、今回の記事はとりあえずの研究発表みたいな状態でお送りしました(゚Д゚;)
Decimatorプラグインが最終的にどういうものになるかはわかりませんが、できればノーマルマップの作成機能とかも付けて欲しいものです。



今回の画像の素材はこちら

Victoria 4.2 Starter Bundle

V4 Ranger

Angel for V4

AD MH Rain for V4
MH Rain for V4


関連エントリー


Comment

使わせていただいております

いつもお世話になっています。
なんと、ノーマルマップのファイルまで公開されており、とても感動です!
なので、はじめて書き込みに参りました。
いつも、ありがとうございます。

Re: 使わせていただいております

あたたんさんコメントありがとうございます。
私のブログを参考にして試してみた~。という方がいらっしゃるとこちらも助かります^^
記事を書いているときに心配になるのが、説明不足になっていないかという事なんです。なので、やってみてこんな風になった、ここが理解できなかったなどコメントなどを寄せていただけて、とてもありがたいです。
V4のポーズデータをmiki2に使った時に補正するスクリプト
http://kotozone.blog55.fc2.com/blog-entry-130.html
はお試しになりました?
非公開コメント

著書
カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 マテリアル DSシェーダ ライト DS基本 セール Genesis IBL アニメーション タブ解説 iray LuxRender Genesis2 スクリプト ダイナミッククロス ShaderMixer セットアップ Download レタッチ トゥーン バージョンアップ カスタマイズ SSS Photoshop ウェイトマップ NGM D-Form ERC ファー Miki2 IDL M4 大気 物理シミュレーション ボリューム Terrain パーティクル カラーコレクション Genesis3 モーフセット インスタンス アナグリフ V5 カメラ ロボット RAMDisk ダイナミックヘア Hexagon GIMP 3Dプリント SLG モーションキャプチャ Python K4 Linux 日本語訳 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

名前:
メール: 
件名:
本文: 

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。