【Tips】テクスチャ圧縮のススメ

スカイリムをプレイしていて、さっきまでは普通だったのに何かの拍子にプレイヤーないしNPC(フォロワー含む)の顔や体が急に黒くなったこと、ありませんでしょうか。
これ、原因は簡単に言うとメモリ不足です。私の知る限りでは。負荷に耐え切れなくなってキャラクターのテクスチャが正常に表示されなくなっているんですね。
ENBoost、メモリーパッチ、最近ではCrash fixesなど、スカイリムのメモリ周りというのは昔と比べてだいぶ改善されてきましたが、それでも環境(高解像度テクスチャやハイポリメッシュを入れまくってるとか)によってはこの真っ黒くろすけ現象が現れたりします。あるいはCTD、またあるいはフレームレートの減少も...

メモリに高負荷をかけるものは当然色々あるわけで、さっきも言ったように景観や装備のハイポリ、ハイレゾ化、常駐スクリプトなど様々ですが、その要因の一つとして無圧縮テクスチャをそのまま使用しているNPC(フォロワー)やプレイヤーキャラクターが挙げられます。
今回はその無圧縮テクスチャを見た目を損なわない範囲で圧縮およびリサイズし、自環境の負荷を軽減させましょう、という内容のTips記事になります。
また、フォロワーMODを手がける方でしたら、自作フォロワーによるメモリ負荷の軽減を図るのは、こだわりがあってあえてそうしている場合を除き、必要なことではないかとも個人的には思います。そういった方々にこの記事が少しでも参考になれば喜ばしい限りです。
本記事では圧縮のみならずリサイズによる容量の削減についても解説しておりますのでそちらも合わせてご覧ください。

では行ってみよう!


・ paint.netの導入 ※DDSが編集できる他ソフトを持っている方も導入してください。

解説を始める前に、paint.netというフリーソフトを導入していただく必要があります。
ダウンロードはこちらから→paint.net
中のexeを起動し、インストールしておいてください。

このソフト、デフォルトの状態でテクスチャのフォーマット形式である.DDSを読み込むことができる代物です。
GIMPやPhotoshopはプラグインを入れないとDDSを読み込ませることができませんが、paint.netであればその手間を省くことができます。
また、DDSの圧縮の品質もほかの同系統のフリーソフトと比較して良好のようです。とくに、DXT1圧縮はこのpaint.netが断トツで良品質ではないかなと…
GIMP等でDXT1圧縮すると見てわかるほど劣化した、というような話も聞きますので、今回のこの圧縮Tipsはpaint.netを使うこと前提の内容となっております。
他のソフトで同じようにやったら全然違う結果になった!と言われても困りますのでよろしくお願いします。

なお、使い方はググるか見て悟ってください☆


Step.1 圧縮によるテクスチャの劣化

_face-r8g8b8
R8G8B8(無圧縮)
face-dxt1-diffuse
DXT1-Diffuse
face-dxt1-normal
DXT1-Normal

 

 

 

 

 

ここに3種類のSSを用意しました。比較といえばGIFにするのが一番手っ取り早いんですが、画質の都合上、今回はSSによる比較にしました。
左から、全てにR8G8B8…つまり無圧縮のテクスチャを使った顔のSS、ディフューズのみDXT1圧縮したもの、ノーマルマップのみDXT1圧縮したものとなります。
サムネをクリックしていただくとフルHD解像度のSSが別タブで開かれるので、無圧縮テクスチャとDXT1圧縮テクスチャのとをタブ切り替えで見比べてみてください。
顔のテクスチャのみの比較ですが、体のテクスチャも結果は同様だと思っていただいて問題ありません。

さて…いかがでしょうか。まずディフューズからいきますが、これは違いがわからないと思います。
……なんとなく違う気がしないでもない? ハハッ 気のせいです。
まぁ容量が減るということは劣化しているということなので当然、違いはあるんでしょうが、言ってしまえばこうして比較して圧縮していますよと言われなければ…あるいは言われてもわからない程度の劣化ということで、それを気にしてメモリへの負荷が大の無圧縮テクスチャをそのまま使う必要はないのかなと思います。
なお記事スペースの都合上、スペキュラやサブサーフェイスの比較がありませんが、それらもちゃんと検証はしてまして、どれもディフューズと同じくパッと見でわかる劣化はなくDXT1圧縮で問題ないと思います。

次にノーマルマップですが、これは一目瞭然ですね。ブロックノイズがでています。
参考として、ブロックノイズがでてしまっている状態をもう少しわかりやすく見せたSSも下に貼っておきます。

blocknoise-face
Blocknoise-Face
blocknoise-body
Blocknoise-Body

 

 

 

 

 

網目状の模様みたいなものが全体的に見られると思います。顔でしたら頬から顎周辺、体のほうは肘やおへその辺りが顕著ですね。
なぜそうなるのかは各自でググっていただくとして、端的に申しますと顔と体のノーマルマップに関してはDXT圧縮はNGです。見た目を損ないます。
MODに収録されているものそのままの状態で使うか、編集し保存する際は必ずR8G8B8で出力しましょう。
※どうしてもノーマルマップの容量を削減したい場合は、わからない程度に減色するR5G6B5で出力するという方法もあります。

なお注意点として、最近のスキンテクスチャはMODとして配布されている段階からすでにDXT1圧縮で保存されていることが多く、例えばDemoniacなんかはノーマルマップ等を除いて全てDXT1圧縮の状態で配布されていますが、これらは当然のことながら使う側で圧縮する必要はなくそのままの状態で使っておいて大丈夫です。
もし後述するリサイズ処理など何かしらテクスチャを編集した際はDXT1で保存することをお忘れなく。


Step.2 各種テクスチャの最適な圧縮形式  ※体、手のテクスチャ含む

・ DXT1圧縮が最適なテクスチャ

femalehead
Diffuse Map
Specular Map
femalehead_sk
Subsurface Map

 

 

 

 

 

・ R8G8B8(無圧縮)が最適なテクスチャ

femalehead_msn
Normal Map
0004c36d
FaceTint

 

 

 

 

 

・ DXT5圧縮が最適なテクスチャ

mouthhuman
Mouth
sayaeyes
Eye
salahair5
Hair

 

 

 

 

 

ざっとこんなもんでしょうか。
フォロワーMODを作ったりしない方には少し縁遠いかもしれませんが、FaceTintというのはフォロワーの化粧テクスチャのことです。
口や目、髪のテクスチャは最初からDXT5圧縮された状態でMODとして配布されていることがほどんどなので、容量削減を目的に触る必要は全くありません。
もちろん、テクスチャを編集して保存する場合はこれらにはアルファチャンネル(透過情報)が必要なので必ずDXT5圧縮で出力してください。


Step.3 リサイズによる見た目の違い

・ Diffuse Map

Original - 8k Diffuse
4k-diffuse
Resize - 4k Diffuse
2k-diffuse
Resize - 2k Diffuse

 

 

 

 

 

また3種類のSSを用意しました。都合上、PureSkinTextureの8kテクスチャを使用しております。
左から、原物である解像度8192(8k)のディフューズ、原物から解像度4096(4k)にリサイズしたディフューズ、原物から解像度2048(2k)にリサイズしたディフューズです。
先ほどと同じくサムネクリックで別タブにて画像を開くので、タブ切り替えで比較してみてください。
いかがでしょう。まず8kと4kの比較ですが、初見だとどこが違うのかわからないのではないでしょうか。よーく見ると若干、肌の質感が8kと比べて滑らかになっている感じがしますね。皮膚のざらつき感が弱くなったというか。これはつまり、解像度が減った分だけテクスチャが伸びている...というよりも、解像度が減った分だけボディメッシュに対するテクスチャのダウンサンプリングの度合いが云々…...こ、こまけぇこたぁいいんだよ!(AA略
8kと2kだともう少し違いがわかりやすいです。首周辺、胸の辺り、肩の辺りが顕著ですかね。
では、せっかくなのでもう少し寄って比較してみたいと思います。

_original-up
Original - 8k Diffuse
4k-diffuse-up
Resize - 4k Diffuse

 

 

 

 

 

画面右の肩の上部を見ていただけますでしょうか。明らかに違いますね。さっきも言いましたが、肌のざらつきが伸びて滑らかになっています。
あとはこの”違い”を気にするかしないかですが、メモリへの負荷を考えるとこの程度の差なんであれば体のディフューズに関しては4kで十分ではないかなと、個人的には思います。


・ Normal Map

_original
Original - 2k Normal
1k-normal
Resize - 1k Normal

 

 

 

 

 

小夜に使ってるノーマルマップが元から2kなので、そこからのリサイズ比較となりますが、いかがでしょう。
おへそが一目瞭然ですね。あと、体の凹凸にできた影の色が薄くなっている気がします。
サイズダウンしてそのぶんメッシュに貼られるテクスチャが伸びるからでしょうかね。知らんけど。


・ Specular Map

_original
Original - 8k Specular
4k-specular
Resize - 4k Specular

 

 

 

 

 

_original-up
Original - 8k Specular
4k-specular-up
Resize - 4k Specular

 

 

 

 

 

一番、サイズダウンによる差がわかりやすいテクスチャですかね。スペキュラは。
ご覧のとおり、スペキュラの粒が粗くなり、アップで見てみるとボヤけているような感じがします。
なお、サブサーフェイスは比較する意味がない感じなのでここには掲載しておりません。


Step.4 各種テクスチャの最適な解像度 

以上を踏まえて、顔と体の各種テクスチャの外観と容量の両方を鑑みたベストだと思われる解像度を書いていきます。
ばりばりの主観ですし、自環境の範囲で特に負荷による問題が生じていないのなら、8kテクスチャだろうがなんだろうがぶち込んでおけばいいと私は思います。

femalehead

顔の場合
Diffuse Map  - 2048 or 1024
Normal Map - 1024
Specular Map - 2048 or 1024
Subsurface Map - 512

 

 

femalebody_1

・ 体の場合 ※大人の事情により規制ドヴァキンさん出動
Diffuse Map - 4096 or 2048
Normal Map - 2048
Specular Map - 4096 or 2048
Subsurface Map - 1024 or 512

 

 

femalehands_1・ 手の場合 横幅の解像度
Diffuse Map - 1024
Normal Map - 1024 or 514
Specular Map - 1024
Subsurface Map - 512

0004c36d

・ その他
FaceTint - 1024
mouth - 1024
Eye - 1024 or 512
Hair - 1024

 

 


・ 総括

以上をもちましてテクスチャ圧縮のススメは終了でございます。お疲れ様でした。
先ほども言いましたように、ご自分の環境でのみ使うものであれば8kテクスチャ等もどんどん使っていけばいいと思います。
しかし自作フォロワーMODとして配布されるものなのであれば、相手ユーザーの環境を考えてある程度は容量の削減措置を施したほうが親切かなと個人的には思います。なにかしらのこだわりがあって8kテクスチャで配布したい、というような場合を除いて。
ではでは、この記事が皆様のお役に立つことを願っております。

COMMENTS & TRACKBACKS

  • Comments ( 2 )
  • Trackbacks ( 0 )
  1. いつもお世話になっとります。
    久々のskyrimでフォロワーが糞重くなってたのでテクスチャ圧縮しようと思って見てたんですけど
    リサイズするのって1024→514でいいんですよね?
    ぴったし二分の一じゃないもんで気になってしまいましてw
    気にしすぎでしたらすいません

    • 申し訳ございません。512でした()
      完全に記載ミスであります。ご指摘いただかなければ気付きませんでした。
      Tips記事でこのミスは致命的……重ねてお詫び申し上げます。ありがとうございました!

Leave a reply

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

当ブログ内のコンテンツ(スクリーンショット、画像、MODなど)は全て無断転載、複製、加工禁止です。
All contents on this site are not allowed to copy transfer reprint or revise.