記事一覧

UDK マテリアル作成

UDKのマテリアルは処理の基礎機能から自分で付け足していく必要がある。ノードで構成していくので関数などの意味さえ把握できればものすごい機能を持ったマテリアルをプログラマじゃなくても作成することができる。
ただ、マテリアルを毎回一から作るのは結構面倒な上、内容を変更した後コンパイルして反映させるのに数秒から十数秒かかるから非常に作業効率が悪くなる。
そこで、Materialとは別要素のMaterialInstanseを使えば、指定した親マテリアルの各ノードの設定を変更し、そのままMaterialとしても使えるのでマテリアルの作成や調整の作業に苦労する必要がない。
UDKで言うマテリアルをCryEngineで例えるとすれば、マテリアルエディタで指定するshaderになる。

ファイル 122-1.jpg
普通っぽい機能だけを備えたマテリアルを作ってみた。
Diffuseは色とテクスチャを合成して使用可能。
スペキュラはSpecularColorで色でベースの強度を指定し(なぜか白以上の明るさを指定可能)、スペキュラマップを使うと自動で併用される。SpecularPowerでスペキュラの幅を指定。
DetailTextureはノーマルマップを使用し、ノーマルマップに5倍のUVで自動的にで合成される。合成強度も変更可能。BumpOffsetはノーマルマップのアルファチャンネルで使う。Emissiveも数値とテクスチャの両方で制御可能。

ファイル 122-2.jpg
MaterialInstanceで項目を指定しているところ。

あとはDetailTextureのUV設定を変更可能にしたり頂点カラーペイントで違うテクスチャと合成するなどの機能を足して生きたい。
スキン用にSSSを使えるマテリアル、重なった透明処理に特化したヘア用、反射機能に特化したグラス用、自己影の透過ができる草木用のマテリアル等も作れば困ることはないと思う。

UDKは公式/非公式で動画のチュートリアルやWebサイトでの解説が充実してて非常に助かる。
こっちの海面マテリアルとか作ってみたいな。
http://www.johnheeter.com/oceantut