본문으로 건너뛰기

심리스 텍스처 검사 · 반복 이음새 찾고 고치기

"평균 차이 23"만으로는 아무 의미가 없습니다. 검사기는 반복 경계의 차이를 같은 타일 안 평범한 이웃 줄 사이의 차이와 비교해, 이음새가 텍스처 자체보다 얼마나 나쁜지로 판정합니다.

텍스처가 이음새 없이 반복되려면 오른쪽 끝 열이 왼쪽 첫 열로, 맨 아래 행이 맨 위 행으로 이어져야 합니다. 검사기는 바로 그 경계 쌍을 재고, 축마다 타일 안 평범한 이웃 줄 사이의 같은 차이와 나란히 보고합니다. "평균 23"은 텍스처 자체의 변화와 비교할 때만 의미가 있기 때문입니다. 2 × 2·3 × 3 반복, 가장자리 히트맵, 축별 판정을 보여 주고, 반 타일 이동 후 교차 혼합으로 이음새를 없앨 수도 있는데 이때 혼합 띠 안의 그림이 바뀝니다.

타일셋 또는 반복 텍스처(PNG)를 끌어다 놓으세요
브라우저에서 처리하며 파일은 업로드되지 않습니다.
타일 작업실 이음새 점검: 2×2로 반복한 CC0 텍스처와 경계 측정
CC0 에셋(ambientCG)을 연 실제 타일 작업실 화면입니다.
출력
  • Tiles측정 확인· Pillow
  • Padded atlas측정 확인· Pillow
  • Seam report측정 확인· Pillow

이음새를 재는 방법

검사기는 행마다 마지막 픽셀과 첫 픽셀(가로 경계), 열마다 맨 아래 픽셀과 맨 위 픽셀(세로 경계)을 비교합니다. 두 픽셀의 차이는 알파를 포함한 네 채널 차이 중 가장 큰 값(0~255)입니다. 축마다 평균과 최대값, 히트맵용 줄별 값이 나옵니다.

기준은 타일 안에서 이웃한 모든 열(또는 행) 쌍 사이의 평균 차이입니다. 경계 평균이 max(2, 1.25 × 이웃 평균) 이하면 그 축은 통과이고, 두 축이 모두 통과하면 이음새 없음으로 판정합니다. 그래서 경계 차이가 21단계인 거친 돌 텍스처는 통과하고(이웃도 21만큼 다름), 252만큼 튀는 부드러운 그라데이션은 실패합니다(이웃은 4만큼 다름). 히트맵도 같은 이웃 평균으로 눈금을 맞추므로 이음새 없는 타일이 새빨갛게 칠해지지 않고 어둡게 남습니다.

이음새 없애기는 타일을 가로·세로 절반만큼 옮겨 기존 경계가 가운데에서 만나게 한 뒤, 그 가운데 선 양쪽 띠를 반 칸 옮긴 복사본과 부드러운 가중치로 교차 혼합합니다. 띠는 기본 타일의 12%(64px 타일이면 8px)이고 0~64px로 정할 수 있습니다. 새 경계는 구조상 이어지지만, 대신 가운데에 섞인 십자가 생기고 큰 무늬가 겹쳐 보일 수 있습니다. 새로 그려 넣는 것은 없습니다.

경계 쌍
타일이 반복될 때 맞닿는 두 줄: 마지막 열과 첫 열, 맨 아래 행과 맨 위 행.
이웃 평균
타일 안 이웃한 줄 사이의 평균 차이. 텍스처 자체의 변화.
비율
경계 평균 ÷ 이웃 평균. 1 근처면 보이지 않고 63이면 뚜렷한 이음새.
혼합 띠
옮겨진 이음새 양쪽에서 이음새 없애기가 교차 혼합하는 띠.

예시: 실패하는 그라데이션과 통과하는 노이즈 타일

두 타일 모두 64 × 64입니다. 검사기가 보고하는 숫자입니다.

램프 타일      회색 0 → 252, 왼쪽에서 오른쪽으로(열마다 +4), 모든 행 동일
가로           63번 열(252)과 0번 열(0): 평균 252, 최대 252
이웃 평균      4.00 → 비율 252 / 4 = 63; 한계 max(2, 4 × 1.25) = 5 → 이음새
세로           행이 모두 같음: 경계 0, 이웃 0 → 통과
이음새 없애기  이동 32, 32; 띠 round(64 × 0.12) = 8px → 경계 평균 4, 이웃 5.78, 비율 0.69 → 이음새 없음
노이즈 타일    값 96~160: 경계 평균 20.8 / 18.8, 이웃 평균 21.5 → 비율 0.97 / 0.87 → 이음새 없음

노이즈 타일은 고친 램프보다 경계 차이가 크지만 내부도 그만큼 변하므로 통과합니다. 날것의 숫자 하나에 임계값을 걸면 두 경우를 모두 틀리게 판정합니다.

이렇게 작동합니다

  • 이미지 전체(또는 시트의 어떤 타일)의 2×2·3×3 반복 미리보기.
  • 좌↔우, 위↔아래의 평균·최대 차이와 타일 내부의 같은 측정값.
  • 그 내부 차이를 기준으로 한 가장자리 히트맵, 두 번째 타일과의 가장자리 맞춤(선택).
  • 이음새 없애기: 반 칸 이동 후 경계를 가로질러 섞으며 전후를 보여 줍니다.

사용 방법

  1. 텍스처나 타일을 끌어다 놓습니다.
  2. 축별 판정과 수치를 읽습니다.
  3. 히트맵과 반복 미리보기를 봅니다.
  4. 필요하면 이음새를 없애고 받습니다.

결과 확인

  • 3 × 3 반복의 가운데를 100%와 200%로 봅니다. 경계를 따라 선, 밝기 단차, 질감 밀도 변화가 없어야 합니다.
  • 두 축을 모두 읽습니다. 비율이 1 근처나 그 이하이고, 히트맵에 한 변 전체를 따라 밝은 띠가 없어야 합니다.
  • 이음새 없애기 뒤에는 혼합 띠 안에서 무늬가 겹치지 않는지 전후를 비교하고 판정을 다시 확인합니다.
  • 받은 PNG를 엔진의 넓은 반복 표면에 입히고 카메라를 이음새 위로 움직여 봅니다.

문제 해결

증상유력한 원인확인 방법해결
검사기는 이음새 없음인데 게임에서 선이 보임엔진이 반복 대신 가장자리 고정(clamp)으로 샘플링하거나, 밉맵·압축이 가장자리 텍셀을 바꿈같은 확대에서 3 × 3 미리보기와 게임 비교, 밉맵을 끄고 시험엔진 샘플러 설정에서 텍스처를 반복(wrap)으로, 압축된 텍스처도 확인
가장자리가 투명한 스프라이트에 이음새가 잡힘차이에 알파가 포함되고, 투명한 가장자리와 불투명한 가장자리는 실제로 크게 다름이 타일이 반복될 용도인지 확인스프라이트라면 결과를 무시. 이 검사는 반복 텍스처와 타일용
이음새 없애기 뒤 가운데에 흐리거나 겹친 십자가 남음교차 혼합이 띠 안에서 텍스처의 서로 다른 부분을 섞음가운데 선 주변의 전후 비교고급 설정에서 띠를 좁히거나, 이미지 편집기에서 가운데를 다시 그리기
통과했는데 표면이 누가 봐도 반복돼 보임눈에 띄는 무늬가 타일 주기로 되풀이됨. 이음새가 아니라 반복 문제3 × 3 미리보기를 멀리서 보기더 큰 텍스처, 여러 변형 타일, 데칼로 무늬를 깨기

다른 방법

방법이럴 때 더 낫습니다
이미지 편집기에서 절반 이동 후 십자 부분을 직접 다시 그리기혼합이 아니라 실제로 그려야 하는 이음새(균열, 판자 경계)일 때.
텍스처를 만든 도구에서 타일링 옵션으로 내보내기절차적 도구나 재질 도구로 만든 텍스처일 때. 도구 자체의 타일링으로 나중에 고칠 필요가 없습니다. 노멀맵은 반복 노멀맵의 이음새 참고.

출력 파일과 검증 방법

"측정 확인"은 내려받은 파일을 페이지 밖에서(Pillow·numpy·별도 파서) 다시 열어 그 속성을 측정했다는 뜻입니다. 게임 엔진에서 불러오는 것은 시험하지 않았습니다.

대상파일검증
Tilestiles/tile-NNN.png · metadata.json측정 확인 Pillow잘라 낸 모든 타일이 원본 영역과 픽셀 단위로 같습니다(여백·간격·빈 타일·중복 포함).
Padded atlaspadded-atlas.png측정 확인 Pillow가장자리 픽셀을 바깥으로 복제하며, 기록된 atlas-padding 품질 점검이 Chromium·Firefox에서 통과합니다.
Seam reportPNG (healed) · measurements on screen측정 확인 Pillow이어지는 타일은 이음새 없음, 그라데이션은 이음새 있음으로 보고하며, 고친 타일의 경계 차이는 평균 8단계 미만입니다.

검증 근거

합성 시트 10개 중 10개에서 실제 격자를 1순위로 감지(여백 1·간격 2 포함). 잘라 낸 타일 13/13이 원본 영역과 바이트 동일. 1600타일 자르기가 2.2초에 끝나고 취소할 수 있음. 이음새 판정은 타일 내부 기준으로 측정.

한계

  • 판정은 경계의 픽셀 차이를 잽니다. 눈에 띄는 반복이나 타일 안에서 바뀌는 조명은 찾지 못합니다.
  • 고친 PNG만 저장되며 측정값은 화면에만 표시됩니다.
  • 규칙적인 격자만 지원하며, 4메가픽셀을 넘으면 타일 크기를 측정하지 않고 직접 입력합니다.
  • 비슷한 타일 찾기는 픽셀 차이 기준이며 지각적 유사도가 아닙니다.
  • "이음새 없애기"는 혼합 띠 안의 그림을 바꾸며 새로 그려 넣지 않습니다. 전후를 보여 줍니다.
  • 2 × 2보다 작은 타일은 이음새를 잴 수 없습니다.

버전과 출처

docs/TILE-LAB.md와 tests/game-seams.test.mjs에서 측정했습니다. 이어지는 코사인 타일은 비율 1.3 미만으로 이음새 없음, 램프는 평균 240 초과·비율 20 초과로 이음새 있음이었고, 이음새 없애기 뒤 평균은 8 미만으로 떨어졌습니다. 위 예시는 같은 모듈로 다시 계산했습니다(64px 램프와 시드 고정 노이즈 타일).

자주 묻는 질문

"이음새 없애기"가 그림을 바꾸나요?

네, 섞는 띠 안에서 바꿉니다. 반 타일 이동 후 교차해 섞으며 새로 그려 넣지는 않고 전후를 보여 줍니다.

노이즈 텍스처는 가장자리 차이가 커도 이음새 없음으로 나오는 이유는?

내부도 그만큼 달라서입니다. 판정은 이음새를 텍스처 자체의 변화와 비교합니다.

무료인가요? 계정이 필요한가요?

이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.

스프라이트가 업로드되나요?

아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.

Aseprite나 엔진 플러그인을 설치해야 하나요?

아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).