PBRテクスチャ バリデーター · 命名・サイズ・不足マップ
テクスチャラボの検査ステージに絞った画面です。ふつうは読み込んでから気づく問題を、ファイルごとに、それを見つけた測定値つきで報告します。
テクスチャマップをドロップ(PNGはチャンネルのバイトをそのまま保持)
ブラウザ内で処理し、ファイルはアップロードされません。
出力
- Channel PNGs測定確認· numpy
- Normal map測定確認· numpy
- Packed mask / ORM測定確認· Pillow
- Engine import未検証
できること
- ワークフロー別の必須・推奨マップ、「パックマップの構成要素がすでにある」。
- サイズ不一致、2のべき乗でない(任意で正方形でない)、未分類・不統一な名前。
- 測定した事実:想定外のアルファ、アルファ0下のRGB、RGBで保存されたグレーマップ、RGBが異なる単一チャンネルマップ。
- テクスチャごとの測定値入りのGame Labs形式JSONレポート。
使い方
- マテリアルのマップをドロップ。
- ワークフローを選ぶ。
- 問題の一覧を読む。
- JSONレポートをダウンロード。
出力ファイルと検証方法
「測定確認」は、ダウンロードしたファイルをページ外(Pillow・numpy・独立したパーサー)で開き直して性質を測ったという意味です。ゲームエンジンでの読み込みは試していません。
| 書き出し先 | ファイル | 検証 |
|---|---|---|
| Channel PNGs | <name>-r/g/b/a.png (8-bit grey) | 測定確認 numpyチャンネルごとにバイト一致。完全に透明なテクセル下のRGBも保持。 |
| Normal map | PNG · OpenGL (+Y) or DirectX (−Y) | 測定確認 numpyデコードしたベクトルは単位長(最大誤差0.0002)。OpenGLとDirectXは緑だけが異なります。 |
| Packed mask / ORM | Unity HDRP mask · URP metallic · ORM (glTF, Godot) | 測定確認 Pillowパック後のバイトを確認:ORMプリセット、AO 10 / ラフネス 80 / メタリック 220 → (10, 80, 220, 255)。 |
| Engine import | Unity · Unreal · Godot | 未検証どのエンジンでも読み込んでいません。 |
検証の根拠
チャンネル分解は4チャンネルすべてでバイト一致(最大差0)、透明テクセル2048個のRGBを保持。エッジブリードはアルファ0のテクセル448個だけを変更し、アルファは一切変更なし。OpenGL ↔ DirectXは緑(255 − g)だけが異なり、変換後の法線は単位ベクトル。
制限
- チャンネルのバイトを正確に扱えるのはPNGだけです。JPEG・WebPはブラウザがデコードし「バイト一致ではない」と表示します。
- インターレースPNGと16ビット出力は非対応。正確な経路は3,355万ピクセルまで。
- ノーマルマップの規約はピクセルから判定できず、変換のみ可能です。
- Unity・Unreal・Godotへの読み込みは行っていません。チャンネル順は各ドキュメントとエンジンのソースに基づきます。
よくある質問
対応ワークフローは?
メタリック/ラフネス、スペキュラー/グロス、ラボのプリセットにあるパック配置(Unity HDRPマスク・URPメタリック・ORM)です。
ファイル名を変更してくれますか?
いいえ。不統一な名前を報告するだけで、変更はご自身で行ってください。
無料ですか?アカウントは必要ですか?
このページの機能はすべて無料で、アカウントなしで使えます。透かしや制限された書き出しはありません。
スプライトはアップロードされますか?
いいえ。Studioはこのブラウザのタブ内でデコード・パック・書き出しを行います。プロジェクトはブラウザ(IndexedDB)に自動保存され、.nerulioファイルとして保存できます。
Asepriteやエンジンのプラグインは必要ですか?
いいえ。.asepriteファイルはブラウザで読み書きします。エンジン別のバンドルには必要なものが入っています(Godotはインポート設定とシーン、UnityとGodotのタイルセットは小さなエディタースクリプト)。