ray-mmdでマップを活用する
ray-mmdを使っている人は結構見ますが、実際のところ皆どのくらい使いこなせているのでしょうか?
私はあまり使いこなせていない気がするのですが、最近マップを活用することを覚えたので使い方を書いておきます
大した知識でもないので皆知ってるかもしれない
マップというのはMaterialのfxファイルの中に見える
これがどういう風に使われているのかというと、例えば Materials/Skin/material_skin.fx では39行目に
material_skin.fxを実際のモデルに適応すると影や光沢によって肌の凹凸が表現されるわけですが、どのような凹凸になるかがこの行で指定されている画像ファイルによって決まるわけです
実際 Materials/_MaterialMap を覗いてみるとskin.pngという名前の青っぽい画像があるのがわかります
なんでこの青いのが凹凸になんねんみたいな事がわからない人は"ノーマルマップ"とかでググってください
あとRay-mmdにおけるマップの扱いはray-mmd 日本語ドキュメントをみるといいと思います
というかマップの扱いに限らずこのドキュメントは目を通しておきたいですね、そんなに分量があるわけでも無いですし
では具体的な活用方法について書いていきます…というか私がどういう風に使ったかですね
モデルに網タイツを履かせたとして、タイツのテクスチャに網目模様を描いただけではどうにものっぺりしていて網タイツ感がないような気がしませんか?私はします
そこでノーマルマップを使って網の部分を凹ませたいと思います
手順ですが、
テクスチャ上の網目とノーマルマップ上の網目の位置はちゃんと合っとんの?と思われるかもしれませんが、ray-mmdは読み込んだマップファイルのマッピングは適用対象材質のテクスチャマッピングをそのままひっぱって来るので、MapLoopNum を 1.0 にしておけばぴったりと合ってくれます
ちなみにノーマルマップアドオンを適応するときには一旦画像を脱色してからにしたほうがいいかもしれません
その上で明るさ・コントラストをいじってやれば凹凸の勾配を自由に変えられますし、ぼかしを掛けてなめらかにしてやるなどの処理も可能だということを覚えておくといいと思います
瞳にemissiveを適用してやるといい感じに目が目立ってくれるわけですが、そのままだと瞳が全体的に白っぽく見えてしまうのが難点です
そこでEmissiveマップを適用することで光り方にメリハリを付けてやりたいと思います
やり方は簡単
Emissiveマップ用の画像は Eye/texture というフォルダを作ってそこに入れておきました
瞳用マップはモデルごとに用意してやる必要があるので、整理しやすい形で作ったわけです
以上私が実際に使った用途の紹介でした
他にもsmoothnessとかspecularとかが使えると表現の幅が広がりそうですね(表面の一部が濡れた表現とかに使えそう)
マップをうまく使えると色々できることが増えるので、ぜひとも活用していきたい所です
画像を用意するのがネックになる気はしますが
私はあまり使いこなせていない気がするのですが、最近マップを活用することを覚えたので使い方を書いておきます
マップというのはMaterialのfxファイルの中に見える
みたいなやつのことです#define XXXXX_MAP_FILE "xxxxxx.png"
これがどういう風に使われているのかというと、例えば Materials/Skin/material_skin.fx では39行目に
と書いてありますね#define NORMAL_SUB_MAP_FILE "../_MaterialMap/skin.png"
material_skin.fxを実際のモデルに適応すると影や光沢によって肌の凹凸が表現されるわけですが、どのような凹凸になるかがこの行で指定されている画像ファイルによって決まるわけです
実際 Materials/_MaterialMap を覗いてみるとskin.pngという名前の青っぽい画像があるのがわかります
なんでこの青いのが凹凸になんねんみたいな事がわからない人は"ノーマルマップ"とかでググってください
あとRay-mmdにおけるマップの扱いはray-mmd 日本語ドキュメントをみるといいと思います
というかマップの扱いに限らずこのドキュメントは目を通しておきたいですね、そんなに分量があるわけでも無いですし
では具体的な活用方法について書いていきます…というか私がどういう風に使ったかですね
凹凸のある網タイツを作る
モデルに網タイツを履かせたとして、タイツのテクスチャに網目模様を描いただけではどうにものっぺりしていて網タイツ感がないような気がしませんか?私はします
そこでノーマルマップを使って網の部分を凹ませたいと思います
手順ですが、
- 網タイツのテクスチャをコピー
- gimpのNormalmapアドオンを適用してノーマルマップを作る
- ray-mmdのMaterials/material_2.0.fxをコピー
- 新しくコピーしたfxファイルを開いて、31行目あたりにある#define NORMAL_MAP_FILE "normal.png"のnormal.pngを作ったノーマルマップのパスに書き換える
テクスチャ上の網目とノーマルマップ上の網目の位置はちゃんと合っとんの?と思われるかもしれませんが、ray-mmdは読み込んだマップファイルのマッピングは適用対象材質のテクスチャマッピングをそのままひっぱって来るので、MapLoopNum を 1.0 にしておけばぴったりと合ってくれます
ちなみにノーマルマップアドオンを適応するときには一旦画像を脱色してからにしたほうがいいかもしれません
その上で明るさ・コントラストをいじってやれば凹凸の勾配を自由に変えられますし、ぼかしを掛けてなめらかにしてやるなどの処理も可能だということを覚えておくといいと思います
瞳へのEmissiveマップの活用
瞳にemissiveを適用してやるといい感じに目が目立ってくれるわけですが、そのままだと瞳が全体的に白っぽく見えてしまうのが難点です
そこでEmissiveマップを適用することで光り方にメリハリを付けてやりたいと思います
やり方は簡単
- 瞳テクスチャをコピー
- コピーした画像をgimpで開く
- コントラストを上げる
- 作った画像をEmissiveマップとして適用
Emissiveマップ用の画像は Eye/texture というフォルダを作ってそこに入れておきました
瞳用マップはモデルごとに用意してやる必要があるので、整理しやすい形で作ったわけです
以上私が実際に使った用途の紹介でした
他にもsmoothnessとかspecularとかが使えると表現の幅が広がりそうですね(表面の一部が濡れた表現とかに使えそう)
マップをうまく使えると色々できることが増えるので、ぜひとも活用していきたい所です
画像を用意するのがネックになる気はしますが