Rock Grass for ENB Complex Grass
Modの説明
ENBのComplex Grassに対応したModの紹介です。Skyrim LEのModです。
先日の日曜日の記事でENBの新しい機能のComplex Grassが追加されたと言うことを書きました。今日は、これについての解説Modの紹介です。
メインファイルにある方は、Rockgrass01.nif、rockgrasssnowobj01.nif、rockgrasswater01.nifと、rocksgrass01.ddsを変更するModです。ただ、実際には一部のファイルを変更することで、Complex Grassの効果を実例として見せるのが目的だろうと思います。
また、オプショナルファイルは、ENB Complex Grass Texture Guideです。これはPDFファイルで、Complex Grassのためのテクスチャ制作を解説しています。
テクスチャとは?
Skyrimでは、ゲーム内で表示されるオブジェクトは、ポリゴンで構成されているモデル(NIFファイル)と、それの表面の色等を決めるテクスチャ(DDSファイル)が利用されています。基本的にどれもこうなっているのですが、今回の草 / Grassに分類されているオブジェクトは特殊なんだそうです。
具体的にNifファイルを見てみましょう。適当にforestgrass01.nifというNifファイルを選んでみました。このNifファイルで指定されているテクスチャのファイルは2つで、forestgrass01.ddsとforestgrass01_n.ddsです。Nifファイルは、Nifskopeと言うツールで中身を見ることができます。下の画像は、Nifkospeで見た時のものです。DDSファイルはpngにしてブログに載せられる形にしました。
forestgrass01.nif: モデルの情報
forestgrass01.dds: Diffuse Map / ディフューズマップ
forestgrass01_n.dds: Normal Map / ノーマルマップ
ディフューズマップ
Diffuse Map / ディフューズマップと言うのは、上の画像見てわかると思いますが、草の色を決めるものです。また、Normal Map / ノーマルマップは、葉っぱの凹凸を追加するものです。盛り上がってるとか凹んでると、光があたった時に影がつくのですが、そういう計算で使用されます。
スカイリムでは、それぞれのテクスチャに、他の情報を追加することができます。少し細かい話になっていきます。
Diffuse Map / ディフューズマップは、上で書いた通り色を決めるテクスチャですが、色空間はRGBで定義されています。また、アルファチャンネルを追加することができます。追加されたアルファチャンネルは、透過の設定になります。このアルファチャンネルはグレイスケールです(つまり白黒です)。forestgrass01.ddsから、アルファチャンネルを分解すると、次のようになります。
forestgrass01.dds: RGBの部分
forestgrass01.dds: アルファチャンネルの部分
草はうちわ見たいな感じで、板の形のポリゴンに絵を書いて、絵(色)のない部分が表示されないようにすると言う感じになっています。つまり、上のRGBの部分で色がついている(黒じゃない部分)だけ表示したいと言うことです。そこでアルファチャンネルでは、色のついてる部分だけ白くなっています。この白い部分が表示され、(アルファチャンネルの)黒い部分は表示されないようになります。
Diffuse Map / ディフューズマップだけでもこれだけのことができちゃうんですね。
ノーマルマップ
もう一つのテクスチャのNormal Map / ノーマルマップは、オブジェクトの凹凸を決めるテクスチャです。色空間はRGBで定義されています。また、アルファチャンネルを使うことができます。使った場合、Specular / スペキュラーの効果があります。
スペキュラーと言うのは、光沢感についての情報です。金属や宝石のように光を反射しやすいものの場合、スペキュラーの数値が大きいです(つまり、白色です)。一方で、布や木材だと、スペキュラーの数値が小さくなります(つまり、黒色です)。(人間の皮膚も光をあまり反射しないのですが、スカイリムでは別の計算をするので、ここでは考えません。)
今回のforestgrass01_n.ddsでは、スペキュラーの情報がないっぽいです。今日のModで公開されているPDFを読むと、どうも草のオブジェクトでは、ノーマルマップを使用してないっぽいです。もう少しわかりやすいもので説明したいと思います。
ノーマルマップ+アルファチャンネル
バニラのデータで説明したいので、鉄の剣のノーマルマップのテクスチャ(ironshortsword_n.dds)を持ってきました。
1枚目は、DDSファイルをそのままJPGにしたものです(透過の情報がありませんが、大体こんな感じです)。RGBチャンネル+アルファチャンネルの組み合わせで、少し透けてる感じになってます。2枚目は、そこからRGBチャンネルだけ取り出したもので、3枚目はアルファチャンネルだけ取り出したものです。
ironshortsword_n.dds
ironshortsword_n.dds: RGBチャンネル
ironshortsword_n.dds: アルファチャンネル
ノーマルマップで使用されているRGBは、大体水色っぽい見た目です。これで平面に凹凸を付けたり、滑らかにしたりしてます。通常のアイテムで利用されているノーマルマップは、Tangent Space / タンジェントスペースと言うものです。PDFの説明にも出てくる単語です。
ノーマルマップのアルファチャンネルは、上でも説明した通り、Speculary / スペキュラーです。光沢が強い部分は白に近くなって、光沢が弱い部分は黒に近くなります。
ENB: Complex Grass
ENBに新しく追加されたComplex Grassでは、このDiffuse Map / ディフューズマップに、Normal Map / ノーマルマップを組み合わせる必要があります。この作業で拡張されたDiffuse Map / ディフューズマップ1枚で、Normal Map / ノーマルマップ(ノーマルマップのRGBの意味)、Specular Map / スペキュラー(ノーマルマップのアルファチャンネル)、Subsurface Scattering Map / サブサーフェイススキャッタリングマップの3つを兼用させようと言う技術だそうです。
ディフューズマップを拡張する方法は、ディフューズマップのサイズが1k(正確なサイズは、1024 x 1024)の場合、これを、1024 x 2048にして、下側にノーマルマップを置くと言う方法です。
今日のModに入っているテクスチャファイル(rocksgrass01.dds)を覗いてみると、こんな感じになっています。上と同じくjpgなので透過情報が見えなくなっちゃいましたが、、、。
rocksgrass01.dds: 縦長
rocksgrass01.dds: ディフューズマップ / 上半分
rocksgrass01.dds: ノーマルマップ / 下半分
この縦長のテクスチャ1枚で、ディフューズマップの機能(オブジェクトの色+透過)と、ノーマルマップの機能(凹凸の情報+光沢の情報)を読み取らせられるようになりました。すごい荒業ですね。
また、拡張されたディフューズマップの下半分にNormal Mapが置かれていますが、その左下の隅は、Subsurface Scattering Map / サブサーフェイススキャッタリングマップを使うかどうかの判定に利用されます。127以下である必要があるそうです。RGBのどの数値なんでしょうか。Rなのかな?
注意点
2枚のテクスチャを1枚にニコイチしたため、境界線を強調する必要があるそうです。上側のディフューズマップを下側に数ピクセル延ばす必要があります。ただ、forestgrass01.ddsを見てもらうとわかりますが、UV展開(頂点の位置を平面に展開すること)の時、テクスチャのギリギリまで利用することが多く、ちょっとずらすってことが出来ない場合も多いなと思いました。
Rock Grass for ENB Complex Grass: Modとして
ちなみに通常のModとしてみた場合、rocksgrass01.nif、rocksgrasssnow01.nif、rocksgrasswater01.nifと、これらのNIFファイルが指定しているテクスチャがrocksgrass01.ddsに変更されます。モデルも変更されているのですが、テクスチャが大きく変更しています。変更後は上に載せてあるので、ここでは変更前のテクスチャ3枚を載せておきます。
変更前のバニラのテクスチャ
おわり
ダウンロードサイト
Skyrim Special Edition Nexus: Rock Grass for ENB Complex Grass: by johnskyrim
最新記事
人気記事