2014年08月21日

ノーマルマップとは!part3 さらに深く知ろう!

Part2では簡単な作り方を書きましたが、今回はそれぞれの工程で陥りやすいところをあげていきたいと思います。もし試してみてうまくいかなかった場合、このなかに回答があるかもしれません。
後半はマップのクオリティを上げるための方法を紹介します。

モデルファイルの出力時の設定
今回はOBJモデルを使用して書き出しましたが、
OBJの「法線」の設定によってはノーマルマップがうまく焼けないことがあります。
オブジェクトの種類によって書き出す法線の設定を試行錯誤する必要があると思います。
経験上比較的どんなものでもまずまずきれいにでるのがソフトエッジ
ロボや機械などの面の精度を特に出したいものにはハードエッジかと。
ハードエッジへの焼きこみはUVの段階から工夫が必要な上、後のテクスチャ作業がやりにくい場合もあるので
注意が必要です。
ちなみにxNormal上で無理やり法線の設定を上書いて出すこともできます。
export.jpg
しかし、これを使い法線を変更したモデルでベイクしてしまうと、元のモデルに貼り付けた時に結果がよろしくないことになります。おすすめしません。Use exported normalsにしてください。
・OBJモデル書き出しポリゴン数の限界
ZbrushからObjモデルを書き出す場合、現状32bit環境では出力ポリゴン数に限界があります。
それぞれのマシンの性能にもよるとはおもいますので、事前にどれ位が限界は簡単なモデルでテストすることをおすすめします。
一生懸命になって作って完成!出力!書き出せない!ということになればまた面倒な工程が増えてしまいます。

形状の限界
ノーマルマップはハイ、ローの形状の差を画像に変換しています。
その際に表現できる形状に限界があります。
元の形状に対して極端に凹、凸があるような形状は良い結果になりません。
その際には元のローポリの形状をハイモデルに近づけるような努力をする必要があります。
また、ノーマルマップはポリゴンモデルを変化させているわけでなく、
擬似的?に見た目を変えているため、アウトラインに影響がでません。
そのため、正面からみたときにはガチャガチャしてるのに、
シルエットになったらやたら粗く見えることがあります。
その際にも、ローポリの方のシルエットが複雑に見えるように工夫する必要があります。
outline.jpg

UVレイアウト
ノーマルマップを焼く際にはローポリのUVをみてその形通りに焼かれていきます。
この際にUVが重なっていたりするとよろしくない結果になります。
テクスチャ面積を有効につかうために左右対称モデルでUVを左右で同じにし、
同じ位置に重ねてレイアウトされていたりすると思います。
それが原因でうまくいかないことが多々有ります。
その際にはUV空間上でUなりVなりに-1でも移動させておけば問題なくなります。
しかし、たまに重なっていてもうまくいくことも…^^

軸向き
・ノーマルマップはデコボコをRGBに変換してそれを画像にしています。
さらに詳しくいうとRGBそれぞれがXYZの軸のどれかに対応しています。
「どれか」といったのにはわけがあります。
実はツールよってその対応する軸と色に差があることがあります。
なのでpart2でやった設定でそのまま見た目問題なく、
ご自身の使用しているツールで見れた人はラッキーかもしれません。
もし、デコがボコにみえる、光があたっている方向が変!という方は、
xNormalにも設定がありますので設定しなおしてください。
axis.jpg

ここからは精度の高いノーマルマップを書き出すxNormalの機能を紹介します。
・レイの距離を設定する。
難しくなりそうなのでやることを簡単に言いますと、
ローポリとハイポリの形状の差を明確にして正確な差を出す。かなぁ...
ちなみに設定はここにあります。
dist.jpg
ここの値をかえてあげると良い結果にもっていくことができます。
しかし、ただ闇雲にやっても意味が無いので計算するツールもついています。
ToolsタブのRay distance calculatorです。

cal.jpg
ボタンを押すとシンプルな別ウィンドウがでてきます。ボタンは3つ、Close GO! copy results
使いかたはまずGo!を押します。するとハイポリが読み込まれます。
そのあと5秒、10秒とほっとくとfMin、fMax....の値が変化していきます。
どうやら距離を調べてくれているみたいです。
10秒ほどで十分ですので値が変化したらStop!をおしてください。
そののちCopy resultsを押せばなんと!
先ほどのMaximum frontal ray distanceなどに値がコピーされます。
この状態で生成すると割りと結果がよくなります。
ただ必ずよくなるわけではなく、他に悪くする原因があるかもしれないので過信しすぎないでください。
試しにデフォルトの値と計算後の値を入れたもので比較してみるのも良いと思います。

・解像度をあげる。
もし使用するテクスチャサイズに制限が無いのであれば、
ノーマルマップは解像度を出来るだけあげることをおすすめします。
特にハードサーフェスのモデルの場合エッジがジャギることが多いです。
その際一段階解像度を上げるだけでびっくりするほど良くなったりします。
ちなみにxNormalは最大32k(32768*32768pix)まで出力できます。
だれが使うかわかりませんが…
とりあえず目安として1k、2Kぐらいで出してみてはいかがでしょうか。

・xNormalに固執しない
今回はxNormalの紹介ですが、あえてここでは別の方法を取ることもおすすめします。
いままで何回も何回もベイクしてきましたが、必ずxNormalがベストというわけではないです。
ほかのツールのほうがキレイにいくときもあります。しかも簡単に。
どう設定してもうまくいかない場合は、別のツールがあるということをどこかで覚えていてください。
ときにはフォトショップで手書きする時だってあるのですから!


とりあえず以上でひとつ終わりと致します。
実はもっと精度を上げる方法とかはあるのですが、
それはこのブログ等で、実例有りで要望があがった時などに紹介したいと思います。
今回はいわば入門編です!
是非他のツールなども試して楽しいノーマルマップライフをお送りください!
機会があればそのうち画像からノーマルマップに変換する方法なども紹介していけたらと。

自分の解説はゆるいので、より知識を正確に深めたい方におすすめのページを見つけてきました。
図が多くとてもわかり易いので余力あればどうぞ。
Normal mapping in Blender

お疲れ様でした!
posted by momo at 00:55| Comment(0) | 日記

2014年08月20日

ノーマルマップとは!part2 ノーマルマップをつくろう!

Part1ではなんとなくノーマルマップの説明をしました。
完全に理解しなくとも、なんとなくでもまず作ってみるとより理解が高まると思います。
それでは早速作り方に入ります。
ここからは3Dモデルを作ってみたことある方がメインになりますが、
こんなことができるなら3D始めよう!となるような解説をしていきたいです!

用意するもの モデル
お好きな作成したポリゴンモデルの
ハイメッシュモデル(ポリゴン数の多いモデル、ハイポリ)
ローメッシュモデル(ポリゴン数の少ないモデル、ローポリ)
それぞれOBJ形式で書き出してください。ツールはなんでもいいですが、
ローメッシュは必ずUVを持ったモデルにしてください。
大概の3DCGツールでOBJ出力時は法線情報の出力ができると思うので、
ローメッシュは法線情報有りで書き出してください。

今回はPart1冒頭で使ったキューブをつかって説明していきます。
ローポリ Mayaで作成し、すべてソフトエッジ(Average Normalと同じようなもの)にしたものです。
lowpoly.jpg
ハイポリはZbrushで細かく割って150万ポリゴンぐらいにしたものにスカルプトして模様をいれました。
highpoly.jpg

Zbrushをやっている方はスカルプトした際の、
下のサブディビジョンレベルのモデルや、Zremesher等でリダクションしたモデルを
ローポリとして使用すると良いと思います。(ZbrushはUVが無いことが多いので忘れずにUV展開してください!)

用意するもの ツール
Xnormal
無料の各種マップ作成ツール
精度が高い上に細かい設定と、書き出せるマップの種類、ベイク速度等どれをとっても優秀なツール。
http://www.xnormal.net/1.aspx
HPに行き

Downloadをクリック
down.jpg

飛んだ先の一番上の青枠の点線内をクリック
ver.jpg

さらに飛んだ先の中からインストーラーをクリックしてダウンロード!(日本からだと結構時間かかります。)
exeorsdk.jpg
アップデートがこまめにありますので、その時々で画像以外の最新バージョンを落としてください。

インストーラーがダウンロードできたら起動し、手順に沿ってインストールしてください。
途中止まってよくわからないものを入れようとしますが、どれも必要な物なので全部入れてください。
すべて終わるとデスクトップにxNormalのアイコンができますので、ダブルクリックで起動!!
icon.jpg

起動しますとなんだかレトロなウィンドウがでてきます。
window.jpg

これでツールの準備完了です。
左下にある電気プラグのところから使用言語を日本語にもできますが、経験として英語でなれておくと他の日本語化されていないどのツールを使用しても混乱がないので、最初辛いかもしれませんがこのまま使用するのをおすすめします。

それではいよいよ実際の作業手順になります。
・まず書き出しておいたハイメッシュのOBJファイルを「High definition meshes」のタブをクリックした先のウィンドウ内にドラッグアンドドロップします。
high.jpg
・次に書き出しておいたローメッシュのOBJファイルを「Low definition meshes」のタブをクリックした先のウィンドウ内にドラッグアンドドロップします。(恐らくわかるので画像割愛)

・それぞれ設定できそうなどころがみえると思いますが、まずはそのままにしておいてください。下手にいじると失敗したときの原因究明が難しくなります!
・次に「Baking options」のタブをクリックした先のウィンドウで、書きだすファイルの設定をします。
最低限設定するべきはファイルパス(緑四角に…のボタンクリック)、大きさ、書き出すファイルの種類ぐらいです。
bakingoption.jpg

以上とりあえず設定が完了です!GenerateMapsをクリックで書き出しが始まります!
別ウィンドウが開きだんだんにノーマルマップができていきます。
UVがない、ファイル形式に不備がある場合途中で処理がとまります。
たまに、2つの形状でサイズが違うよ!みたいなことがいわれますが、無視しても大丈夫です。

私も先程のモデルを書き出してみました。
cube_normals.jpg
キレイに焼けました!
これをToolbag2に持っていってローポリメッシュに貼ってみますと...
cubefinish.jpg
数十ポリのモデルなのに150万ポリと同様の見た目をえることができました。

いかがでしょうか?手元にモデルがある方は是非お試しください。
今回は形状がとても簡単でしたが、クリーチャー、人型、機械、どれでも作業は同じです。
このパートはひとまずこれで終わります。
次のパートではさらに精度を出すための設定や、つまづきやすい点をあげていきたいと思います。

追記
ベイク中エラーが出た!どうも結果がまずい!その場合は解決策があるかもしれません、お気軽にコメントにでも疑問点等書き込んでみてください。
もしよかったらこっそりキャプチャでも見せていただければ、より具体的なアドバイスも出来ると思います。
ただハードウェアの問題で相性がわるくそもそもツールが立ち上がらないとか、ベイク時に落ちる等は対応できません。ご了承ください。

Xnormalを終了するときにはウィンドウ左下の☓ボタンを押します。
PCによってはその際画面が一瞬暗転しますが、これが仕様のようです。こわいですね^^
posted by momo at 23:20| Comment(0) | 日記

ノーマルマップとは!Part1

今回はノーマルマップという魔法のようなマップのことについて説明します。
長くなるのでパートで分けます。Part1はノーマルマップについてやさしく解説します。

3DCGをやっている方なら一度は目にしたこと、聞いたことはあるかもしれません。
ノーマルマップのノーマルとは「normal=法線」で要は法線マップということです。
法線と聞くと難しそうで手がでにくくなりますが、今回は法線を理解しなくても、
なんていいマップなんだろう!使いたい!と思えるような優しい解説を心がけます。
使っていくうちに知識はあとからついてきますしね!

ということで早速実例です。
簡単なキューブの角をとったモデルを用意します。(Toolbag2というビュワーを使ってます。)
simplecube.jpg
なんの面白みもないですよね。しかもポリゴンの数も少なくてこれ以上どうていいのやら...
ではそれにノーマルマップを貼ってみます。
normalcube.jpg
えっ!何かが浮かびあがった!しかもちゃんと立体にみえる!

これがノーマルマップのちからです。すごい!
ちなみにこちらがノーマルマップになります。
cube_normal.jpg
ではノーマルマップとはなにかというと、
この例ではポリゴン数は少なく、複雑な形状を表現できません。
ところがノーマルマップをはることでポリゴンの代わりに擬似的な立体を作り出すことができ、
またデコボコの単位はピクセルととても細かいものなので複雑、微細な形状の表現ができます。
色を表現するのがカラーテクスチャ、ディフューズテクスチャだとすると、
デコボコを表現するのがノーマルマップですね。

でもこれを何につかうの?
そんなことしなくても、別にZbrushとかみたいにたくさんポリゴン使えば
なんでも表現できるじゃん!
ごもっともです!
しかし、それではなかなか使い物にならないのです!
例を出しますと、ゲーム制作の現場では表示できるモデルのポリゴン数がある程度決まっていたりします。
ポリゴン数を無限に使うと、メモリに乗らなかったり、モデルデータ自体の容量が大きくなったり、
アニメーションさせるにも計算がとてもたいへんになったりします。
せっかくモデル作ったのにゲームに使えない!それどころかゲームを動かなくしてしまう!!
そんな悲しいことないですよね。

そこで使うのがこのノーマルマップです。
ポリゴン数を減らしたモデルにノーマルマップを貼ることで、
あたかも複雑なポリゴンモデルのように見えます。
最近ですとPC、今世代据え置き機ではかなり多くのポリゴンが使えるようになりました。
それでもシワや細かい傷、装飾等クオリティアップのため外すことのできないマップとなっています。

以前作ったモデル 
かなりのポリゴンを使っていますが、右のノーマルマップを貼ったものと比べるとやはりボケボケです。
before_after.jpg

なんとなくわかっていただけましたでしょうか?
次のパートでは実際ノーマルマップの作り方を解説してゆきます!!
posted by momo at 21:44| Comment(0) | 日記

2014年08月19日

オリジナルキャラクタ第一弾

Zbrushのみで作成し、完成していましたが公開できるような段階になりました。

ターンテーブル出力しました。PBRレンダリングではないのでキレイでは...この解像度ではどのみちわかりませんが...


PBRキャプチャになります。
finish_front.jpg

finish_back.jpg

今後はこのキャラと同じ等身の友達となるようなキャラでも作りたいですね。少しずつですが。
もしチャンスがあるなら立体出力もしたいところですね。
タグ:3DCG ZBrush
posted by momo at 22:26| Comment(0) | 日記

2014年08月18日

クリスタル

今日は透明ものに挑戦。
といってもレンダリング回すわけではないので、
ゲーム的な表現、どこかでうまくごまかすような方法をとります。

元の形状はZbrushでスカルプト
Toolbag2に持ってゆきマテリアルをあてます。
パラメーターはこんな感じです。
粗いけれどこれぐらい極端な値でないとあまり効果がでてこなかったです。
テクスチャは一枚も使ってません。
param.jpg

あとはライトをいくつかあてればできあがり。
crystal.jpg
接点とかに小石とか増やしていけばもう少し馴染むかもしれませんね。
タグ:3DCG ZBrush Toolbag2
posted by momo at 23:03| Comment(0) | 日記