記事一覧

Dx11海面シェーダ@UDK

http://ulrichthuemmler.blogspot.com/p/udk-ocean.html
こちらの方が作成したマテリアル、ソースのキャプチャも公開されているので真似て作ってみた。
ベースとなるディスプレイスメントマップとノーマルマップの組み合わせ次第でいろんな海面や川みたいなのが作れるほか、透明度・泡・フレネル・環境マップ・波形状などの設定可能なパラメータが50個もある。

テッセレーションによりポリゴンを分割し、合成されて常時変化するディスプレイスメントマップによってアニメーションする。

ファイル 171-2.jpg
ファイル 171-1.jpg
http://unreal.rgr.jp/udk/Dx11SeaWater.wmv
元は三角X2ポリゴンの四角形の板

SCAR その6

ファイル 167-1.jpgファイル 167-2.jpgファイル 167-3.jpgファイル 167-4.jpg

バイポッドとスコープを作った。バイポッドは脚部分を収納してグリップとしても使えるタイプ。
どっちも独立したテクスチャとマテリアルなので使いまわしもできる。
MP5のときより良い出来だと思う。いやー面倒だった。

SCAR その5

ファイル 166-1.jpgファイル 166-2.jpg

Mayaのハードウェアレンダ。
2048x2048のカラー・スペキュラ・ノーマルのテクスチャでAOベイク済み。

SCAR その4

ファイル 165-1.jpg

ほぼ完成か?

SCAR その3

ファイル 164-1.jpg
もういい加減テクスチャのペイントに入りたい。三角ポリゴンで8766。
ローポリで普通のスムースエッジによる法線では、ノーマルマップでも正確な面が再現できないところが多くて、特にまっすぐな平面とカーブが入り乱れた輪郭の形状はシビア。細かいところで法線の向きを弄ってある。
手持ちのソフトではMayaしかできないなこれ。

ファイル 164-2.jpg
スコープ付けようと単独で製作中。

SCAR その2

ファイル 163-1.jpgファイル 163-2.jpgファイル 163-3.jpg

スムースエッジにできない角が殆どで、さらにローポリだから変なグラデーションができやすい。完全にノーマルマップで正確な面にできないからいろんなところで法線を弄っている。その甲斐はあったけど。
ハイポリとローポリの二度手間でパーツも今までで一番多かったから、ここまででも日数かかったなあ・・・

SCAR

ファイル 159-1.jpgファイル 159-2.jpg

Cinema4DのNurbus等で角まで微妙に滑らかなハイポリで作成中。
続いてローポリで作り直して、面をきれいにするためハイポリからノーマルマップを生成する予定。
ライフルの種類として、映画とかでもよく見るM4とかを選びたかったんだけど、あれは形状が複雑すぎたり、バリエーションみたいなのが多すぎる。SCARはメーカーからカタログがDLできたり形状がシンプルで把握しやすかった。そんな理由でこれを選んだ。

あと、ZBrush 4R2のメールが来てた。

SpeedTree

ファイル 158-1.jpg
ファイル 158-2.jpg
UDK付属のSpeedTree。樹木や様々なタイプの植物を簡単に作れるミドルウェアで、UDK用だけに出力可能という制限がある。
SpeedTreeは多くのゲームで使われており、その殆どの葉はスプライトのように視点に合わせた平面モデルで描写されているけど、機能的には折れ曲がった板ポリや自前のモデルを使うこともできた。

ファイル 158-3.jpg
風で揺れる際の物理設定ができたり、メッシュファイルを読み込んで位置を調整してそれに沿った変形も作れる。最適な葉の法線設定もできたり、とにかく非常に高機能で何でもありなソフト。

nVIDIA APEX

ファイル 157-1.jpg

最近APEXとかいうPhysXのソフトで破壊できる建物を作っている。
専用ソフトでパーツごとに破壊具合を作るのが面倒。
MayaからFBXをインポートすると軸が変換されるのでMELで一時的に軸を変換する処理を作ったりもした。
破壊するなら細かい破片や粉塵を発生させるパーティクルも作らないといけないだろう。

少しでも変わった形状の建物が面倒くさそうで(挙句の果てに失敗しそう)、いつも四角柱ベースの建物しか作れない

最近気になるBattleField3のライティング機能について調べてみたら、どうやらEnlightenというミドルウェアを使ってるらしい。
http://www.geomerics.com/
どこまでがEnlightenの処理か分からないけど、
動的ライトを含めたGIをリアルタイムで処理することが可能な球面調和ライティング(みたいなもの)で、その領域にあるドアやキャラクタ等の動的オブジェクトを照らす。動的オブジェクトはGI処理に影響はしない。
建物や動かない設置物などの静的オブジェクトと静的ライティング(太陽とか)はライトマップも可能。
http://www.youtube.com/watch?v=foXVF7q035Y
http://www.youtube.com/watch?v=tMcL4GLZib4

WL-Shader2

いろいろ改良を加えている。

ブロックを簡単に作るマテリアル。高解像度なテクスチャを使っているかのように見えるので大きな壁に使いやすい。できればミゾ部分を普通のノーマル処理じゃなくPOM処理させたい。
ファイル 156-1.jpg

肌マテリアル。いろいろ付け足しすぎてよく分からなくなってきた。
ファイル 156-2.jpg

周りの状況に関係なく眼球表面に移り込みを入れるマテリアル。カメラに対して正面の角度を維持。
ファイル 156-3.jpg

UDKにはじめから入っているFuzzyとMetalicのMaterialFunctionをそのまま使って、金属向けのマテリアルとか新しく作ったり前回からあるClothのを修整した。
マテリアルを弄るだけでもキリがない。

レンガ生成マテリアル

ファイル 155-1.jpg

ミゾ用のテクスチャの明度で二種類のDiffuse/Normal/Specular設定をブレンド。
さらにミゾ部分でもノーマルマップを生成。
レンガのテクスチャは写真からシームレス加工するのが結構面倒。
だけどこれならミゾ用のテクスチャを作るだけでDiffuse等を変えながらいろんなパターンのレンガマテリアルができる。

建物

Lightmassが非常に良い。
あとポストプロセスをいろいろ取り入れてる。
ファイル 154-1.jpg
ファイル 154-2.jpg
ファイル 154-3.jpg

前回のシェーダをまた弄った。
ファイル 154-4.jpg

Material Function @UDK

ファイル 153-1.jpg
早速既存のマテリアルに使ってみた。黄色のノードはタイリングのパラメータ。バラバラに設定するか統一させるか悩みどころ。
マテリアルインスタンスの項目がグループ制になってたので、パラメータにもグループを割り当てて整理してある。

あと金属の質感に使えそうなシェーディングのサンプルがあったので、金属専用のマテリアルにを作ってそこに導入した。↓
ファイル 153-2.jpg
ファイル 153-3.jpg
ファイル 153-4.jpg
ファイル 153-5.jpg
自前で作ったキューブマップも使っているが、写り込みの角度や反射を指定していると思われる~Vectorっていうものの使い分けが難しい。
いまだによく分からない。
このキューブマップは今のところスペキュラーの強度/カラー/スペキュラーマップなどにも強度を比例させてEmissiveに繋げてる。

マテリアル・ポストプロセス WL-Shader 完成

Epicフォーラムにて紹介してます。
http://forums.epicgames.com/showthread.php?t=810407
ダウンロード
http://unreal.rgr.jp/Mydownloads/Weightless/WL-Shader.zip

含まれている殆どのマテリアルに共通しているこだわりとして、
・スペキュラのグロスにテクスチャを指定できる
・スペキュラマップは明るさとコントラスト調整を加えられる
・ノーマルマップは強度の調整が可能
・各種テクスチャはデフォルトで専用ブランクテクスチャが入っているので、全てを設定する必要が無い
などがあります。
ただ、予定にあったガラス用のマテリアルは難しすぎて時間かかりそうなのでやめておきました。

マテリアル作成@UDK

ファイル 144-1.jpgファイル 144-2.jpgファイル 144-3.jpg

UDKで使いやすく、そこそこ高機能なマテリアルを作っている。
「どのタイプにどの機能があり、どこを調整可能にするのか」等をCrysis2のシェーダを参考にしている。大まかな種類ごとに以下の専用のマテリアルを作る予定。

・肌(完成)
SSS(要Dx11)
光源通過(SSSが使えない場合の代用)
フレネル
光源に関係なくディフューズにスペキュラーを合成
その他

・布(完成)
SSS(要Dx11)
フレネル/ファジー
ディテール(小さくノーマルマップを合成)
その他

・髪
透過設定
その他

・漆喰/コンクリート
POM
スペキュラによる画像ベースの反射(要Dx11)
エディタ内でペイントできるStaticMeshの頂点カラーで2種類の別テクスチャ(ディフューズ/スペキュラ/ノーマルなど2つずつ)をブレンド
ブレンドを単純なグラデーションではなく、マスキングするテクスチャを指定可能

・ガラス/眼球カバー
屈折
独自のスペキュラ

様々な機能は数値や色で調整可能で、設定によって未使用にすることもできる。
完成したら公開します。マテリアルインスタンスでテクスチャを入れたり数値の変更をするだけで使えます。

character10 その2

ファイル 142-1.jpg
ファイル 142-2.jpg
テクスチャも完成してリグを入れてポーズをつけてCrysis2のSandbox3にインポート。ポリゴン数は三角で20317。
いつも思うんだけどCryEngineならでわのライティングの影響なのか、ノーマルマップの効き具合が弱く見えてしまう。


ファイル 142-3.jpg
Mayaのビューポート2.0


ファイル 142-4.jpg
ファイル 142-5.jpg
テクスチャは自分でDDSに変換するより、resource compilerの自動変換に任せたほうがいい。どうやらGamma correctとかいう処理をしているらしく、普通のddsだと強力な太陽光で簡単に色が飛んでしまう。HDR関係なのかな?
スペキュラマップのアルファチャンネルを使ってグロスをコントロールできるようだけど、なんでアルファチャンネルでやらなきゃいけないんだ。メモリの節約か?

character10

ファイル 141-1.jpg
体はcharater08のモデルを100%流用。テクスチャだけ作成。

ファイル 141-2.jpg
まだ途中で、服のノーマルマップとAOをベイクところ。
髪と靴はBlueMars用に作ったものを使っている。

ファイル 141-3.jpg
服は一度基礎モデルを作りGoZでZBrushに持って行き、詳細をモデリング。
そしておおまかなローポリモデルをリトポロジ機能で作成。ベイク時の面の向きを意識して三角ポリゴンを多様。(後からモデリングソフトで三角化しても分割結果がソフトによって全く違ったりするためでもある)
使うテクスチャを一まとめにしたいのでベイク先のモデルを一度ひとつにまとめてUVを整列させたりもしている。
xNormalでノーマルマップとAOマップを生成。

リトポロジの形状は、元のハイポリと比較して外側の輪郭がなるべく一致するように心がける。これは頂点一つずつを手打ちでやっていくZBrushのやり方が適していると思う。かなり面倒だけど。
ただ、あまり変化が無いスカルプを施したモデルの場合、わざわざリトポロジをせず一番最初の基礎モデル(Sudv1)をそのまま使えたりもする。

MP5 RAS ローポリ その3

CryEngine3でのレンダリングをリベンジ。
ファイル 138-1.jpg
ファイル 138-2.jpg
マテリアルとテクスチャを調整。
AOをベイクしレイヤとしてスペキュラマップにも乗算合成。こうすることで強制的にAOの影の部分を完全に暗くなるようになる。
テクスチャは全て1024x1024にリサイズ。
あとキューブ式の環境マップも作成して適応。キューブマップにはAMD提供のこのツールを使った。
CubeMapGen
http://developer.amd.com/archive/gpu/cubemapgen/pages/default.aspx

PhotoshopがあるならnVIDIAのDDSプラグインで作れる。

MP5 RAS ローポリ その2

完成
Cinema4Dでレンダリング
AOのみ
ファイル 137-1.jpg
ファイル 137-3.jpg

CryEngine3
ファイル 137-2.jpg

テクスチャはカラー・スペキュラ・ノーマルを各一枚4096x4096で作成
CryEngine3はスペキュラマップの強弱の制御が緩い気がする。
細かいパーツでは影も処理されないから、小物とかのレンダリングにはきついのか。