タイル用ノーマルマップの継ぎ目を消す · ラップ生成
繰り返しテクスチャの境目に沿って明るい線や暗い線が出るのは、たいていノーマルマップを作るときに画像の縁を「端」として扱ったためです。カーネルが反対側のピクセルを読まずに縁で止まり(クランプ)、表面がそのまま続くはずの所に傾きができています。

- Godot 4 2D lights検証済み· Godot 4.7.2
- Unity 6 URP 2D検証済み· Unity 6000.5.3f1 (URP 17.5)
- PNG set + JSON通常ファイル
できること
- 透明ピクセルのない画像には「タイル テクスチャ」を提案し、端の扱いはラップに。すべてのカーネルが境目を越えて反対側を読みます。
- チェックパネルのラップ検査は、テクスチャを半分ずらしてマップを作り直し比較。0なら継ぎ目なし。
- アルベド自体の継ぎ目の比率(1 ≈ 見える継ぎ目なし)で、画像がそもそもタイルにならない場合を知らせます。色の継ぎ目はノーマルマップでは隠せません。
- タイル 3×3(T)でライティングしたテクスチャを並べ、ライトを境目の上で動かして線がないか確認。
- 高さマップも同じ。8ビットのレンガの高さマップからラップで作った結果は、ambientCG自身のノーマルマップとの差が8.8°(高さマップとして読むと7.7°)、ロール誤差は0。
使い方
- テクスチャ作業画面にタイル用のテクスチャ(または高さマップ)を入れる。
- 「タイル テクスチャ」のままにするか、法線マップパネルで端の扱いをラップにする。
- チェックパネルでラップ検査が0か確認。アルベドの継ぎ目の比率が高ければ先に画像を直す。
- Tで3×3表示にしてLitに切り替え、ライトを境目の上へドラッグ。
- Godot 4、Unity 6、またはPNGセットで書き出す。
端の扱いと境目で起きること
| 端の扱い | 向いている素材 | テクスチャを繰り返すと |
|---|---|---|
| クランプ | 透明な輪郭のあるスプライト | 縁のピクセルを繰り返すため、つなぎ目で傾きが途切れ明るい線になる |
| ラップ | タイル用テクスチャ(透明ピクセルがなければ提案) | 反対側からサンプリング、ラップ検査0、線なし |
| ミラー | 繰り返さないが縁取りを避けたい画像 | 境目で隣のタイルではなく反射を読み、かすかな線が残ることがある |
| ラップでもアルベドに継ぎ目 | 対象外:先にアルベドを直す | ノーマルマップは滑らかでも色につなぎ目が見える |
同じCC0のレンガでのロール誤差(0 = ラップ正確):Nerulio 0 · Laigter 1.14 既定 63.8、Tileプリセット 0 · PBR Forge 0.57、Tile 0.24 · NormalMap-Online この素材で0。
エンジン別の書き出しと検証方法
「検証済み」は、実際のCC0アセットから書き出したファイルを本物のエンジン・ツールで読み込み、元データと比較したという意味です。読み込んでいない形式はそのように表示します。
| 書き出し先 | ファイル | 検証 |
|---|---|---|
| Godot 4 2D lights | _lit.tscn · CanvasTexture .tres · normal / specular PNG | 検証済み Godot 4.7.2実在のCC0ケース6件をGodot(gl_compatibility)で描画し、確認した全フレームがStudioのライティングプレビューと1/255以内で一致。緑を反転した同じ描画は3.8〜37段階ずれるため、規約の誤りを検出できます。 |
| Unity 6 URP 2D | PNG · nerulio-texture.json · Editor/NerulioNormalMapImporter.cs | 検証済み Unity 6000.5.3f1 (URP 17.5)12回中12回合格(6ケース×ガンマ・リニア色空間):URPが適用したライティングが書き出したノーマルマップと一致(平均誤差0.0037〜0.0085)。光の減衰はURP独自なので、明るさはプレビューではなくUnityの基準です。 |
| PNG set + JSON | albedo · _n (OpenGL) · _n_dx (DirectX) · 16-bit height · AO · specular · manifest | 通常ファイルどのエンジン・ツールでも使える通常ファイルで、エンジンでの実行検証はうたっていません。 |
検証の根拠
Godot 4.7.2で実在のCC0ケース6件(ドット絵、HDスプライト、繰り返しテクスチャ、読み込んだDirectXマップ)を描画し、確認した全フレームがStudioのプレビューと1/255以内。Unity 6000.5 URP 2D:12回中12回合格(6ケース×ガンマ・リニア)。規約が分かっている実在のマップでOpenGL/DirectX判定:1Kのマップ128枚で100%正解、1,562サンプル中で誤った「高」判定は0件(「緑が明るければOpenGL」という単純な規則は46%)。
制限
- 透明な縁がない絵(繰り返しテクスチャ)では、赤の反転とDirectXの緑を区別できません。チェックパネルがそれを伝え、「赤を反転」を用意しています。
- シートはスプライト作業画面でフレームを切るまで1枚の絵としてライティングされます。テクスチャ作業画面ではフレームを切りません。
- リムライトはプレビュー専用で、Unityにはスペキュラーマップを書き出しません(Godotには書き出し)。
- Unityは独自の光の減衰を使います。書き出したノーマルマップはUnityで検証済みですが、明るさの曲線はUnityのものです。
よくある質問
ノーマルマップを作ってから継ぎ目が出たのはなぜ?
色はつながっていても、生成ツールが縁をスプライトの端とみなし、最後のピクセルに傾きや縁取りを入れたためです。たとえばLaigterの既定では四辺に3pxの傾いた帯が残り、Tileプリセットで消えます。
すでに継ぎ目のあるノーマルマップを直せる?
いいえ。アルベドか高さマップからラップでもう一度作ってください。Studioは既存のノーマルマップの縁を部分修正しません。
ミラーはどんな時に使う?
繰り返さないが縁に傾きを付けたくない画像向けです。繰り返すテクスチャに使うと、隣のタイルではなく反射したピクセルを読むため、かすかな線が残ることがあります。
ラップ検査は0なのに線が見える
その線は色の側にあります。アルベドの継ぎ目の比率を見るか、シームレスタイルチェッカーで画像を確かめ、アルベドを直してから作り直してください。
無料ですか?アカウントは必要ですか?
このページの機能はすべて無料で、アカウントなしで使えます。透かしや制限された書き出しはありません。
スプライトはアップロードされますか?
いいえ。Studioはこのブラウザのタブ内でデコード・パック・書き出しを行います。プロジェクトはブラウザ(IndexedDB)に自動保存され、.nerulioファイルとして保存できます。
Asepriteやエンジンのプラグインは必要ですか?
いいえ。.asepriteファイルはブラウザで読み書きします。エンジン別のバンドルには必要なものが入っています(Godotはインポート設定とシーン、UnityとGodotのタイルセットは小さなエディタースクリプト)。